test: added test case
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index 42eb018..45bddfc 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -642,13 +642,6 @@
gle_filters={"account": "Stock In Hand - TCP1"},
)
- # assert loss booked in COGS
- self.assertGLEs(
- return_pi,
- [{"credit": 0, "debit": 200}],
- gle_filters={"account": "Cost of Goods Sold - TCP1"},
- )
-
def test_return_with_lcv(self):
from erpnext.controllers.sales_and_purchase_return import make_return_doc
from erpnext.stock.doctype.landed_cost_voucher.test_landed_cost_voucher import (
@@ -1671,6 +1664,21 @@
self.assertTrue(return_pi.docstatus == 1)
+ def test_gl_entries_for_standalone_debit_note(self):
+ make_purchase_invoice(qty=5, rate=500, update_stock=True)
+
+ returned_inv = make_purchase_invoice(qty=-5, rate=5, update_stock=True, is_return=True)
+
+ # override the rate with valuation rate
+ sle = frappe.get_all(
+ "Stock Ledger Entry",
+ fields=["stock_value_difference", "actual_qty"],
+ filters={"voucher_no": returned_inv.name},
+ )[0]
+
+ rate = flt(sle.stock_value_difference) / flt(sle.actual_qty)
+ self.assertAlmostEqual(returned_inv.items[0].rate, rate)
+
def check_gl_entries(doc, voucher_no, expected_gle, posting_date):
gl_entries = frappe.db.sql(
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index cf26bae..a3a1461 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -105,6 +105,8 @@
def set_rate_for_standalone_debit_note(self):
if self.get("is_return") and self.get("update_stock") and not self.return_against:
for row in self.items:
+
+ # override the rate with valuation rate
row.rate = get_incoming_rate(
{
"item_code": row.item_code,