From 420cc1b138af0bd6c63df6ae6b5e2a1bdc8d6be1 Mon Sep 17 00:00:00 2001 From: Quirino Leone Date: Tue, 2 Dec 2025 17:18:02 +0100 Subject: [PATCH] [IMP] mgmtsystem_nonconformity_quality_control_oca: auto-create nonconformities --- .../README.rst | 1 + .../__manifest__.py | 1 + .../models/__init__.py | 1 + .../models/product_template.py | 10 +++++ .../models/qc_inspection.py | 21 +++++++++++ .../readme/DESCRIPTION.rst | 1 + .../static/description/index.html | 13 ++++--- .../tests/test_inspection.py | 37 +++++++++++++++++++ .../views/product_template.xml | 14 +++++++ 9 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 mgmtsystem_nonconformity_quality_control_oca/models/product_template.py create mode 100644 mgmtsystem_nonconformity_quality_control_oca/views/product_template.xml diff --git a/mgmtsystem_nonconformity_quality_control_oca/README.rst b/mgmtsystem_nonconformity_quality_control_oca/README.rst index 4d21addb130..af2ad80be55 100644 --- a/mgmtsystem_nonconformity_quality_control_oca/README.rst +++ b/mgmtsystem_nonconformity_quality_control_oca/README.rst @@ -35,6 +35,7 @@ This module contains some new features for Management System modules. Nonconformity (NC) * Quality Control Inspection: add a field to link a specific quality control inspection. +* Activating "Create Nonconformity" flag on products, for every failed inspection, a new Nonconformity will be opened. **Table of contents** diff --git a/mgmtsystem_nonconformity_quality_control_oca/__manifest__.py b/mgmtsystem_nonconformity_quality_control_oca/__manifest__.py index 341236b670d..516ce844055 100644 --- a/mgmtsystem_nonconformity_quality_control_oca/__manifest__.py +++ b/mgmtsystem_nonconformity_quality_control_oca/__manifest__.py @@ -16,6 +16,7 @@ "data": [ "views/qc_inspection.xml", "views/mgmtsystem_nonconformity.xml", + "views/product_template.xml", ], "demo": [], } diff --git a/mgmtsystem_nonconformity_quality_control_oca/models/__init__.py b/mgmtsystem_nonconformity_quality_control_oca/models/__init__.py index 3b2aeee6ad6..873516447fd 100644 --- a/mgmtsystem_nonconformity_quality_control_oca/models/__init__.py +++ b/mgmtsystem_nonconformity_quality_control_oca/models/__init__.py @@ -1,2 +1,3 @@ from . import mgmtsystem_nonconformity +from . import product_template from . import qc_inspection diff --git a/mgmtsystem_nonconformity_quality_control_oca/models/product_template.py b/mgmtsystem_nonconformity_quality_control_oca/models/product_template.py new file mode 100644 index 00000000000..96633592a09 --- /dev/null +++ b/mgmtsystem_nonconformity_quality_control_oca/models/product_template.py @@ -0,0 +1,10 @@ +from odoo import fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + create_nonconformity = fields.Boolean( + string="Create Non-Conformity", + help="If selected, automatically creates Nonconformity when inspections fail", + ) diff --git a/mgmtsystem_nonconformity_quality_control_oca/models/qc_inspection.py b/mgmtsystem_nonconformity_quality_control_oca/models/qc_inspection.py index 52a1844084c..862f40741c4 100644 --- a/mgmtsystem_nonconformity_quality_control_oca/models/qc_inspection.py +++ b/mgmtsystem_nonconformity_quality_control_oca/models/qc_inspection.py @@ -48,3 +48,24 @@ def action_view_nonconformities(self): "default_company_id": self.company_id.id, } return action + + def action_approve(self): + res = super().action_approve() + + if self.state == "failed" and self.product_id.create_nonconformity: + self.create_nonconformity() + + return res + + def create_nonconformity(self): + self.env["mgmtsystem.nonconformity"].create( + { + "name": self.name, + "partner_id": self.user.partner_id.id, + "origin_ids": self.env.ref("mgmtsystem_nonconformity.nc_origin_qc"), + "responsible_user_id": self.user.id, + "manager_user_id": self.user.id, + "description": "Automatically created due to failure of the linked inspection.", + "qc_inspection_id": self.id, + } + ) diff --git a/mgmtsystem_nonconformity_quality_control_oca/readme/DESCRIPTION.rst b/mgmtsystem_nonconformity_quality_control_oca/readme/DESCRIPTION.rst index 7958b58eff4..11c03445996 100644 --- a/mgmtsystem_nonconformity_quality_control_oca/readme/DESCRIPTION.rst +++ b/mgmtsystem_nonconformity_quality_control_oca/readme/DESCRIPTION.rst @@ -5,3 +5,4 @@ This module contains some new features for Management System modules. Nonconformity (NC) * Quality Control Inspection: add a field to link a specific quality control inspection. +* Activating "Create Nonconformity" flag on products, for every failed inspection, a new Nonconformity will be opened. diff --git a/mgmtsystem_nonconformity_quality_control_oca/static/description/index.html b/mgmtsystem_nonconformity_quality_control_oca/static/description/index.html index 33019bdfe52..85c704522fd 100644 --- a/mgmtsystem_nonconformity_quality_control_oca/static/description/index.html +++ b/mgmtsystem_nonconformity_quality_control_oca/static/description/index.html @@ -1,4 +1,3 @@ - @@ -9,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -375,6 +375,7 @@

