fixed merge conflict
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 0c8d999..2101a25 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -299,8 +299,12 @@
else:
args.update(get_party_details(party, party_type))
- if party_type=="Customer":
+ if party_type in ("Customer", "Lead"):
args.update({"tax_type": "Sales"})
+
+ if party_type=='Lead':
+ args['customer'] = None
+ del args['lead']
else:
args.update({"tax_type": "Purchase"})
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index b8b2c31..d12486d 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -51,7 +51,10 @@
elif getattr(self, "lead", None):
from erpnext.crm.doctype.lead.lead import get_lead_details
- self.update_if_missing(get_lead_details(self.lead))
+ self.update_if_missing(get_lead_details(
+ self.lead,
+ posting_date=self.get('transaction_date') or self.get('posting_date'),
+ company=self.company))
def set_price_list_and_item_details(self):
self.set_price_list_currency("Selling")
diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py
index ea06f53..a743e56 100644
--- a/erpnext/crm/doctype/lead/lead.py
+++ b/erpnext/crm/doctype/lead/lead.py
@@ -10,6 +10,7 @@
from erpnext.controllers.selling_controller import SellingController
from erpnext.utilities.address_and_contact import load_address_and_contact
+from erpnext.accounts.party import set_taxes
sender_field = "email_id"
@@ -58,7 +59,7 @@
def check_email_id_is_unique(self):
if self.email_id:
# validate email is unique
- duplicate_leads = frappe.db.sql_list("""select name from tabLead
+ duplicate_leads = frappe.db.sql_list("""select name from tabLead
where email_id=%s and name!=%s""", (self.email_id, self.name))
if duplicate_leads:
@@ -138,7 +139,7 @@
return target_doc
@frappe.whitelist()
-def get_lead_details(lead):
+def get_lead_details(lead, posting_date=None, company=None):
if not lead: return {}
from erpnext.accounts.party import set_address_details
@@ -158,4 +159,9 @@
set_address_details(out, lead, "Lead")
+ taxes_and_charges = set_taxes(None, 'Lead', posting_date, company,
+ billing_address=out.get('customer_address'), shipping_address=out.get('shipping_address_name'))
+ if taxes_and_charges:
+ out['taxes_and_charges'] = taxes_and_charges
+
return out
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index a31d841..d630779 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -69,37 +69,57 @@
if(r.message) {
frm.set_value(display_field, r.message)
}
-
- if(frappe.meta.get_docfield(frm.doc.doctype, "taxes") && !is_your_company_address) {
- if(!erpnext.utils.validate_mandatory(frm, "Customer/Supplier",
- frm.doc.customer || frm.doc.supplier, address_field)) return;
-
- if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
- frm.doc.posting_date || frm.doc.transaction_date, address_field)) return;
- } else return;
-
- frappe.call({
- method: "erpnext.accounts.party.set_taxes",
- args: {
- "party": frm.doc.customer || frm.doc.supplier,
- "party_type": (frm.doc.customer ? "Customer" : "Supplier"),
- "posting_date": frm.doc.posting_date || frm.doc.transaction_date,
- "company": frm.doc.company,
- "billing_address": ((frm.doc.customer) ? (frm.doc.customer_address) : (frm.doc.supplier_address)),
- "shipping_address": frm.doc.shipping_address_name
- },
- callback: function(r) {
- if(r.message){
- frm.set_value("taxes_and_charges", r.message)
- }
- }
- });
+ erpnext.utils.set_taxes(frm, address_field, display_field, is_your_company_address);
}
})
} else {
frm.set_value(display_field, null);
}
+};
+erpnext.utils.set_taxes = function(frm, address_field, display_field, is_your_company_address) {
+ if(frappe.meta.get_docfield(frm.doc.doctype, "taxes") && !is_your_company_address) {
+ if(!erpnext.utils.validate_mandatory(frm, "Lead/Customer/Supplier",
+ frm.doc.customer || frm.doc.supplier || frm.doc.lead, address_field)) {
+ return;
+ }
+
+ if(!erpnext.utils.validate_mandatory(frm, "Posting/Transaction Date",
+ frm.doc.posting_date || frm.doc.transaction_date, address_field)) {
+ return;
+ }
+ } else {
+ return;
+ }
+
+ var party_type, party;
+ if (frm.doc.lead) {
+ party_type = 'Lead';
+ party = frm.doc.lead;
+ } else if (frm.doc.customer) {
+ party_type = 'Customer';
+ party = frm.doc.customer;
+ } else if (frm.doc.supplier) {
+ party_type = 'Supplier';
+ party = frm.doc.supplier;
+ }
+
+ frappe.call({
+ method: "erpnext.accounts.party.set_taxes",
+ args: {
+ "party": party,
+ "party_type": party_type,
+ "posting_date": frm.doc.posting_date || frm.doc.transaction_date,
+ "company": frm.doc.company,
+ "billing_address": ((frm.doc.customer || frm.doc.lead) ? (frm.doc.customer_address) : (frm.doc.supplier_address)),
+ "shipping_address": frm.doc.shipping_address_name
+ },
+ callback: function(r) {
+ if(r.message){
+ frm.set_value("taxes_and_charges", r.message)
+ }
+ }
+ });
}
erpnext.utils.get_contact_details = function(frm) {
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 3e90b97..649faaf 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -25,7 +25,7 @@
cur_frm.add_custom_button(__('Lost'),
cur_frm.cscript['Declare Order Lost'], __("Status"));
}
-
+
cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
}
@@ -47,7 +47,7 @@
}
this.toggle_reqd_lead_customer();
-
+
},
quotation_to: function() {
@@ -96,7 +96,11 @@
var me = this;
frappe.call({
method: "erpnext.crm.doctype.lead.lead.get_lead_details",
- args: { "lead": this.frm.doc.lead },
+ args: {
+ 'lead': this.frm.doc.lead,
+ 'posting_date': this.frm.doc.transaction_date,
+ 'company': this.frm.doc.company,
+ },
callback: function(r) {
if(r.message) {
me.frm.updating_party_details = true;
@@ -166,6 +170,6 @@
frappe.ui.form.on("Quotation Item", "stock_balance", function(frm, cdt, cdn) {
var d = frappe.model.get_doc(cdt, cdn);
- frappe.route_options = {"item_code": d.item_code};
+ frappe.route_options = {"item_code": d.item_code};
frappe.set_route("query-report", "Stock Balance");
-})
\ No newline at end of file
+})