fix: Delivery Note return valuation
diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py
index 9546680..173e812 100644
--- a/erpnext/controllers/sales_and_purchase_return.py
+++ b/erpnext/controllers/sales_and_purchase_return.py
@@ -669,7 +669,11 @@
if reference_voucher_detail_no:
filters["voucher_detail_no"] = reference_voucher_detail_no
- if item_row and item_row.get("warehouse"):
+ if (
+ voucher_type in ["Purchase Receipt", "Purchase Invoice"]
+ and item_row
+ and item_row.get("warehouse")
+ ):
filters["warehouse"] = item_row.get("warehouse")
return filters
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 8baae8a..0ef3027 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -318,6 +318,37 @@
self.assertEqual(dn.per_returned, 100)
self.assertEqual(dn.status, "Return Issued")
+ def test_delivery_note_return_valuation_on_different_warehuose(self):
+ from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
+
+ company = frappe.db.get_value("Warehouse", "Stores - TCP1", "company")
+ item_code = "Test Return Valuation For DN"
+ make_item("Test Return Valuation For DN", {"is_stock_item": 1})
+ return_warehouse = create_warehouse("Returned Test Warehouse", company=company)
+
+ make_stock_entry(item_code=item_code, target="Stores - TCP1", qty=5, basic_rate=150)
+
+ dn = create_delivery_note(
+ item_code=item_code,
+ qty=5,
+ rate=500,
+ warehouse="Stores - TCP1",
+ company=company,
+ expense_account="Cost of Goods Sold - TCP1",
+ cost_center="Main - TCP1",
+ )
+
+ dn.submit()
+ self.assertEqual(dn.items[0].incoming_rate, 150)
+
+ from erpnext.controllers.sales_and_purchase_return import make_return_doc
+
+ return_dn = make_return_doc(dn.doctype, dn.name)
+ return_dn.items[0].warehouse = return_warehouse
+ return_dn.save().submit()
+
+ self.assertEqual(return_dn.items[0].incoming_rate, 150)
+
def test_return_single_item_from_bundled_items(self):
company = frappe.db.get_value("Warehouse", "Stores - TCP1", "company")