Wrong Exchange Rate Is Fetched When Exchange Rate Is Different From Company Currency For Price Lists #12712 (#12714)
* unconditionally fetch exchange rate
* Revert "unconditionally fetch exchange rate"
This reverts commit d0d404d342092b5ba4398ed3bd8d8ff8f60b5f8a.
* allow for `plc_conversion_rate` field to be reset
* fetch exchange rate using price list currency and company currency not form currency
* clean up
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index c5c9973..a56ebd2 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -704,7 +704,7 @@
}
if(!this.in_apply_price_list) {
- this.apply_price_list();
+ this.apply_price_list(null, true);
}
},
@@ -1056,7 +1056,13 @@
if(!price_list_rate_changed) me.calculate_taxes_and_totals();
},
- apply_price_list: function(item) {
+ apply_price_list: function(item, reset_plc_conversion) {
+ // We need to reset plc_conversion_rate sometimes because the call to
+ // `erpnext.stock.get_item_details.apply_price_list` is sensitive to its value
+ if (!reset_plc_conversion) {
+ this.frm.set_value("plc_conversion_rate", "");
+ }
+
var me = this;
var args = this._get_args(item);
if (!((args.items && args.items.length) || args.price_list)) {
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index a7638b4..9c26a18 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -10,6 +10,7 @@
from erpnext.setup.utils import get_exchange_rate
from frappe.model.meta import get_field_precision
from erpnext.stock.doctype.batch.batch import get_batch_no
+from erpnext import get_company_currency
@frappe.whitelist()
@@ -590,11 +591,12 @@
price_list_currency = get_price_list_currency(args.price_list)
price_list_uom_dependant = get_price_list_uom_dependant(args.price_list)
plc_conversion_rate = args.plc_conversion_rate
+ company_currency = get_company_currency(args.company)
if (not plc_conversion_rate) or (price_list_currency and args.price_list_currency \
and price_list_currency != args.price_list_currency):
# cksgb 19/09/2016: added args.transaction_date as posting_date argument for get_exchange_rate
- plc_conversion_rate = get_exchange_rate(price_list_currency, args.currency,
+ plc_conversion_rate = get_exchange_rate(price_list_currency, company_currency,
args.transaction_date) or plc_conversion_rate
return frappe._dict({