details: https://code.tryton.org/tryton/commit/58a5087e215a
branch: default
user: Alex Alias Montserrar <[email protected]>
date: Fri Mar 27 18:10:21 2026 +0100
description:
Add a reference field to the quality inspections
Closes #12436
diffstat:
modules/quality/CHANGELOG | 1 +
modules/quality/quality.py | 29 ++++++++++++++++++++++-
modules/quality/view/quality_inspection_form.xml | 2 +
modules/quality/view/quality_inspection_list.xml | 1 +
4 files changed, 31 insertions(+), 2 deletions(-)
diffs (92 lines):
diff -r c0625ed0d3bb -r 58a5087e215a modules/quality/CHANGELOG
--- a/modules/quality/CHANGELOG Fri Mar 06 10:50:48 2026 +0100
+++ b/modules/quality/CHANGELOG Fri Mar 27 18:10:21 2026 +0100
@@ -1,3 +1,4 @@
+* Add a reference to the inspections
* Add support for Python 3.14
* Remove support for Python 3.9
diff -r c0625ed0d3bb -r 58a5087e215a modules/quality/quality.py
--- a/modules/quality/quality.py Fri Mar 06 10:50:48 2026 +0100
+++ b/modules/quality/quality.py Fri Mar 27 18:10:21 2026 +0100
@@ -9,8 +9,9 @@
from trytond.i18n import gettext, lazy_gettext
from trytond.model import (
- ChatMixin, DeactivableMixin, DictSchemaMixin, MatchMixin, ModelSingleton,
- ModelSQL, ModelStorage, ModelView, Unique, Workflow, dualmethod, fields)
+ ChatMixin, DeactivableMixin, DictSchemaMixin, Index, MatchMixin,
+ ModelSingleton, ModelSQL, ModelStorage, ModelView, Unique, Workflow,
+ dualmethod, fields)
from trytond.model.exceptions import AccessError, ButtonActionException
from trytond.modules.company.model import (
CompanyMultiValueMixin, CompanyValueMixin, employee_field, reset_employee,
@@ -350,6 +351,7 @@
}
number = fields.Char("Number", required=True, readonly=True)
+ reference = fields.Char("Reference")
company = fields.Many2One(
'company.company', "Company", required=True, states=_states)
origin = fields.Reference(
@@ -406,7 +408,12 @@
@classmethod
def __setup__(cls):
cls.number.search_unaccented = False
+ cls.reference.search_unaccented = False
super().__setup__()
+ t = cls.__table__()
+ cls._sql_indexes.update({
+ Index(t, (t.reference, Index.Similarity())),
+ })
cls._transitions |= {
('pending', 'passed'),
('pending', 'failed'),
@@ -511,6 +518,24 @@
return attributes
+ def get_rec_name(self, name):
+ items = [self.number]
+ if self.reference:
+ items.append('[%s]' % self.reference)
+ return ' '.join(items)
+
+ @classmethod
+ def search_rec_name(cls, name, clause):
+ _, operator, value = clause
+ if operator.startswith('!') or operator.startswith('not'):
+ bool_op = 'AND'
+ else:
+ bool_op = 'OR'
+ return [bool_op,
+ ('number', operator, value),
+ ('reference', operator, value),
+ ]
+
@classmethod
@ModelView.button
@Workflow.transition('pending')
diff -r c0625ed0d3bb -r 58a5087e215a
modules/quality/view/quality_inspection_form.xml
--- a/modules/quality/view/quality_inspection_form.xml Fri Mar 06 10:50:48
2026 +0100
+++ b/modules/quality/view/quality_inspection_form.xml Fri Mar 27 18:10:21
2026 +0100
@@ -9,6 +9,8 @@
<label name="origin"/>
<field name="origin"/>
+ <label name="reference"/>
+ <field name="reference"/>
<notebook>
<page name="points">
diff -r c0625ed0d3bb -r 58a5087e215a
modules/quality/view/quality_inspection_list.xml
--- a/modules/quality/view/quality_inspection_list.xml Fri Mar 06 10:50:48
2026 +0100
+++ b/modules/quality/view/quality_inspection_list.xml Fri Mar 27 18:10:21
2026 +0100
@@ -5,6 +5,7 @@
<field name="company" expand="1" optional="1"/>
<field name="number" expand="1"/>
<field name="control" expand="1" optional="0"/>
+ <field name="reference" expand="1" optional="1"/>
<field name="origin" expand="1" optional="0"/>
<field name="state"/>
</tree>