From ab0ad67699669355ca1a317f094ad658ee0cf3de Mon Sep 17 00:00:00 2001 From: danal-odoo Date: Fri, 12 Dec 2025 13:32:57 +0530 Subject: [PATCH] [ADD] mrp_bom_overview_forecast: merge status and availability Currently, the BoM Overview report displays 'Status' and 'Availability' as two separate columns/indicators. This leads to a cluttered interface and occupies unnecessary horizontal space on the report lines. This module merges these two indicators into a single column to streamline the display. The following logic is implemented: 1. For the parent product: Displays the production status if all components are available, will always green. If not ready, it falls back to showing the availability date/state. 2. For components: Always displays the availability state. Technical details: - Template `mrp.BomOverviewLine`: Removed the availability_display column and consolidated the badge display logic in the XML. - JS `BomOverviewLine`: Created `ColorClass` getter to dynamically assign colors (success, warning, danger, dark) based on the availability state. - Template `mrp.BomOverviewTable`: Removed Availability column and margins using `xpath` for a cleaner forecast layout. Task-5403914 --- mrp_bom_overview_forecast/__manifest__.py | 13 ++++++++++++ .../mrp_bom_overview_line.js | 17 +++++++++++++++ .../mrp_bom_overview_line.xml | 21 +++++++++++++++++++ .../mrp_bom_overview_table.xml | 10 +++++++++ 4 files changed, 61 insertions(+) create mode 100644 mrp_bom_overview_forecast/__manifest__.py create mode 100644 mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_line/mrp_bom_overview_line.js create mode 100644 mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_line/mrp_bom_overview_line.xml create mode 100644 mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_table/mrp_bom_overview_table.xml diff --git a/mrp_bom_overview_forecast/__manifest__.py b/mrp_bom_overview_forecast/__manifest__.py new file mode 100644 index 00000000000..31ba19806a9 --- /dev/null +++ b/mrp_bom_overview_forecast/__manifest__.py @@ -0,0 +1,13 @@ +{ + "name": "BOM overview", + "version": "1.0", + "depends": ["mrp", "purchase"], + "author": "danal", + "category": "Category", + "license": "LGPL-3", + "assets": { + "web.assets_backend": [ + "mrp_bom_overview_forecast/static/src/**/*", + ], + }, +} diff --git a/mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_line/mrp_bom_overview_line.js b/mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_line/mrp_bom_overview_line.js new file mode 100644 index 00000000000..ec7568a128a --- /dev/null +++ b/mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_line/mrp_bom_overview_line.js @@ -0,0 +1,17 @@ +import { patch } from "@web/core/utils/patch"; +import { BomOverviewLine } from "@mrp/components/bom_overview_line/mrp_bom_overview_line"; + +patch(BomOverviewLine.prototype, { + get ColorClass() { + switch (this.data.availability_state) { + case "available": + return "text-bg-success"; + case "expected": + return "text-bg-warning"; + case "unavailable": + return "text-bg-danger"; + default: + return "text-bg-dark"; + } + } +}); diff --git a/mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_line/mrp_bom_overview_line.xml b/mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_line/mrp_bom_overview_line.xml new file mode 100644 index 00000000000..46693f20a75 --- /dev/null +++ b/mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_line/mrp_bom_overview_line.xml @@ -0,0 +1,21 @@ + + + + + +
+ + + + + + + + + + + +
+
+
+
diff --git a/mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_table/mrp_bom_overview_table.xml b/mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_table/mrp_bom_overview_table.xml new file mode 100644 index 00000000000..95dad63a62d --- /dev/null +++ b/mrp_bom_overview_forecast/static/src/components/mrp_bom_overview_table/mrp_bom_overview_table.xml @@ -0,0 +1,10 @@ + + + + + o_mrp_bom_report_page px-0 overflow-auto border-bottom bg-view + + + + +