From 504a6dff9bb2cca6178211b626681f1cec409a91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20-=20Le=20Filament?= <30716308+remi-filament@users.noreply.github.com> Date: Wed, 11 Feb 2026 17:36:02 +0100 Subject: [PATCH] [ADD] quality_control_oca_inspection_matrix --- .../README.rst | 93 ++++ .../__init__.py | 1 + .../__manifest__.py | 20 + .../pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 3 + .../readme/DESCRIPTION.md | 1 + .../readme/USAGE.md | 8 + .../security/ir.model.access.csv | 3 + .../static/description/icon.png | Bin 0 -> 5953 bytes .../static/description/icon.svg | 204 ++++++++ .../static/description/index.html | 442 ++++++++++++++++++ .../wizard/__init__.py | 1 + .../wizard/multi_quality_edit_wizard.py | 108 +++++ .../wizard/multi_quality_edit_wizard_view.xml | 86 ++++ 14 files changed, 973 insertions(+) create mode 100644 quality_control_oca_inspection_matrix/README.rst create mode 100644 quality_control_oca_inspection_matrix/__init__.py create mode 100644 quality_control_oca_inspection_matrix/__manifest__.py create mode 100644 quality_control_oca_inspection_matrix/pyproject.toml create mode 100644 quality_control_oca_inspection_matrix/readme/CONTRIBUTORS.md create mode 100644 quality_control_oca_inspection_matrix/readme/DESCRIPTION.md create mode 100644 quality_control_oca_inspection_matrix/readme/USAGE.md create mode 100644 quality_control_oca_inspection_matrix/security/ir.model.access.csv create mode 100644 quality_control_oca_inspection_matrix/static/description/icon.png create mode 100644 quality_control_oca_inspection_matrix/static/description/icon.svg create mode 100644 quality_control_oca_inspection_matrix/static/description/index.html create mode 100644 quality_control_oca_inspection_matrix/wizard/__init__.py create mode 100644 quality_control_oca_inspection_matrix/wizard/multi_quality_edit_wizard.py create mode 100644 quality_control_oca_inspection_matrix/wizard/multi_quality_edit_wizard_view.xml diff --git a/quality_control_oca_inspection_matrix/README.rst b/quality_control_oca_inspection_matrix/README.rst new file mode 100644 index 00000000000..f1242e27f69 --- /dev/null +++ b/quality_control_oca_inspection_matrix/README.rst @@ -0,0 +1,93 @@ +===================================== +Quality Control OCA Inspection Matrix +===================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:fd9af74bab2a9bf9d700ee755a33e8326b63dd00aab5302062bf029fcbf29699 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmanufacture-lightgray.png?logo=github + :target: https://github.com/OCA/manufacture/tree/18.0/quality_control_oca_inspection_matrix + :alt: OCA/manufacture +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/manufacture-18-0/manufacture-18-0-quality_control_oca_inspection_matrix + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/manufacture&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module provides a matrix view for inspection tests, allowing to +test multiple products at once. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use this module, you need to: + +- Go to *Quality Control* > Inspections +- Select multiple inspections linked to the same test +- Select Actions > Inspection Matrix +- Fill in all fields (you get a first table with quantitative + questions, then a table with qualitative questions) +- Save +- The inspections have been filled + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Le Filament + +Contributors +------------ + +- `Le Filament `__ + + - julienCozo + - remi-filament + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +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. + +This module is part of the `OCA/manufacture `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/quality_control_oca_inspection_matrix/__init__.py b/quality_control_oca_inspection_matrix/__init__.py new file mode 100644 index 00000000000..40272379f72 --- /dev/null +++ b/quality_control_oca_inspection_matrix/__init__.py @@ -0,0 +1 @@ +from . import wizard diff --git a/quality_control_oca_inspection_matrix/__manifest__.py b/quality_control_oca_inspection_matrix/__manifest__.py new file mode 100644 index 00000000000..6ac04bba178 --- /dev/null +++ b/quality_control_oca_inspection_matrix/__manifest__.py @@ -0,0 +1,20 @@ +{ + "name": "Quality Control OCA Inspection Matrix", + "summary": "Quality inspection tests with 2D matrix view.", + "version": "18.0.1.0.0", + "development_status": "Beta", + "category": "Quality Control", + "website": "https://github.com/OCA/manufacture", + "author": "Le Filament, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": [ + "quality_control_oca", + "web_widget_x2many_2d_matrix", + ], + "data": [ + "security/ir.model.access.csv", + "wizard/multi_quality_edit_wizard_view.xml", + ], +} diff --git a/quality_control_oca_inspection_matrix/pyproject.toml b/quality_control_oca_inspection_matrix/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/quality_control_oca_inspection_matrix/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/quality_control_oca_inspection_matrix/readme/CONTRIBUTORS.md b/quality_control_oca_inspection_matrix/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..e9386e7eb6f --- /dev/null +++ b/quality_control_oca_inspection_matrix/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- [Le Filament](https://le-filament.com) + - julienCozo + - remi-filament diff --git a/quality_control_oca_inspection_matrix/readme/DESCRIPTION.md b/quality_control_oca_inspection_matrix/readme/DESCRIPTION.md new file mode 100644 index 00000000000..a04defd2dbc --- /dev/null +++ b/quality_control_oca_inspection_matrix/readme/DESCRIPTION.md @@ -0,0 +1 @@ +This module provides a matrix view for inspection tests, allowing to test multiple products at once. diff --git a/quality_control_oca_inspection_matrix/readme/USAGE.md b/quality_control_oca_inspection_matrix/readme/USAGE.md new file mode 100644 index 00000000000..de29d43bb2e --- /dev/null +++ b/quality_control_oca_inspection_matrix/readme/USAGE.md @@ -0,0 +1,8 @@ +To use this module, you need to: + +- Go to *Quality Control* > Inspections +- Select multiple inspections linked to the same test +- Select Actions > Inspection Matrix +- Fill in all fields (you get a first table with quantitative questions, then a table with qualitative questions) +- Save +- The inspections have been filled diff --git a/quality_control_oca_inspection_matrix/security/ir.model.access.csv b/quality_control_oca_inspection_matrix/security/ir.model.access.csv new file mode 100644 index 00000000000..73671a95389 --- /dev/null +++ b/quality_control_oca_inspection_matrix/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_multi_quality_edit_wizard,access_multi_quality_edit_wizard,model_multi_quality_edit_wizard,quality_control_oca.group_quality_control_user,1,1,1,1 +access_multi_quality_edit_line_wizard,access_multi_quality_edit_line_wizard,model_multi_quality_edit_line,quality_control_oca.group_quality_control_user,1,1,1,1 diff --git a/quality_control_oca_inspection_matrix/static/description/icon.png b/quality_control_oca_inspection_matrix/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b9e8e057e4424e8a0ab3b7294d68bcb9899e4b5d GIT binary patch literal 5953 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 JLbV($ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/quality_control_oca_inspection_matrix/static/description/index.html b/quality_control_oca_inspection_matrix/static/description/index.html new file mode 100644 index 00000000000..3e593d3d7d0 --- /dev/null +++ b/quality_control_oca_inspection_matrix/static/description/index.html @@ -0,0 +1,442 @@ + + + + + +Quality Control OCA Inspection Matrix + + + +
+

