fix: sales order item shwoing incorrect produced qty (#19584)

This commit is contained in:
rohitwaghchaure 2019-11-15 14:18:45 +05:30 committed by Nabin Hait
parent 16f6ca12a7
commit 6424416886
3 changed files with 22 additions and 12 deletions

View File

@ -216,7 +216,9 @@ class WorkOrder(Document):
self.db_set(fieldname, qty) self.db_set(fieldname, qty)
from erpnext.selling.doctype.sales_order.sales_order import update_produced_qty_in_so_item from erpnext.selling.doctype.sales_order.sales_order import update_produced_qty_in_so_item
update_produced_qty_in_so_item(self.sales_order_item)
if self.sales_order and self.sales_order_item:
update_produced_qty_in_so_item(self.sales_order, self.sales_order_item)
if self.production_plan: if self.production_plan:
self.update_production_plan_status() self.update_production_plan_status()

View File

@ -5,6 +5,10 @@ from erpnext.selling.doctype.sales_order.sales_order import update_produced_qty_
def execute(): def execute():
frappe.reload_doctype('Sales Order Item') frappe.reload_doctype('Sales Order Item')
frappe.reload_doctype('Sales Order') frappe.reload_doctype('Sales Order')
sales_order_items = frappe.db.get_all('Sales Order Item', ['name'])
for so_item in sales_order_items: for d in frappe.get_all('Work Order',
update_produced_qty_in_so_item(so_item.get('name')) fields = ['sales_order', 'sales_order_item'],
filters={'sales_order': ('!=', ''), 'sales_order_item': ('!=', '')}):
# update produced qty in sales order
update_produced_qty_in_so_item(d.sales_order, d.sales_order_item)

View File

@ -1038,14 +1038,18 @@ def create_pick_list(source_name, target_doc=None):
return doc return doc
def update_produced_qty_in_so_item(sales_order_item): def update_produced_qty_in_so_item(sales_order, sales_order_item):
#for multiple work orders against same sales order item #for multiple work orders against same sales order item
linked_wo_with_so_item = frappe.db.get_all('Work Order', ['produced_qty'], { linked_wo_with_so_item = frappe.db.get_all('Work Order', ['produced_qty'], {
'sales_order_item': sales_order_item, 'sales_order_item': sales_order_item,
'sales_order': sales_order,
'docstatus': 1 'docstatus': 1
}) })
if len(linked_wo_with_so_item) > 0:
total_produced_qty = 0 total_produced_qty = 0
for wo in linked_wo_with_so_item: for wo in linked_wo_with_so_item:
total_produced_qty += flt(wo.get('produced_qty')) total_produced_qty += flt(wo.get('produced_qty'))
if not total_produced_qty and frappe.flags.in_patch: return
frappe.db.set_value('Sales Order Item', sales_order_item, 'produced_qty', total_produced_qty) frappe.db.set_value('Sales Order Item', sales_order_item, 'produced_qty', total_produced_qty)