def _make_customer(source_name, ignore_permissions=False): quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type"]) if quotation and quotation[0]: lead_name = quotation[0] customer_name = frappe.db.get_value("Customer", {"lead_name": lead_name}, ["name", "customer_name"], as_dict=True) if not customer_name: from erpnext.selling.doctype.lead.lead import _make_customer customer_doclist = _make_customer(lead_name, ignore_permissions=ignore_permissions) customer = frappe.get_doc(customer_doclist) customer.ignore_permissions = ignore_permissions if quotation[1] == "Shopping Cart": customer.customer_group = frappe.db.get_value("Shopping Cart Settings", None, "default_customer_group") try: customer.insert() return customer except frappe.NameError: if frappe.defaults.get_global_default('cust_master_name') == "Customer Name": customer.run_method("autoname") customer.name += "-" + lead_name customer.insert() return customer else: raise except frappe.MandatoryError: from frappe.utils import get_url_to_form frappe.throw(_("Please create Customer from Lead {0}").format(lead_name)) else: return customer_name
def _make_customer(source_name, ignore_permissions=False): quotation = frappe.db.get_value("Quotation", source_name, ["lead", "order_type"]) if quotation and quotation[0]: lead_name = quotation[0] customer_name = frappe.db.get_value("Customer", {"lead_name": lead_name}) if not customer_name: from erpnext.selling.doctype.lead.lead import _make_customer customer_doclist = _make_customer( lead_name, ignore_permissions=ignore_permissions) customer = frappe.bean(customer_doclist) customer.ignore_permissions = ignore_permissions if quotation[1] == "Shopping Cart": customer.doc.customer_group = frappe.db.get_value( "Shopping Cart Settings", None, "default_customer_group") try: customer.insert() return customer except NameError: if frappe.defaults.get_global_default( 'cust_master_name') == "Customer Name": customer.run_method("autoname") customer.doc.name += "-" + lead_name customer.insert() return customer else: raise except frappe.MandatoryError: from frappe.utils import get_url_to_form frappe.throw(_("Before proceeding, please create Customer from Lead") + \ (" - %s" % get_url_to_form("Lead", lead_name)))
def _make_sales_order(source_name, target_doclist=None, ignore_permissions=False): from frappe.model.mapper import get_mapped_doclist customer = _make_customer(source_name, ignore_permissions) def set_missing_values(source, target): if customer: target[0].customer = customer.doc.name target[0].customer_name = customer.doc.customer_name si = frappe.bean(target) si.ignore_permissions = ignore_permissions si.run_method("onload_post_render") doclist = get_mapped_doclist("Quotation", source_name, { "Quotation": { "doctype": "Sales Order", "validation": { "docstatus": ["=", 1] } }, "Quotation Item": { "doctype": "Sales Order Item", "field_map": { "parent": "prevdoc_docname" } }, "Sales Taxes and Charges": { "doctype": "Sales Taxes and Charges", "add_if_empty": True }, "Sales Team": { "doctype": "Sales Team", "add_if_empty": True } }, target_doclist, set_missing_values, ignore_permissions=ignore_permissions) # postprocess: fetch shipping address, set missing values return [d.fields for d in doclist]
def _make_sales_order(source_name, target_doc=None, ignore_permissions=False): customer = _make_customer(source_name, ignore_permissions) def set_missing_values(source, target): if customer: target.customer = customer.name target.customer_name = customer.customer_name target.ignore_pricing_rule = 1 target.ignore_permissions = ignore_permissions target.run_method("set_missing_values") target.run_method("calculate_taxes_and_totals") doclist = get_mapped_doc("Quotation", source_name, { "Quotation": { "doctype": "Sales Order", "validation": { "docstatus": ["=", 1] } }, "Quotation Item": { "doctype": "Sales Order Item", "field_map": { "parent": "prevdoc_docname" } }, "Sales Taxes and Charges": { "doctype": "Sales Taxes and Charges", "add_if_empty": True }, "Sales Team": { "doctype": "Sales Team", "add_if_empty": True } }, target_doc, set_missing_values, ignore_permissions=ignore_permissions) # postprocess: fetch shipping address, set missing values return doclist
def _make_sales_order(source_name, target_doc=None, ignore_permissions=False): customer = _make_customer(source_name, ignore_permissions) def set_missing_values(source, target): if customer: target.customer = customer.name target.customer_name = customer.customer_name target.ignore_permissions = ignore_permissions target.run_method("set_missing_values") target.run_method("calculate_taxes_and_totals") doclist = get_mapped_doc("Quotation", source_name, { "Quotation": { "doctype": "Sales Order", "validation": { "docstatus": ["=", 1] } }, "Quotation Item": { "doctype": "Sales Order Item", "field_map": { "parent": "prevdoc_docname" } }, "Sales Taxes and Charges": { "doctype": "Sales Taxes and Charges", "add_if_empty": True }, "Sales Team": { "doctype": "Sales Team", "add_if_empty": True } }, target_doc, set_missing_values, ignore_permissions=ignore_permissions) # postprocess: fetch shipping address, set missing values return doclist