Beispiel #1
0
def raise_production_orders(material_request):
	mr= frappe.get_doc("Material Request", material_request)
	errors =[]
	production_orders = []
	for d in mr.items:
		if (d.qty - d.ordered_qty) >0 :
			if frappe.db.get_value("Item", d.item_code, "is_pro_applicable"):
				prod_order = frappe.new_doc("Production Order")
				prod_order.production_item = d.item_code
				prod_order.qty = d.qty - d.ordered_qty
				prod_order.fg_warehouse = d.warehouse
				prod_order.description = d.description
				prod_order.stock_uom = d.uom
				prod_order.expected_delivery_date = d.schedule_date
				prod_order.sales_order = d.sales_order
				prod_order.bom_no = get_item_details(d.item_code).bom_no
				prod_order.material_request = mr.name
				prod_order.material_request_item = d.name
				prod_order.planned_start_date = mr.transaction_date
				prod_order.company = mr.company
				prod_order.save()
				production_orders.append(prod_order.name)
			else:
				errors.append(d.item_code + " in Row " + cstr(d.idx))
	if production_orders:
		message = ["""<a href="#Form/Production Order/%s" target="_blank">%s</a>""" % \
			(p, p) for p in production_orders]
		msgprint(_("The following Production Orders were created:" + '\n' + new_line_sep(message)))
	if errors:
		msgprint(_("Productions Orders cannot be raised for:" + '\n' + new_line_sep(errors)))
	return production_orders
def raise_production_orders(material_request):
	mr= frappe.get_doc("Material Request", material_request)
	errors =[]
	production_orders = []
	default_wip_warehouse = frappe.db.get_single_value("Manufacturing Settings", "default_wip_warehouse")
	for d in mr.items:
		if (d.qty - d.ordered_qty) >0:
			if frappe.db.get_value("BOM", {"item": d.item_code, "is_default": 1}):
				prod_order = frappe.new_doc("Production Order")
				prod_order.production_item = d.item_code
				prod_order.qty = d.qty - d.ordered_qty
				prod_order.fg_warehouse = d.warehouse
				prod_order.wip_warehouse = default_wip_warehouse
				prod_order.description = d.description
				prod_order.stock_uom = d.uom
				prod_order.expected_delivery_date = d.schedule_date
				prod_order.sales_order = d.sales_order
				prod_order.bom_no = get_item_details(d.item_code).bom_no
				prod_order.material_request = mr.name
				prod_order.material_request_item = d.name
				prod_order.planned_start_date = mr.transaction_date
				prod_order.company = mr.company
				prod_order.requested_for = mr.requested_by
				prod_order.save()
				production_orders.append(prod_order.name)
			else:
				errors.append(d.item_code + " in Row " + cstr(d.idx))
	if production_orders:
		message = ["""<a href="#Form/Production Order/%s" target="_blank">%s</a>""" % \
			(p, p) for p in production_orders]
		msgprint(_("The following Production Orders were created:" + '\n' + new_line_sep(message)))
	if errors:
		msgprint(_("Productions Orders cannot be raised for:" + '\n' + new_line_sep(errors)))
	return production_orders
Beispiel #3
0
def raise_work_orders(material_request):
	mr= frappe.get_doc("Material Request", material_request)
	errors =[]
	work_orders = []
	default_wip_warehouse = frappe.db.get_single_value("Manufacturing Settings", "default_wip_warehouse")
	for d in mr.items:
		if (d.qty - d.ordered_qty) >0:
			if frappe.db.get_value("BOM", {"item": d.item_code, "is_default": 1}):
				wo_order = frappe.new_doc("Work Order")
				wo_order.production_item = d.item_code
				wo_order.qty = d.qty - d.ordered_qty
				wo_order.fg_warehouse = d.warehouse
				wo_order.wip_warehouse = default_wip_warehouse
				wo_order.description = d.description
				wo_order.stock_uom = d.stock_uom
				wo_order.expected_delivery_date = d.schedule_date
				wo_order.sales_order = d.sales_order
				wo_order.bom_no = get_item_details(d.item_code).bom_no
				wo_order.material_request = mr.name
				wo_order.material_request_item = d.name
				wo_order.planned_start_date = mr.transaction_date
				wo_order.company = mr.company
				wo_order.save()
				work_orders.append(wo_order.name)
			else:
				errors.append(_("Row {0}: Bill of Materials not found for the Item {1}").format(d.idx, d.item_code))
	if work_orders:
		message = ["""<a href="#Form/Work Order/%s" target="_blank">%s</a>""" % \
			(p, p) for p in work_orders]
		msgprint(_("The following Work Orders were created:") + '\n' + new_line_sep(message))
	if errors:
		frappe.throw(_("Productions Orders cannot be raised for:") + '\n' + new_line_sep(errors))
	return work_orders