Mgmtsystem Nonconformity Quality Control Oca

Nonconformity (NC)

Table of contents

@@ -427,7 +428,9 @@

Contributors

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

diff --git a/mgmtsystem_nonconformity_quality_control_oca/tests/test_inspection.py b/mgmtsystem_nonconformity_quality_control_oca/tests/test_inspection.py index 18754a9fad0..5bfba967c0c 100644 --- a/mgmtsystem_nonconformity_quality_control_oca/tests/test_inspection.py +++ b/mgmtsystem_nonconformity_quality_control_oca/tests/test_inspection.py @@ -17,6 +17,15 @@ def setUpClass(cls): {"name": "Test Inspection", "inspection_lines": inspection_lines} ) + cls.product = cls.env["product.product"].create({"name": "Test product"}) + cls.inspection2 = cls.inspection_model.create( + { + "name": "Test Inspection 2", + "inspection_lines": inspection_lines, + "object_id": cls.product, + } + ) + cls.nc_model = cls.env["mgmtsystem.nonconformity"] cls.partner = cls.env["res.partner"].search([])[0] cls.nc_test = cls.nc_model.create( @@ -56,3 +65,31 @@ def test_action_view_nonconformities(self): nc_ids.append(nc.id) self.assertEqual(nc_ids, action["domain"][0][2]) + + def test_no_create_nonconformity(self): + """ + Test Nonconformity creation when inspection fails + if relative flag is off + """ + self.inspection2.write({"state": "failed"}) + self.inspection2.action_approve() + + nc = self.env["mgmtsystem.nonconformity"].search( + [("qc_inspection_id", "=", self.inspection2.id)] + ) + self.assertFalse(nc) + + def test_create_nonconformity(self): + """ + Test Nonconformity doesn't create when inspection fails + if relative flag is on + """ + self.product.create_nonconformity = True + self.inspection2.write({"state": "failed"}) + self.inspection2.action_approve() + + nc = self.env["mgmtsystem.nonconformity"].search( + [("qc_inspection_id", "=", self.inspection2.id)] + ) + self.assertEqual(len(nc), 1) + self.assertEqual(self.inspection2.id, nc.qc_inspection_id.id) diff --git a/mgmtsystem_nonconformity_quality_control_oca/views/product_template.xml b/mgmtsystem_nonconformity_quality_control_oca/views/product_template.xml new file mode 100644 index 00000000000..d278638e7b4 --- /dev/null +++ b/mgmtsystem_nonconformity_quality_control_oca/views/product_template.xml @@ -0,0 +1,14 @@ + + + + + product.template.common.qc + product.template + + + + + + + +