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 @@
@@ -427,7 +428,9 @@
This module is maintained by the OCA.
-

+
+
+
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
+
+
+
+
+
+
+
+