Quality Control OCA Inspection Matrix

+ + +

Beta License: AGPL-3 OCA/manufacture Translate me on Weblate Try me on Runboat

+

This module provides a matrix view for inspection tests, allowing to +test multiple products at once.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  • Go to Quality Control > Inspections
  • +
  • Select multiple inspections linked to the same test
  • +
  • Select Actions > Inspection Matrix
  • +
  • Fill in all fields (you get a first table with quantitative +questions, then a table with qualitative questions)
  • +
  • Save
  • +
  • The inspections have been filled
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Le Filament
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

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

+

This module is part of the OCA/manufacture project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/quality_control_oca_inspection_matrix/wizard/__init__.py b/quality_control_oca_inspection_matrix/wizard/__init__.py new file mode 100644 index 00000000000..3189c46b7cb --- /dev/null +++ b/quality_control_oca_inspection_matrix/wizard/__init__.py @@ -0,0 +1 @@ +from . import multi_quality_edit_wizard diff --git a/quality_control_oca_inspection_matrix/wizard/multi_quality_edit_wizard.py b/quality_control_oca_inspection_matrix/wizard/multi_quality_edit_wizard.py new file mode 100644 index 00000000000..48a723409c3 --- /dev/null +++ b/quality_control_oca_inspection_matrix/wizard/multi_quality_edit_wizard.py @@ -0,0 +1,108 @@ +from odoo import api, fields, models +from odoo.exceptions import ValidationError + + +class MultiQualityEditWizard(models.TransientModel): + _name = "multi.quality.edit.wizard" + _description = "Wizard for multi qc edition" + + quantitative_line_ids = fields.One2many( + "multi.quality.edit.line", + "wizard_id", + domain="[('question_type', '=', 'quantitative')]", + ) + qualitative_line_ids = fields.One2many( + "multi.quality.edit.line", + "wizard_id", + domain="[('question_type', '=', 'qualitative')]", + ) + + @api.model + def default_get(self, fields_list): + res = super().default_get(fields_list) + active_ids = self._context.get("active_ids") + inspections = self.env["qc.inspection"].browse(active_ids) + + tests = inspections.mapped("test") + if len(tests) != 1: + raise ValidationError( + self.env._( + "You should only select inspections linked to the same test." + ) + ) + + quantitative_line_ids = [] + qualitative_line_ids = [] + for insp in inspections: + for quant_line in insp.inspection_lines.filtered( + lambda line: line.question_type == "quantitative" + ): + quantitative_line_ids.append( + ( + 0, + 0, + { + "inspection_id": insp.id, + "inspection_line_id": quant_line.id, + "quantitative_response": quant_line.quantitative_value, + }, + ) + ) + for qual_line in insp.inspection_lines.filtered( + lambda line: line.question_type == "qualitative" + ): + qualitative_line_ids.append( + ( + 0, + 0, + { + "inspection_id": insp.id, + "inspection_line_id": qual_line.id, + "qualitative_response": qual_line.qualitative_value, + }, + ) + ) + res["quantitative_line_ids"] = quantitative_line_ids + res["qualitative_line_ids"] = qualitative_line_ids + return res + + def action_save(self): + for line in self.quantitative_line_ids: + line.inspection_line_id.quantitative_value = line.quantitative_response + for line in self.qualitative_line_ids: + line.inspection_line_id.qualitative_value = line.qualitative_response + return {"type": "ir.actions.act_window_close"} + + +class MultiQualityEditLine(models.TransientModel): + _name = "multi.quality.edit.line" + _description = "on line for display" + + wizard_id = fields.Many2one("multi.quality.edit.wizard", required=True) + inspection_id = fields.Many2one("qc.inspection", string="Inspection", required=True) + inspection_line_id = fields.Many2one( + "qc.inspection.line", string="Ligne d'inspection", required=True + ) + column_name = fields.Char(compute="_compute_column_name", string="Object") + question_type = fields.Selection( + related="inspection_line_id.question_type", string="Type de question" + ) + question_name = fields.Char(related="inspection_line_id.name", string="Question") + + quantitative_response = fields.Float() + qualitative_response = fields.Many2one("qc.test.question.value") + qualitative_domain = fields.Binary(compute="_compute_qualitative_domain") + + def _compute_column_name(self): + for line in self: + line.column_name = ( + line.inspection_id.object_id.name + if line.inspection_id.object_id + else self.env._("Unknown") + ) + + def _compute_qualitative_domain(self): + for line in self: + line.qualitative_domain = [ + ("id", "in", line.inspection_line_id.possible_ql_values.ids) + ] diff --git a/quality_control_oca_inspection_matrix/wizard/multi_quality_edit_wizard_view.xml b/quality_control_oca_inspection_matrix/wizard/multi_quality_edit_wizard_view.xml new file mode 100644 index 00000000000..7837b68e85f --- /dev/null +++ b/quality_control_oca_inspection_matrix/wizard/multi_quality_edit_wizard_view.xml @@ -0,0 +1,86 @@ + + + multi.quality.edit.wizard.form + multi.quality.edit.wizard + +
+
+ + + + + + + + + +
+ +
+ + + + + + + + + + +
+
+
+
+
+
+ + + Inspection matrix + multi.quality.edit.wizard + form + new + {'dialog_size': 'extra-large'} + + + + Inspection Matrix + + + + + code + + action = model.env.ref('quality_control_oca_inspection_matrix.action_multi_quality_edit_wizard').read()[0] + + +