Ejemplo n.º 1
0
    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'))