test: LCV impact on future stock balancees
diff --git a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
index 1ba8011..979b5c4 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/test_landed_cost_voucher.py
@@ -4,7 +4,7 @@
import frappe
from frappe.tests.utils import FrappeTestCase
-from frappe.utils import add_to_date, flt, now
+from frappe.utils import add_days, add_to_date, flt, now
from erpnext.accounts.doctype.account.test_account import create_account, get_inventory_account
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
@@ -120,6 +120,61 @@
expected_values[gle.account][1], gle.credit, msg=f"incorrect credit for {gle.account}"
)
+ def test_landed_cost_voucher_stock_impact(self):
+ "Test impact of LCV on future stock balances."
+ from erpnext.stock.doctype.item.test_item import make_item
+
+ item = make_item("LCV Stock Item", {"is_stock_item": 1})
+ warehouse = "Stores - _TC"
+
+ pr1 = make_purchase_receipt(
+ item_code=item.name,
+ warehouse=warehouse,
+ qty=500,
+ rate=80,
+ posting_date=add_days(frappe.utils.nowdate(), -2),
+ )
+ pr2 = make_purchase_receipt(
+ item_code=item.name,
+ warehouse=warehouse,
+ qty=100,
+ rate=80,
+ posting_date=frappe.utils.nowdate(),
+ )
+
+ last_sle = frappe.db.get_value( # SLE of second PR
+ "Stock Ledger Entry",
+ {
+ "voucher_type": pr2.doctype,
+ "voucher_no": pr2.name,
+ "item_code": item.name,
+ "warehouse": warehouse,
+ "is_cancelled": 0,
+ },
+ fieldname=["qty_after_transaction", "stock_value"],
+ as_dict=1,
+ )
+
+ create_landed_cost_voucher("Purchase Receipt", pr1.name, pr1.company)
+
+ last_sle_after_landed_cost = frappe.db.get_value( # SLE of second PR after LCV's effect
+ "Stock Ledger Entry",
+ {
+ "voucher_type": pr2.doctype,
+ "voucher_no": pr2.name,
+ "item_code": item.name,
+ "warehouse": warehouse,
+ "is_cancelled": 0,
+ },
+ fieldname=["qty_after_transaction", "stock_value"],
+ as_dict=1,
+ )
+
+ self.assertEqual(
+ last_sle.qty_after_transaction, last_sle_after_landed_cost.qty_after_transaction
+ )
+ self.assertEqual(last_sle_after_landed_cost.stock_value - last_sle.stock_value, 50.0)
+
def test_landed_cost_voucher_against_purchase_invoice(self):
pi = make_purchase_invoice(
@@ -219,11 +274,11 @@
landed costs, this should be allowed for serial nos too.
Case:
- - receipt a serial no @ X rate
- - delivery the serial no @ X rate
- - add LCV to receipt X + Y
- - LCV should be successful
- - delivery should reflect X+Y valuation.
+ - receipt a serial no @ X rate
+ - delivery the serial no @ X rate
+ - add LCV to receipt X + Y
+ - LCV should be successful
+ - delivery should reflect X+Y valuation.
"""
serial_no = "LCV_TEST_SR_NO"
item_code = "_Test Serialized Item"