fix: incorrect produced qty in Production Plan Summary (backport #44112) (#44113)

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:
mergify[bot]
2024-11-13 12:31:31 +05:30
committed by GitHub
parent 6e83fec5ca
commit bce7acf9cc
2 changed files with 45 additions and 26 deletions

View File

@@ -87,17 +87,17 @@ frappe.ui.form.on("Production Plan", {
if (frm.doc.docstatus === 1) {
frm.trigger("show_progress");
if (frm.doc.status !== "Completed") {
frm.add_custom_button(
__("Production Plan Summary"),
() => {
frappe.set_route("query-report", "Production Plan Summary", {
production_plan: frm.doc.name,
});
},
__("View")
);
frm.add_custom_button(
__("Production Plan Summary"),
() => {
frappe.set_route("query-report", "Production Plan Summary", {
production_plan: frm.doc.name,
});
},
__("View")
);
if (frm.doc.status !== "Completed") {
if (frm.doc.status === "Closed") {
frm.add_custom_button(
__("Re-open"),

View File

@@ -27,32 +27,51 @@ def get_data(filters):
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"))
for row in production_plan_doc.po_items:
work_order = frappe.get_value(
work_orders = frappe.get_all(
"Work Order",
{"production_plan_item": row.name, "bom_no": row.bom_no, "production_item": row.item_code},
"name",
filters={
"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:
itemwise_indent.setdefault(row.item_code, {})
order_qty = row.planned_qty
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(
{
"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"),
"indent": 0,
"qty": row.planned_qty,
"document_type": "Work Order",
"document_name": work_order or "",
"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)),
"produced_qty": total_produced_qty,
"pending_qty": pending_qty,
}
)