[fix] Currency and exchange rate while Quotation made from Opportunity for lead
diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py
index 0f9bdbd..903f405 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.py
+++ b/erpnext/crm/doctype/opportunity/opportunity.py
@@ -192,17 +192,18 @@
def set_missing_values(source, target):
quotation = frappe.get_doc(target)
- if quotation.customer:
- company_currency = frappe.db.get_value("Company", quotation.company, "default_currency")
- party_account_currency = get_party_account_currency("Customer", quotation.customer, quotation.company)
+ company_currency = frappe.db.get_value("Company", quotation.company, "default_currency")
+ party_account_currency = get_party_account_currency("Customer", quotation.customer,
+ quotation.company) if quotation.customer else company_currency
+
+ quotation.currency = party_account_currency or company_currency
- if company_currency == party_account_currency:
- exchange_rate = 1
- else:
- exchange_rate = get_exchange_rate(party_account_currency, company_currency)
+ if company_currency == quotation.currency:
+ exchange_rate = 1
+ else:
+ exchange_rate = get_exchange_rate(quotation.currency, company_currency)
- quotation.currency = party_account_currency or company_currency
- quotation.conversion_rate = exchange_rate
+ quotation.conversion_rate = exchange_rate
quotation.run_method("set_missing_values")
quotation.run_method("calculate_taxes_and_totals")
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 1379048..c39048d 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -432,7 +432,8 @@
var company_currency = this.get_company_currency();
// Added `ignore_pricing_rule` to determine if document is loading after mapping from another doc
- if(this.frm.doc.currency !== company_currency && !this.frm.doc.ignore_pricing_rule) {
+ if(this.frm.doc.currency && this.frm.doc.currency !== company_currency
+ && !this.frm.doc.ignore_pricing_rule) {
this.get_exchange_rate(this.frm.doc.currency, company_currency,
function(exchange_rate) {
me.frm.set_value("conversion_rate", exchange_rate);