Skip to content

Commit 024e7b0

Browse files
mihir-kandoimergify[bot]
authored andcommitted
fix: reset incoming rate in selling controller if there are changes in item
(cherry picked from commit 2d6b43f)
1 parent a0156b6 commit 024e7b0

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

erpnext/controllers/selling_controller.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,13 +533,16 @@ def set_incoming_rate(self):
533533
if self.doctype not in ("Delivery Note", "Sales Invoice"):
534534
return
535535

536+
from erpnext.stock.serial_batch_bundle import get_batch_nos
537+
536538
allow_at_arms_length_price = frappe.get_cached_value(
537539
"Stock Settings", None, "allow_internal_transfer_at_arms_length_price"
538540
)
539541
set_zero_rate_for_expired_batch = frappe.db.get_single_value(
540542
"Selling Settings", "set_zero_rate_for_expired_batch"
541543
)
542544

545+
old_doc = self.get_doc_before_save()
543546
items = self.get("items") + (self.get("packed_items") or [])
544547
for d in items:
545548
if not frappe.get_cached_value("Item", d.item_code, "is_stock_item"):
@@ -569,6 +572,29 @@ def set_incoming_rate(self):
569572
# Get incoming rate based on original item cost based on valuation method
570573
qty = flt(d.get("stock_qty") or d.get("actual_qty") or d.get("qty"))
571574

575+
if old_doc:
576+
old_item = next(
577+
(
578+
item
579+
for item in (old_doc.get("items") + (old_doc.get("packed_items") or []))
580+
if item.name == d.name
581+
),
582+
None,
583+
)
584+
if old_item:
585+
old_qty = flt(
586+
old_item.get("stock_qty") or old_item.get("actual_qty") or old_item.get("qty")
587+
)
588+
if (
589+
old_item.item_code != d.item_code
590+
or old_item.warehouse != d.warehouse
591+
or old_qty != qty
592+
or old_item.batch_no != d.batch_no
593+
or get_batch_nos(old_item.serial_and_batch_bundle)
594+
!= get_batch_nos(d.serial_and_batch_bundle)
595+
):
596+
d.incoming_rate = 0
597+
572598
if (
573599
not d.incoming_rate
574600
or self.is_internal_transfer()

0 commit comments

Comments
 (0)