fix: reposting has not changed valuation rate
This commit is contained in:
@@ -1797,6 +1797,121 @@ class TestPurchaseReceipt(FrappeTestCase):
|
|||||||
|
|
||||||
self.assertEqual(abs(data["stock_value_difference"]), 400.00)
|
self.assertEqual(abs(data["stock_value_difference"]), 400.00)
|
||||||
|
|
||||||
|
def test_purchase_receipt_with_backdated_landed_cost_voucher(self):
|
||||||
|
from erpnext.controllers.sales_and_purchase_return import make_return_doc
|
||||||
|
from erpnext.stock.doctype.landed_cost_voucher.test_landed_cost_voucher import (
|
||||||
|
create_landed_cost_voucher,
|
||||||
|
)
|
||||||
|
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
|
||||||
|
|
||||||
|
item_code = "_Test Purchase Item With Landed Cost"
|
||||||
|
create_item(item_code)
|
||||||
|
|
||||||
|
warehouse = create_warehouse("_Test Purchase Warehouse With Landed Cost")
|
||||||
|
warehouse1 = create_warehouse("_Test Purchase Warehouse With Landed Cost 1")
|
||||||
|
warehouse2 = create_warehouse("_Test Purchase Warehouse With Landed Cost 2")
|
||||||
|
warehouse3 = create_warehouse("_Test Purchase Warehouse With Landed Cost 3")
|
||||||
|
|
||||||
|
pr = make_purchase_receipt(
|
||||||
|
item_code=item_code,
|
||||||
|
warehouse=warehouse,
|
||||||
|
posting_date=add_days(today(), -10),
|
||||||
|
posting_time="10:59:59",
|
||||||
|
qty=100,
|
||||||
|
rate=275.00,
|
||||||
|
)
|
||||||
|
|
||||||
|
pr_return = make_return_doc("Purchase Receipt", pr.name)
|
||||||
|
pr_return.posting_date = add_days(today(), -9)
|
||||||
|
pr_return.items[0].qty = 2 * -1
|
||||||
|
pr_return.items[0].received_qty = 2 * -1
|
||||||
|
pr_return.submit()
|
||||||
|
|
||||||
|
ste1 = make_stock_entry(
|
||||||
|
purpose="Material Transfer",
|
||||||
|
posting_date=add_days(today(), -8),
|
||||||
|
source=warehouse,
|
||||||
|
target=warehouse1,
|
||||||
|
item_code=item_code,
|
||||||
|
qty=20,
|
||||||
|
company=pr.company,
|
||||||
|
)
|
||||||
|
|
||||||
|
ste1.reload()
|
||||||
|
self.assertEqual(ste1.items[0].valuation_rate, 275.00)
|
||||||
|
|
||||||
|
ste2 = make_stock_entry(
|
||||||
|
purpose="Material Transfer",
|
||||||
|
posting_date=add_days(today(), -7),
|
||||||
|
source=warehouse,
|
||||||
|
target=warehouse2,
|
||||||
|
item_code=item_code,
|
||||||
|
qty=20,
|
||||||
|
company=pr.company,
|
||||||
|
)
|
||||||
|
|
||||||
|
ste2.reload()
|
||||||
|
self.assertEqual(ste2.items[0].valuation_rate, 275.00)
|
||||||
|
|
||||||
|
ste3 = make_stock_entry(
|
||||||
|
purpose="Material Transfer",
|
||||||
|
posting_date=add_days(today(), -6),
|
||||||
|
source=warehouse,
|
||||||
|
target=warehouse3,
|
||||||
|
item_code=item_code,
|
||||||
|
qty=20,
|
||||||
|
company=pr.company,
|
||||||
|
)
|
||||||
|
|
||||||
|
ste3.reload()
|
||||||
|
self.assertEqual(ste3.items[0].valuation_rate, 275.00)
|
||||||
|
|
||||||
|
ste4 = make_stock_entry(
|
||||||
|
purpose="Material Transfer",
|
||||||
|
posting_date=add_days(today(), -5),
|
||||||
|
source=warehouse1,
|
||||||
|
target=warehouse,
|
||||||
|
item_code=item_code,
|
||||||
|
qty=20,
|
||||||
|
company=pr.company,
|
||||||
|
)
|
||||||
|
|
||||||
|
ste4.reload()
|
||||||
|
self.assertEqual(ste4.items[0].valuation_rate, 275.00)
|
||||||
|
|
||||||
|
ste5 = make_stock_entry(
|
||||||
|
purpose="Material Transfer",
|
||||||
|
posting_date=add_days(today(), -4),
|
||||||
|
source=warehouse,
|
||||||
|
target=warehouse1,
|
||||||
|
item_code=item_code,
|
||||||
|
qty=20,
|
||||||
|
company=pr.company,
|
||||||
|
)
|
||||||
|
|
||||||
|
ste5.reload()
|
||||||
|
self.assertEqual(ste5.items[0].valuation_rate, 275.00)
|
||||||
|
|
||||||
|
create_landed_cost_voucher("Purchase Receipt", pr.name, pr.company, charges=2500 * -1)
|
||||||
|
|
||||||
|
pr.reload()
|
||||||
|
valuation_rate = pr.items[0].valuation_rate
|
||||||
|
|
||||||
|
ste1.reload()
|
||||||
|
self.assertEqual(ste1.items[0].valuation_rate, valuation_rate)
|
||||||
|
|
||||||
|
ste2.reload()
|
||||||
|
self.assertEqual(ste2.items[0].valuation_rate, valuation_rate)
|
||||||
|
|
||||||
|
ste3.reload()
|
||||||
|
self.assertEqual(ste3.items[0].valuation_rate, valuation_rate)
|
||||||
|
|
||||||
|
ste4.reload()
|
||||||
|
self.assertEqual(ste4.items[0].valuation_rate, valuation_rate)
|
||||||
|
|
||||||
|
ste5.reload()
|
||||||
|
self.assertEqual(ste5.items[0].valuation_rate, valuation_rate)
|
||||||
|
|
||||||
|
|
||||||
def prepare_data_for_internal_transfer():
|
def prepare_data_for_internal_transfer():
|
||||||
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_internal_supplier
|
||||||
|
|||||||
@@ -513,6 +513,7 @@ class update_entries_after(object):
|
|||||||
def update_distinct_item_warehouses(self, dependant_sle):
|
def update_distinct_item_warehouses(self, dependant_sle):
|
||||||
key = (dependant_sle.item_code, dependant_sle.warehouse)
|
key = (dependant_sle.item_code, dependant_sle.warehouse)
|
||||||
val = frappe._dict({"sle": dependant_sle})
|
val = frappe._dict({"sle": dependant_sle})
|
||||||
|
|
||||||
if key not in self.distinct_item_warehouses:
|
if key not in self.distinct_item_warehouses:
|
||||||
self.distinct_item_warehouses[key] = val
|
self.distinct_item_warehouses[key] = val
|
||||||
self.new_items_found = True
|
self.new_items_found = True
|
||||||
@@ -524,6 +525,9 @@ class update_entries_after(object):
|
|||||||
val.sle_changed = True
|
val.sle_changed = True
|
||||||
self.distinct_item_warehouses[key] = val
|
self.distinct_item_warehouses[key] = val
|
||||||
self.new_items_found = True
|
self.new_items_found = True
|
||||||
|
elif self.distinct_item_warehouses[key].get("reposting_status"):
|
||||||
|
self.distinct_item_warehouses[key] = val
|
||||||
|
self.new_items_found = True
|
||||||
|
|
||||||
def process_sle(self, sle):
|
def process_sle(self, sle):
|
||||||
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
||||||
@@ -1255,6 +1259,8 @@ def get_sle_by_voucher_detail_no(voucher_detail_no, excluded_sle=None):
|
|||||||
[
|
[
|
||||||
"item_code",
|
"item_code",
|
||||||
"warehouse",
|
"warehouse",
|
||||||
|
"actual_qty",
|
||||||
|
"qty_after_transaction",
|
||||||
"posting_date",
|
"posting_date",
|
||||||
"posting_time",
|
"posting_time",
|
||||||
"timestamp(posting_date, posting_time) as timestamp",
|
"timestamp(posting_date, posting_time) as timestamp",
|
||||||
|
|||||||
Reference in New Issue
Block a user