Beispiel #4
0
def raise_production_orders(material_request):
	mr= frappe.get_doc("Material Request", material_request)
	errors =[]
	production_orders = []
	default_wip_warehouse = frappe.db.get_single_value("Manufacturing Settings", "default_wip_warehouse")
	for d in mr.items:
		if (d.qty - d.ordered_qty) >0:
			if frappe.db.get_value("BOM", {"item": d.item_code, "is_default": 1}):
				prod_order = frappe.new_doc("Production Order")
				prod_order.production_item = d.item_code
				prod_order.qty = d.qty - d.ordered_qty
				prod_order.fg_warehouse = d.warehouse
				prod_order.wip_warehouse = default_wip_warehouse
				prod_order.description = d.description
				prod_order.stock_uom = d.stock_uom
				prod_order.expected_delivery_date = d.schedule_date
				prod_order.sales_order = d.sales_order
				prod_order.bom_no = get_item_details(d.item_code).bom_no
				prod_order.material_request = mr.name
				prod_order.material_request_item = d.name
				prod_order.planned_start_date = mr.transaction_date
				prod_order.company = mr.company
				prod_order.save()
				production_orders.append(prod_order.name)
			else:
				errors.append(_("Row {0}: Bill of Materials not found for the Item {1}").format(d.idx, d.item_code))
	if production_orders:
		message = ["""<a href="#Form/Production Order/%s" target="_blank">%s</a>""" % \
			(p, p) for p in production_orders]
		msgprint(_("The following Production Orders were created:") + '\n' + new_line_sep(message))
	if errors:
		frappe.throw(_("Productions Orders cannot be raised for:") + '\n' + new_line_sep(errors))
	return production_orders
def raise_production_orders(material_request):
    mr = frappe.get_doc("Material Request", material_request)
    errors = []
    production_orders = []
    from erpnext.manufacturing.doctype.production_order.production_order import OverProductionError, get_default_warehouse
    warehouse = get_default_warehouse()  # 2016-11-07 - JDLP
    for d in mr.items:
        if (d.qty - d.ordered_qty) > 0:
            if frappe.db.get_value("BOM", {
                    "item": d.item_code,
                    "is_default": 1
            }):
                prod_order = frappe.new_doc("Production Order")
                prod_order.production_item = d.item_code
                prod_order.qty = d.qty - d.ordered_qty
                prod_order.sales_order = d.sales_order
                prod_order.sales_order_item = d.sales_order_item
                prod_order.fg_warehouse = d.warehouse
                prod_order.source_warehouse = frappe.db.get_single_value(
                    "Manufacturing Settings", "default_raw_material_warehouse")
                prod_order.description = d.description
                prod_order.stock_uom = d.uom
                prod_order.expected_delivery_date = d.schedule_date
                prod_order.bom_no = get_item_details(d.item_code).bom_no
                prod_order.material_request = mr.name
                prod_order.material_request_item = d.name
                prod_order.planned_start_date = mr.transaction_date
                prod_order.company = mr.company
                prod_order.batch_no = d.batch_no  # 2016-11-07 - JDLP
                prod_order.wip_warehouse = warehouse.get(
                    'wip_warehouse')  # 2016-11-07 - JDLP
                prod_order.status = "Draft"
                prod_order.project = frappe.db.get_value(
                    "Sales Order", d.sales_order, "project")
                prod_order.reference_client = frappe.db.get_value(
                    "Sales Order", d.sales_order, "po_no")
                prod_order.customer = frappe.db.get_value(
                    "Sales Order", d.sales_order, "customer")
                #prod_order.save()

                prod_order = set_production_order_materials_and_operations(
                    prod_order.bom_no, prod_order)
                prod_order.save()
                production_orders.append(prod_order.name)
            else:
                errors.append(d.item_code + " in Row " + cstr(d.idx))
    if production_orders:
        message = ["""<a href="#Form/Production Order/%s" target="_blank">%s</a>""" % \
         (p, p) for p in production_orders]
        msgprint(
            _("The following Production Orders were created:" + '\n' +
              new_line_sep(message)))
    if errors:
        msgprint(
            _("Productions Orders cannot be raised for:" + '\n' +
              new_line_sep(errors)))
    return production_orders
