def update_work_order_qty(self): """Update **Manufactured Qty** and **Material Transferred for Qty** in Work Order based on Stock Entry""" allowance_percentage = flt( frappe.db.get_single_value( "Manufacturing Settings", "overproduction_percentage_for_work_order")) for purpose, fieldname in (("Manufacture", "produced_qty"), ("Material Transfer for Manufacture", "material_transferred_for_manufacturing")): if (purpose == 'Material Transfer for Manufacture' and self.operations and self.transfer_material_against == 'Job Card'): continue qty = flt( frappe.db.sql( """select sum(fg_completed_qty) from `tabStock Entry` where work_order=%s and docstatus=1 and purpose=%s""", (self.name, purpose))[0][0]) completed_qty = self.qty + (allowance_percentage / 100 * self.qty) if qty > completed_qty: frappe.throw(_("{0} ({1}) cannot be greater than planned quantity ({2}) in Work Order {3}").format(\ self.meta.get_label(fieldname), qty, completed_qty, self.name), StockOverProductionError) self.db_set(fieldname, qty) 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.production_plan: self.update_production_plan_status()
def execute(): frappe.reload_doctype('Sales Order Item') frappe.reload_doctype('Sales Order') for d in frappe.get_all('Work Order', 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)
def execute(): frappe.reload_doctype("Sales Order Item") frappe.reload_doctype("Sales Order") for d in frappe.get_all( "Work Order", 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)
def execute(): frappe.reload_doctype('Sales Order Item') frappe.reload_doctype('Sales Order') sales_order_items = frappe.db.get_all('Sales Order Item', ['name']) for so_item in sales_order_items: update_produced_qty_in_so_item(so_item.get('name'))