mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-26 08:24:47 +00:00
Merge pull request #22462 from marination/production-plan-ux
fix: Handling Empty tables in Production Plan
This commit is contained in:
@@ -98,11 +98,17 @@ class ProductionPlan(Document):
|
|||||||
elif self.get_items_from == "Material Request":
|
elif self.get_items_from == "Material Request":
|
||||||
self.get_mr_items()
|
self.get_mr_items()
|
||||||
|
|
||||||
|
def get_so_mr_list(self, field, table):
|
||||||
|
"""Returns a list of Sales Orders or Material Requests from the respective tables"""
|
||||||
|
so_mr_list = [d.get(field) for d in self.get(table) if d.get(field)]
|
||||||
|
return so_mr_list
|
||||||
|
|
||||||
def get_so_items(self):
|
def get_so_items(self):
|
||||||
so_list = [d.sales_order for d in self.sales_orders if d.sales_order]
|
# Check for empty table or empty rows
|
||||||
if not so_list:
|
if not self.get("sales_orders") or not self.get_so_mr_list("sales_order", "sales_orders"):
|
||||||
msgprint(_("Please enter Sales Orders in the above table"))
|
frappe.throw(_("Please fill the Sales Orders table"), title=_("Sales Orders Required"))
|
||||||
return []
|
|
||||||
|
so_list = self.get_so_mr_list("sales_order", "sales_orders")
|
||||||
|
|
||||||
item_condition = ""
|
item_condition = ""
|
||||||
if self.item_code:
|
if self.item_code:
|
||||||
@@ -134,10 +140,11 @@ class ProductionPlan(Document):
|
|||||||
self.calculate_total_planned_qty()
|
self.calculate_total_planned_qty()
|
||||||
|
|
||||||
def get_mr_items(self):
|
def get_mr_items(self):
|
||||||
mr_list = [d.material_request for d in self.material_requests if d.material_request]
|
# Check for empty table or empty rows
|
||||||
if not mr_list:
|
if not self.get("material_requests") or not self.get_so_mr_list("material_request", "material_requests"):
|
||||||
msgprint(_("Please enter Material Requests in the above table"))
|
frappe.throw(_("Please fill the Material Requests table"), title=_("Material Requests Required"))
|
||||||
return []
|
|
||||||
|
mr_list = self.get_so_mr_list("material_request", "material_requests")
|
||||||
|
|
||||||
item_condition = ""
|
item_condition = ""
|
||||||
if self.item_code:
|
if self.item_code:
|
||||||
@@ -628,16 +635,18 @@ def get_items_for_material_requests(doc, warehouses=None):
|
|||||||
|
|
||||||
if warehouse_list:
|
if warehouse_list:
|
||||||
warehouses = list(set(warehouse_list))
|
warehouses = list(set(warehouse_list))
|
||||||
|
|
||||||
if doc.get("for_warehouse") and doc.get("for_warehouse") in warehouses:
|
if doc.get("for_warehouse") and doc.get("for_warehouse") in warehouses:
|
||||||
warehouses.remove(doc.get("for_warehouse"))
|
warehouses.remove(doc.get("for_warehouse"))
|
||||||
|
|
||||||
warehouse_list = None
|
warehouse_list = None
|
||||||
|
|
||||||
doc['mr_items'] = []
|
doc['mr_items'] = []
|
||||||
po_items = doc.get('po_items') if doc.get('po_items') else doc.get('items')
|
|
||||||
if not po_items:
|
po_items = doc.get('po_items')
|
||||||
frappe.throw(_("Items are required to pull the raw materials which is associated with it."))
|
if not po_items or not [row.get('item_code') for row in po_items if row.get('item_code')]:
|
||||||
|
frappe.throw(_("Items to Manufacture are required to pull the Raw Materials associated with it."),
|
||||||
|
title=_("Items Required"))
|
||||||
|
|
||||||
company = doc.get('company')
|
company = doc.get('company')
|
||||||
ignore_existing_ordered_qty = doc.get('ignore_existing_ordered_qty')
|
ignore_existing_ordered_qty = doc.get('ignore_existing_ordered_qty')
|
||||||
|
|||||||
Reference in New Issue
Block a user