From a3a7733440fa737a5f319d99bebcc0f4dabebc00 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Wed, 20 May 2026 17:17:43 +0530 Subject: [PATCH] test: fixed test cases --- .../stock_entry_handler/material_transfer.py | 23 +++++++++++++++---- .../stock_entry_handler/subcontracting.py | 4 ++-- .../stock_entry_type/stock_entry_type.py | 9 ++++---- .../subcontracting_inward_order.py | 4 +++- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_handler/material_transfer.py b/erpnext/stock/doctype/stock_entry/stock_entry_handler/material_transfer.py index cb658f7a121..1d7b26653c3 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry_handler/material_transfer.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry_handler/material_transfer.py @@ -89,6 +89,20 @@ class MaterialTransferStockEntry(BaseMaterialTransferStockEntry): self.validate_warehouse() self.validate_same_source_target_warehouse() + def on_submit(self): + self.update_subcontract_order_supplied_items() + + def on_cancel(self): + self.update_subcontract_order_supplied_items() + + def update_subcontract_order_supplied_items(self): + if not self.doc.get(self.doc.subcontract_data.order_field): + return + + from .subcontracting import SendToSubcontractorStockEntry + + SendToSubcontractorStockEntry(self.doc).update_subcontract_order_supplied_items() + class MaterialTransferForManufactureStockEntry(BaseMaterialTransferStockEntry): def before_validate(self): @@ -141,9 +155,10 @@ class MaterialTransferForManufactureStockEntry(BaseMaterialTransferStockEntry): def add_items(self): item_dict = self.get_pending_raw_materials() - if self.doc.to_warehouse and self.wo_doc: - for item in item_dict.values(): - item["s_warehouse"] = item.get("from_warehouse") + + for item in item_dict.values(): + item["s_warehouse"] = item.get("from_warehouse") + if self.wo_doc and not item.get("t_warehouse"): item["t_warehouse"] = self.wo_doc.wip_warehouse for item_code in item_dict: @@ -362,7 +377,7 @@ class MaterialRequestStockEntry(BaseMaterialTransferStockEntry): if mreq_item.item_code != row.item_code: frappe.throw( - _("Item for row {0} does not match Material Request").format(self.idx), + _("Item for row {0} does not match Material Request").format(row.idx), frappe.MappingMismatchError, ) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry_handler/subcontracting.py b/erpnext/stock/doctype/stock_entry/stock_entry_handler/subcontracting.py index 9c3546d34d7..520d16c02f7 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry_handler/subcontracting.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry_handler/subcontracting.py @@ -75,7 +75,7 @@ class SendToSubcontractorStockEntry: self.doc.get(self.doc.subcontract_data.order_field), ) ) - elif not self.doc.get(self.doc.subcontract_data.rm_detail_field): + elif not child_row.get(self.doc.subcontract_data.rm_detail_field): order_rm_detail = self.get_order_rm_detail(child_row) if order_rm_detail: child_row.db_set(self.doc.subcontract_data.rm_detail_field, order_rm_detail) @@ -97,7 +97,7 @@ class SendToSubcontractorStockEntry: child_row.idx, bold(child_row.item_code) ) ) - elif not self.doc.get(self.doc.subcontract_data.rm_detail_field): + elif not child_row.get(self.doc.subcontract_data.rm_detail_field): order_rm_detail = self.get_order_rm_detail(child_row) if order_rm_detail: child_row.db_set(self.doc.subcontract_data.rm_detail_field, order_rm_detail) diff --git a/erpnext/stock/doctype/stock_entry_type/stock_entry_type.py b/erpnext/stock/doctype/stock_entry_type/stock_entry_type.py index 4e4acd38da7..c7e4fc0f500 100644 --- a/erpnext/stock/doctype/stock_entry_type/stock_entry_type.py +++ b/erpnext/stock/doctype/stock_entry_type/stock_entry_type.py @@ -123,8 +123,8 @@ class ManufactureEntry: available_serial_batches = self.get_transferred_serial_batches() for item_code, _dict in item_dict.items(): - _dict.from_warehouse = self.source_wh.get(item_code) or self.wip_warehouse - _dict.to_warehouse = "" + _dict.s_warehouse = self.source_wh.get(item_code) or self.wip_warehouse + _dict.t_warehouse = "" _dict.item_code = item_code if backflush_based_on != "BOM" and not frappe.db.get_value( @@ -310,8 +310,8 @@ class ManufactureEntry: item = get_item_defaults(self.production_item, self.company) args = { - "to_warehouse": self.fg_warehouse, - "from_warehouse": "", + "t_warehouse": self.fg_warehouse, + "s_warehouse": "", "qty": self.for_quantity - self.process_loss_qty, "item_name": item.item_name, "description": item.description, @@ -319,6 +319,7 @@ class ManufactureEntry: "expense_account": item.get("expense_account"), "cost_center": item.get("buying_cost_center"), "is_finished_item": 1, + "item_code": self.production_item, } self.stock_entry.append("items", args) diff --git a/erpnext/subcontracting/doctype/subcontracting_inward_order/subcontracting_inward_order.py b/erpnext/subcontracting/doctype/subcontracting_inward_order/subcontracting_inward_order.py index db44245e2ce..d1cd27f4a11 100644 --- a/erpnext/subcontracting/doctype/subcontracting_inward_order/subcontracting_inward_order.py +++ b/erpnext/subcontracting/doctype/subcontracting_inward_order/subcontracting_inward_order.py @@ -421,7 +421,9 @@ class SubcontractingInwardOrder(SubcontractingController): } } - stock_entry.append("items", items_dict[rm_item.get("rm_item_code")]) + ste_item = items_dict[rm_item.get("rm_item_code")] + if ste_item.get("qty"): + stock_entry.append("items", ste_item) if target_doc: return stock_entry