From ddd24ea8c8c6f2094c71c607196dd4c91ae6c6a5 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Tue, 9 Aug 2022 14:50:20 +0530 Subject: [PATCH] fix: incorrect incoming rate set for inter transfer purchase receipt --- erpnext/controllers/buying_controller.py | 3 ++- erpnext/stock/stock_ledger.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 036733c0c3..69037547f4 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -307,7 +307,8 @@ class BuyingController(SubcontractingController): rate = flt(outgoing_rate * (d.conversion_factor or 1), d.precision("rate")) else: - rate = frappe.db.get_value(ref_doctype, d.get(frappe.scrub(ref_doctype)), "rate") + field = "incoming_rate" if self.get("is_internal_supplier") else "rate" + rate = frappe.db.get_value(ref_doctype, d.get(frappe.scrub(ref_doctype)), field) if self.is_internal_transfer(): if rate != d.rate: diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index fd1aece7b1..3524a47c71 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -646,6 +646,24 @@ class update_entries_after(object): voucher_detail_no=sle.voucher_detail_no, sle=sle, ) + + elif ( + sle.voucher_type in ["Purchase Receipt", "Purchase Invoice"] + and sle.actual_qty > 0 + and frappe.get_cached_value(sle.voucher_type, sle.voucher_no, "is_internal_supplier") + ): + sle_details = frappe.db.get_value( + "Stock Ledger Entry", + { + "voucher_type": sle.voucher_type, + "voucher_no": sle.voucher_no, + "dependant_sle_voucher_detail_no": sle.voucher_detail_no, + }, + ["stock_value_difference", "actual_qty"], + as_dict=1, + ) + + rate = abs(sle_details.stock_value_difference / sle.actual_qty) else: if sle.voucher_type in ("Purchase Receipt", "Purchase Invoice"): rate_field = "valuation_rate"