use open_mapped_doc instead of create_new_doc

This commit is contained in:
0Pranav 2019-12-18 12:07:24 +05:30
parent 797481f9d5
commit 5150c69ee6
2 changed files with 65 additions and 6 deletions

View File

@ -5,13 +5,13 @@ frappe.ui.form.on("Customer", {
setup: function(frm) {
frm.make_methods = {
'Quotation': () => erpnext.utils.create_new_doc('Quotation', {
'quotation_to': frm.doc.doctype,
'party_name': frm.doc.name
'Quotation': () => frappe.model.open_mapped_doc({
method: "erpnext.selling.doctype.customer.customer.make_quotation",
frm: cur_frm
}),
'Opportunity': () => erpnext.utils.create_new_doc('Opportunity', {
'opportunity_from': frm.doc.doctype,
'party_name': frm.doc.name
'Opportunity': () => frappe.model.open_mapped_doc({
method: "erpnext.selling.doctype.customer.customer.make_opportunity",
frm: cur_frm
})
}

View File

@ -12,6 +12,7 @@ from erpnext.utilities.transaction_base import TransactionBase
from erpnext.accounts.party import validate_party_accounts, get_dashboard_info, get_timeline_data # keep this
from frappe.contacts.address_and_contact import load_address_and_contact, delete_contact_and_address
from frappe.model.rename_doc import update_linked_doctypes
from frappe.model.mapper import get_mapped_doc
class Customer(TransactionBase):
def get_feed(self):
@ -238,6 +239,64 @@ def create_contact(contact, party_type, party, email):
contact.append('links', dict(link_doctype=party_type, link_name=party))
contact.insert()
@frappe.whitelist()
def make_quotation(source_name, target_doc=None):
def set_missing_values(source, target):
_set_missing_values(source,target)
target_doc = get_mapped_doc("Customer", source_name,
{"Customer": {
"doctype": "Quotation",
"field_map": {
"name":"party_name"
}
}}, target_doc, set_missing_values)
target_doc.quotation_to = "Customer"
target_doc.run_method("set_missing_values")
target_doc.run_method("set_other_charges")
target_doc.run_method("calculate_taxes_and_totals")
target_doc.selling_price_list = frappe.get_doc("Customer",source_name).default_price_list
return target_doc
@frappe.whitelist()
def make_opportunity(source_name, target_doc=None):
def set_missing_values(source, target):
_set_missing_values(source,target)
target_doc = get_mapped_doc("Customer", source_name,
{"Customer": {
"doctype": "Opportunity",
"field_map": {
"name": "party_name",
"doctype": "opportunity_from",
}
}}, target_doc, set_missing_values
)
return target_doc
def _set_missing_values(source, target):
address = frappe.get_all('Dynamic Link', {
'link_doctype': source.doctype,
'link_name': source.name,
'parenttype': 'Address',
}, ['parent'], limit=1)
contact = frappe.get_all('Dynamic Link', {
'link_doctype': source.doctype,
'link_name': source.name,
'parenttype': 'Contact',
}, ['parent'], limit=1)
if address:
target.customer_address = address[0].parent
if contact:
target.contact_person = contact[0].parent
@frappe.whitelist()
def get_loyalty_programs(doc):
''' returns applicable loyalty programs for a customer '''