fix: incorrect incoming rate set for inter transfer purchase receipt
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 036733c..6903754 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -307,7 +307,8 @@
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 fd1aece..3524a47 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -646,6 +646,24 @@
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"