fix: incorrect produced qty in Production Plan Summary (#44112)
(cherry picked from commit 0828c74fe3)
Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
This commit is contained in:
@@ -87,17 +87,17 @@ frappe.ui.form.on("Production Plan", {
|
|||||||
if (frm.doc.docstatus === 1) {
|
if (frm.doc.docstatus === 1) {
|
||||||
frm.trigger("show_progress");
|
frm.trigger("show_progress");
|
||||||
|
|
||||||
if (frm.doc.status !== "Completed") {
|
frm.add_custom_button(
|
||||||
frm.add_custom_button(
|
__("Production Plan Summary"),
|
||||||
__("Production Plan Summary"),
|
() => {
|
||||||
() => {
|
frappe.set_route("query-report", "Production Plan Summary", {
|
||||||
frappe.set_route("query-report", "Production Plan Summary", {
|
production_plan: frm.doc.name,
|
||||||
production_plan: frm.doc.name,
|
});
|
||||||
});
|
},
|
||||||
},
|
__("View")
|
||||||
__("View")
|
);
|
||||||
);
|
|
||||||
|
|
||||||
|
if (frm.doc.status !== "Completed") {
|
||||||
if (frm.doc.status === "Closed") {
|
if (frm.doc.status === "Closed") {
|
||||||
frm.add_custom_button(
|
frm.add_custom_button(
|
||||||
__("Re-open"),
|
__("Re-open"),
|
||||||
|
|||||||
@@ -27,32 +27,51 @@ def get_data(filters):
|
|||||||
|
|
||||||
|
|
||||||
def get_production_plan_item_details(filters, data, order_details):
|
def get_production_plan_item_details(filters, data, order_details):
|
||||||
itemwise_indent = {}
|
|
||||||
|
|
||||||
production_plan_doc = frappe.get_cached_doc("Production Plan", filters.get("production_plan"))
|
production_plan_doc = frappe.get_cached_doc("Production Plan", filters.get("production_plan"))
|
||||||
for row in production_plan_doc.po_items:
|
for row in production_plan_doc.po_items:
|
||||||
work_order = frappe.get_value(
|
work_orders = frappe.get_all(
|
||||||
"Work Order",
|
"Work Order",
|
||||||
{"production_plan_item": row.name, "bom_no": row.bom_no, "production_item": row.item_code},
|
filters={
|
||||||
"name",
|
"production_plan_item": row.name,
|
||||||
|
"bom_no": row.bom_no,
|
||||||
|
"production_item": row.item_code,
|
||||||
|
},
|
||||||
|
pluck="name",
|
||||||
)
|
)
|
||||||
|
|
||||||
if row.item_code not in itemwise_indent:
|
order_qty = row.planned_qty
|
||||||
itemwise_indent.setdefault(row.item_code, {})
|
total_produced_qty = 0.0
|
||||||
|
pending_qty = 0.0
|
||||||
|
for work_order in work_orders:
|
||||||
|
produced_qty = flt(order_details.get((work_order, row.item_code), {}).get("produced_qty", 0))
|
||||||
|
pending_qty = flt(order_qty) - produced_qty
|
||||||
|
|
||||||
|
total_produced_qty += produced_qty
|
||||||
|
|
||||||
|
data.append(
|
||||||
|
{
|
||||||
|
"indent": 0,
|
||||||
|
"item_code": row.item_code,
|
||||||
|
"sales_order": row.get("sales_order"),
|
||||||
|
"item_name": frappe.get_cached_value("Item", row.item_code, "item_name"),
|
||||||
|
"qty": order_qty,
|
||||||
|
"document_type": "Work Order",
|
||||||
|
"document_name": work_order or "",
|
||||||
|
"bom_level": 0,
|
||||||
|
"produced_qty": produced_qty,
|
||||||
|
"pending_qty": pending_qty,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
order_qty = pending_qty
|
||||||
|
|
||||||
data.append(
|
data.append(
|
||||||
{
|
{
|
||||||
"indent": 0,
|
|
||||||
"item_code": row.item_code,
|
"item_code": row.item_code,
|
||||||
"sales_order": row.get("sales_order"),
|
"indent": 0,
|
||||||
"item_name": frappe.get_cached_value("Item", row.item_code, "item_name"),
|
|
||||||
"qty": row.planned_qty,
|
"qty": row.planned_qty,
|
||||||
"document_type": "Work Order",
|
"produced_qty": total_produced_qty,
|
||||||
"document_name": work_order or "",
|
"pending_qty": pending_qty,
|
||||||
"bom_level": 0,
|
|
||||||
"produced_qty": order_details.get((work_order, row.item_code), {}).get("produced_qty", 0),
|
|
||||||
"pending_qty": flt(row.planned_qty)
|
|
||||||
- flt(order_details.get((work_order, row.item_code), {}).get("produced_qty", 0)),
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user