예제 #1
0
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
예제 #2
0
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)))
예제 #3
0
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]
예제 #4
0
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
예제 #5
0
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