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("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):
|
||||
self.validate_closed_subcontracting_order()
|
||||
self.make_bundle_using_old_serial_batch_fields()
|
||||
@@ -796,6 +806,41 @@ class StockEntry(StockController):
|
||||
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):
|
||||
for row in self.items:
|
||||
if row.item_code == item_code or row.original_item == item_code:
|
||||
|
||||
Reference in New Issue
Block a user