From 4ff603ffac5439885acefd6f9032077fd14020b0 Mon Sep 17 00:00:00 2001 From: pandiyan Date: Tue, 7 Jul 2026 16:11:55 +0530 Subject: [PATCH] fix: validate planned end date is not before planned start date in work order (cherry picked from commit 2ec780cb353b74de25802b9062dca8c8c6956edd) # Conflicts: # erpnext/manufacturing/doctype/work_order/work_order.py --- .../doctype/work_order/work_order.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index d6764005a80..d30e4762f3a 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -174,6 +174,29 @@ class WorkOrder(Document): self.set_required_items(reset_only_qty=len(self.get("required_items"))) self.validate_operations_sequence() +<<<<<<< HEAD +======= + self.validate_subcontracting_inward_order() + + def validate_dates(self): + if self.planned_start_date and self.planned_end_date: + if get_datetime(self.planned_end_date) < get_datetime(self.planned_start_date): + frappe.throw(_("Planned End Date cannot be before Planned Start Date")) + + if self.actual_start_date and self.actual_end_date: + if self.actual_end_date < self.actual_start_date: + frappe.throw(_("Actual End Date cannot be before Actual Start Date")) + + def before_save(self): + self.set_skip_transfer_for_operations() + + def set_skip_transfer_for_operations(self): + if not self.track_semi_finished_goods: + return + + for op in self.operations: + op.skip_material_transfer = self.skip_transfer +>>>>>>> 2ec780cb35 (fix: validate planned end date is not before planned start date in work order) def validate_operations_sequence(self): if all([not op.sequence_id for op in self.operations]):