mirror of
https://github.com/frappe/erpnext.git
synced 2025-12-03 18:35:36 +00:00
fix: disallow material transfer if source and target warehouse are same (#48697)
* fix: disallow material transfer if source and target warehouse are same
* fix: check on child row level instead of parent level
(cherry picked from commit 7b8bb4f959)
# Conflicts:
# erpnext/stock/doctype/stock_entry/stock_entry.py
This commit is contained in:
@@ -241,6 +241,16 @@ class StockEntry(StockController):
|
|||||||
self.reset_default_field_value("from_warehouse", "items", "s_warehouse")
|
self.reset_default_field_value("from_warehouse", "items", "s_warehouse")
|
||||||
self.reset_default_field_value("to_warehouse", "items", "t_warehouse")
|
self.reset_default_field_value("to_warehouse", "items", "t_warehouse")
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
self.validate_same_source_target_warehouse_during_material_transfer()
|
||||||
|
|
||||||
|
self.validate_closed_subcontracting_order()
|
||||||
|
self.validate_subcontract_order()
|
||||||
|
|
||||||
|
super().validate_subcontracting_inward()
|
||||||
|
|
||||||
|
>>>>>>> 7b8bb4f959 (fix: disallow material transfer if source and target warehouse are same (#48697))
|
||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
self.validate_closed_subcontracting_order()
|
self.validate_closed_subcontracting_order()
|
||||||
self.make_bundle_using_old_serial_batch_fields()
|
self.make_bundle_using_old_serial_batch_fields()
|
||||||
@@ -796,6 +806,41 @@ class StockEntry(StockController):
|
|||||||
title=_("Missing Item"),
|
title=_("Missing Item"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def validate_same_source_target_warehouse_during_material_transfer(self):
|
||||||
|
from erpnext.stock.doctype.inventory_dimension.inventory_dimension import get_inventory_dimensions
|
||||||
|
|
||||||
|
inventory_dimensions = get_inventory_dimensions()
|
||||||
|
if self.purpose == "Material Transfer":
|
||||||
|
for item in self.items:
|
||||||
|
if item.s_warehouse == item.t_warehouse:
|
||||||
|
if not inventory_dimensions:
|
||||||
|
frappe.throw(
|
||||||
|
_("Source and Target Warehouse cannot be the same for Material Transfer"),
|
||||||
|
title=_("Invalid Source and Target Warehouse"),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
difference_found = False
|
||||||
|
for dimension in inventory_dimensions:
|
||||||
|
fieldname = (
|
||||||
|
dimension.source_fieldname
|
||||||
|
if dimension.source_fieldname.startswith("to_")
|
||||||
|
else f"to_{dimension.source_fieldname}"
|
||||||
|
)
|
||||||
|
if (
|
||||||
|
item.get(dimension.source_fieldname)
|
||||||
|
and item.get(fieldname)
|
||||||
|
and item.get(dimension.source_fieldname) != item.get(fieldname)
|
||||||
|
):
|
||||||
|
difference_found = True
|
||||||
|
break
|
||||||
|
if not difference_found:
|
||||||
|
frappe.throw(
|
||||||
|
_(
|
||||||
|
"Row #{0}: Source, Target Warehouse and Inventory Dimensions cannot be the exact same for Material Transfer"
|
||||||
|
).format(item.idx),
|
||||||
|
title=_("Invalid Source and Target Warehouse"),
|
||||||
|
)
|
||||||
|
|
||||||
def get_matched_items(self, item_code):
|
def get_matched_items(self, item_code):
|
||||||
for row in self.items:
|
for row in self.items:
|
||||||
if row.item_code == item_code or row.original_item == item_code:
|
if row.item_code == item_code or row.original_item == item_code:
|
||||||
|
|||||||
Reference in New Issue
Block a user