mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-19 17:30:01 +00:00
Merge pull request #56670 from aerele/fix/pick-list-wo-status-not-started
fix: recompute transferred qty before deciding work order status
This commit is contained in:
@@ -149,6 +149,16 @@ class RequiredItemsService:
|
||||
|
||||
self.recompute_material_transferred_for_manufacturing(transferred_items)
|
||||
|
||||
def refresh_material_transferred_for_manufacturing(self):
|
||||
"""Recompute material_transferred_for_manufacturing only, without touching per-row
|
||||
transferred_qty or stock reservations. Used to get a status decision (Not Started vs
|
||||
In Process) based on fresh data, ahead of the fuller update_required_items() pass.
|
||||
"""
|
||||
if self.doc.skip_transfer:
|
||||
return
|
||||
transferred_items = self._material_transfer_qty_by_item(is_return=0)
|
||||
self.recompute_material_transferred_for_manufacturing(transferred_items)
|
||||
|
||||
def recompute_material_transferred_for_manufacturing(self, transferred_items):
|
||||
"""Set material_transferred_for_manufacturing based on actual item-level transfers, not fg_completed_qty."""
|
||||
# When fg_completed_qty > 0 (direct stock entries, excess transfer), preserve the
|
||||
|
||||
@@ -87,6 +87,12 @@ class StatusService:
|
||||
|
||||
def update_status(self, status=None):
|
||||
"""Update status of work order if unknown"""
|
||||
if self.doc.docstatus == 1:
|
||||
# Refresh material_transferred_for_manufacturing before deciding status so pick-list-
|
||||
# driven transfers (where this qty is derived from item transfers, not fg_completed_qty)
|
||||
# are reflected immediately, instead of only after the next status update call.
|
||||
self.doc.refresh_material_transferred_for_manufacturing()
|
||||
|
||||
if self.doc.status != "Closed":
|
||||
if status not in ["Stopped", "Closed"]:
|
||||
status = self.get_status(status)
|
||||
|
||||
@@ -1003,6 +1003,9 @@ class WorkOrder(Document):
|
||||
def update_transferred_qty_for_required_items(self):
|
||||
return RequiredItemsService(self).update_transferred_qty_for_required_items()
|
||||
|
||||
def refresh_material_transferred_for_manufacturing(self):
|
||||
return RequiredItemsService(self).refresh_material_transferred_for_manufacturing()
|
||||
|
||||
def update_returned_qty(self):
|
||||
return RequiredItemsService(self).update_returned_qty()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user