Production Plan extension
This commit is contained in:
@@ -104,6 +104,12 @@ app_include_js = "manufacturing_overview.bundle.js"
|
|||||||
# }
|
# }
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
# doc_events = {
|
||||||
|
# "Subcontracting Receipt": {
|
||||||
|
# "on_submit": "manufacturing_overview.manufacturing_overview.productionplan.update_productionplan_status",
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
# Scheduled Tasks
|
# Scheduled Tasks
|
||||||
# ---------------
|
# ---------------
|
||||||
|
|
||||||
|
|||||||
@@ -6,102 +6,104 @@ from frappe.utils import (
|
|||||||
|
|
||||||
frappe.utils.logger.set_log_level("DEBUG")
|
frappe.utils.logger.set_log_level("DEBUG")
|
||||||
logger = frappe.logger("manufacturing_overview",
|
logger = frappe.logger("manufacturing_overview",
|
||||||
allow_site=True, file_count=50)
|
allow_site=True, file_count=50)
|
||||||
# logger.debug(f"{wo_id}")
|
# logger.debug(f"{wo_id}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def makepp(sales_order):
|
def makepp(sales_order):
|
||||||
"""
|
"""
|
||||||
Check if Production Plan already exists and break when it does.
|
Check if Production Plan already exists and break when it does.
|
||||||
"""
|
"""
|
||||||
so = frappe.get_doc("Sales Order", sales_order)
|
so = frappe.get_doc("Sales Order", sales_order)
|
||||||
|
|
||||||
checkpp = frappe.get_all('Production Plan Item', filters={'sales_order': so.name}, fields=[
|
checkpp = frappe.get_all('Production Plan Item', filters={'sales_order': so.name}, fields=[
|
||||||
'name', 'parent'])
|
'name', 'parent'])
|
||||||
|
|
||||||
if checkpp:
|
if checkpp:
|
||||||
return {'status': 400,
|
return {'status': 400,
|
||||||
'docname': [checkpp[0].parent]}
|
'docname': [checkpp[0].parent]}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Create Production Plan
|
Create Production Plan
|
||||||
"""
|
"""
|
||||||
sales_orders = [{
|
sales_orders = [{
|
||||||
"sales_order": so.name,
|
"sales_order": so.name,
|
||||||
"customer": so.customer,
|
"customer": so.customer,
|
||||||
"sales_order_date": so.transaction_date,
|
"sales_order_date": so.transaction_date,
|
||||||
"grand_total": so.grand_total,
|
"grand_total": so.grand_total,
|
||||||
}]
|
}]
|
||||||
|
|
||||||
po_items = []
|
po_items = []
|
||||||
for item in so.items:
|
for item in so.items:
|
||||||
i = {
|
i = {
|
||||||
"item_code": item.item_code,
|
"item_code": item.item_code,
|
||||||
"bom_no": get_default_bom(item.item_code),
|
"bom_no": get_default_bom(item.item_code),
|
||||||
"planned_qty": item.qty,
|
"planned_qty": item.qty,
|
||||||
"planned_start_date": frappe.utils.nowdate(),
|
"planned_start_date": frappe.utils.nowdate(),
|
||||||
"stock_uom": "Stk",
|
"stock_uom": "Stk",
|
||||||
"sales_order": so.name,
|
"sales_order": so.name,
|
||||||
"sales_order_item": item.name
|
"sales_order_item": item.name
|
||||||
}
|
}
|
||||||
|
|
||||||
po_items.append(i)
|
po_items.append(i)
|
||||||
|
|
||||||
pp = frappe.get_doc({
|
pp = frappe.get_doc({
|
||||||
'doctype': 'Production Plan',
|
'doctype': 'Production Plan',
|
||||||
'get_items_from': 'Sales Order',
|
'get_items_from': 'Sales Order',
|
||||||
'sales_orders': sales_orders,
|
'sales_orders': sales_orders,
|
||||||
'po_items': po_items,
|
'po_items': po_items,
|
||||||
'for_warehouse': "Lagerräume - HP"
|
'for_warehouse': "Lagerräume - HP"
|
||||||
})
|
})
|
||||||
pp.insert()
|
pp.insert()
|
||||||
|
|
||||||
return {'status': 201,
|
return {'status': 201,
|
||||||
'docname': [pp.name]}
|
'docname': [pp.name]}
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def fixfinisheditemwopo(production_plan):
|
def fixfinisheditemwopo(production_plan):
|
||||||
pp = frappe.get_doc("Production Plan", production_plan)
|
pp = frappe.get_doc("Production Plan", production_plan)
|
||||||
wo_id = frappe.get_all('Work Order', filters={'production_plan_item': pp.po_items[0].name})
|
wo_id = frappe.get_all('Work Order', filters={'production_plan_item': pp.po_items[0].name})
|
||||||
wo_id = wo_id[0]["name"]
|
wo_id = wo_id[0]["name"]
|
||||||
|
|
||||||
frappe.delete_doc("Work Order", wo_id)
|
frappe.delete_doc("Work Order", wo_id)
|
||||||
|
|
||||||
|
|
||||||
po = frappe.new_doc("Purchase Order")
|
po = frappe.new_doc("Purchase Order")
|
||||||
po.supplier = pp.po_items[0].custom_supplier
|
po.supplier = pp.po_items[0].custom_supplier
|
||||||
po.schedule_date = nowdate()
|
po.schedule_date = nowdate()
|
||||||
po.is_subcontracted = 1
|
po.is_subcontracted = 1
|
||||||
|
|
||||||
for row in pp.po_items:
|
for row in pp.po_items:
|
||||||
po_data = {
|
po_data = {
|
||||||
"fg_item": row.item_code,
|
"fg_item": row.item_code,
|
||||||
# "warehouse": row.fg_warehouse,
|
"warehouse": row.warehouse,
|
||||||
# "production_plan_sub_assembly_item": row.name,
|
"bom": row.bom_no,
|
||||||
# "bom": row.bom_no,
|
"production_plan": pp.name,
|
||||||
# "production_plan": pp.name,
|
"fg_item_qty": row.planned_qty,
|
||||||
# "fg_item_qty": row.qty,
|
"supplier_warehouse": "Externe Arbeiten - HP"
|
||||||
}
|
}
|
||||||
|
|
||||||
# for field in [
|
for field in [
|
||||||
# "schedule_date",
|
"schedule_date",
|
||||||
# "qty",
|
"qty",
|
||||||
# "description",
|
"description",
|
||||||
# "production_plan_item",
|
"production_plan_item",
|
||||||
# ]:
|
]:
|
||||||
# po_data[field] = row.get(field)
|
po_data[field] = row.get(field)
|
||||||
|
|
||||||
po.append("items", po_data)
|
po.append("items", po_data)
|
||||||
|
|
||||||
po.set_service_items_for_finished_goods()
|
po.set_service_items_for_finished_goods()
|
||||||
po.set_missing_values()
|
po.set_missing_values()
|
||||||
po.flags.ignore_mandatory = True
|
# po.flags.ignore_mandatory = True
|
||||||
po.flags.ignore_validate = True
|
# po.flags.ignore_validate = True
|
||||||
po.insert()
|
po.insert()
|
||||||
|
|
||||||
|
# pp.db_set("total_produced_qty", pp.total_planned_qty)
|
||||||
|
# pp.db_set("status", "Completed")
|
||||||
|
|
||||||
return {'status': 201,
|
return {'status': 201,
|
||||||
'docname': po.name}
|
'docname': po.name}
|
||||||
|
|||||||
Reference in New Issue
Block a user