Beispiel #6
0
def raise_work_orders(material_request):
    mr = frappe.get_doc("Material Request", material_request)
    errors = []
    work_orders = []
    default_wip_warehouse = frappe.db.get_single_value(
        "Manufacturing Settings", "default_wip_warehouse")

    for d in mr.items:
        if (d.stock_qty - d.ordered_qty) > 0:
            if frappe.db.exists("BOM", {"item": d.item_code, "is_default": 1}):
                wo_order = frappe.new_doc("Work Order")
                wo_order.update({
                    "production_item": d.item_code,
                    "qty": d.stock_qty - d.ordered_qty,
                    "production_plan": d.production_plan,
                    "production_plan_item": d.production_plan_item,
                    "fg_warehouse": d.warehouse,
                    "wip_warehouse": default_wip_warehouse,
                    "description": d.description,
                    "stock_uom": d.stock_uom,
                    "expected_delivery_date": d.schedule_date,
                    "sales_order": d.sales_order,
                    "bom_no": get_item_details(d.item_code).bom_no,
                    "material_request": mr.name,
                    "material_request_item": d.name,
                    "material_request_plan_item": d.material_request_plan_item,
                    "planned_start_date": mr.transaction_date,
                    "company": mr.company
                })

                wo_order.set_work_order_operations()
                wo_order.save()

                work_orders.append(wo_order.name)
            else:
                errors.append(
                    _("Row {0}: Bill of Materials not found for the Item {1}").
                    format(d.idx, d.item_code))

    if work_orders:
        message = ["""<a href="#Form/Work Order/%s" target="_blank">%s</a>""" % \
         (p, p) for p in work_orders]
        msgprint(
            _("The following Work Orders were created:") + '\n' +
            new_line_sep(message))

    if errors:
        frappe.throw(
            _("Work Order cannot be created for following reason:") + '\n' +
            new_line_sep(errors))

    return work_orders
Beispiel #7
0
def raise_work_orders(material_request):
    mr = frappe.get_doc("Material Request", material_request)
    errors = []
    work_orders = []
    default_wip_warehouse = frappe.db.get_single_value(
        "Manufacturing Settings", "default_wip_warehouse")

    for d in mr.items:
        if (d.stock_qty - d.ordered_qty) > 0:
            if frappe.db.exists("BOM", {"item": d.item_code, "is_default": 1}):
                wo_order = frappe.new_doc("Work Order")
                wo_order.update({
                    "production_item": d.item_code,
                    "qty": d.stock_qty - d.ordered_qty,
                    "fg_warehouse": d.warehouse,
                    "wip_warehouse": default_wip_warehouse,
                    "description": d.description,
                    "stock_uom": d.stock_uom,
                    "expected_delivery_date": d.schedule_date,
                    "sales_order": d.sales_order,
                    "sales_order_item": d.get("sales_order_item"),
                    "bom_no": get_item_details(d.item_code).bom_no,
                    "material_request": mr.name,
                    "material_request_item": d.name,
                    "planned_start_date": mr.transaction_date,
                    "company": mr.company,
                })

                wo_order.set_work_order_operations()
                wo_order.save()

                work_orders.append(wo_order.name)
            else:
                errors.append(
                    _("Row {0}: Bill of Materials not found for the Item {1}").
                    format(d.idx, get_link_to_form("Item", d.item_code)))

    if work_orders:
        work_orders_list = [
            get_link_to_form("Work Order", d) for d in work_orders
        ]

        if len(work_orders) > 1:
            msgprint(
                _("The following {0} were created: {1}").format(
                    frappe.bold(_("Work Orders")),
                    "<br>" + ", ".join(work_orders_list)))
        else:
            msgprint(
                _("The {0} {1} created sucessfully").format(
                    frappe.bold(_("Work Order")), work_orders_list[0]))

    if errors:
        frappe.throw(
            _("Work Order cannot be created for following reason: <br> {0}").
            format(new_line_sep(errors)))

    return work_orders
Beispiel #8
0
def raise_work_orders(material_request):
	mr= frappe.get_doc("Material Request", material_request)
	errors =[]
	work_orders = []
	default_wip_warehouse = frappe.db.get_single_value("Manufacturing Settings", "default_wip_warehouse")

	for d in mr.items:
		if (d.qty - d.ordered_qty) >0:
			if frappe.db.exists("BOM", {"item": d.item_code, "is_default": 1}):
				wo_order = frappe.new_doc("Work Order")
				wo_order.update({
					"production_item": d.item_code,
					"qty": d.qty - d.ordered_qty,
					"fg_warehouse": d.warehouse,
					"wip_warehouse": default_wip_warehouse,
					"description": d.description,
					"stock_uom": d.stock_uom,
					"expected_delivery_date": d.schedule_date,
					"sales_order": d.sales_order,
					"bom_no": get_item_details(d.item_code).bom_no,
					"material_request": mr.name,
					"material_request_item": d.name,
					"planned_start_date": mr.transaction_date,
					"company": mr.company
				})

				wo_order.set_work_order_operations()
				wo_order.save()

				work_orders.append(wo_order.name)
			else:
				errors.append(_("Row {0}: Bill of Materials not found for the Item {1}").format(d.idx, d.item_code))

	if work_orders:
		message = ["""<a href="#Form/Work Order/%s" target="_blank">%s</a>""" % \
			(p, p) for p in work_orders]
		msgprint(_("The following Work Orders were created:") + '\n' + new_line_sep(message))

	if errors:
		frappe.throw(_("Productions Orders cannot be raised for:") + '\n' + new_line_sep(errors))

	return work_orders