changeset 7132c833c6a3 in modules/sale_complaint:default
details: 
https://hg.tryton.org/modules/sale_complaint?cmd=changeset&node=7132c833c6a3
description:
        Add employee on complaint for some states

        issue11771
        review431731004
diffstat:

 CHANGELOG               |   1 +
 complaint.py            |  30 +++++++++++++++++++++++++++++-
 view/complaint_form.xml |  19 +++++++++++++++----
 3 files changed, 45 insertions(+), 5 deletions(-)

diffs (144 lines):

diff -r ea6a6a9b72a5 -r 7132c833c6a3 CHANGELOG
--- a/CHANGELOG Sun Oct 09 18:57:51 2022 +0200
+++ b/CHANGELOG Sun Oct 09 19:01:25 2022 +0200
@@ -1,3 +1,4 @@
+* Add employee on complaint for some states
 * Remove address on complaint
 
 Version 6.4.0 - 2022-05-02
diff -r ea6a6a9b72a5 -r 7132c833c6a3 complaint.py
--- a/complaint.py      Sun Oct 09 18:57:51 2022 +0200
+++ b/complaint.py      Sun Oct 09 19:01:25 2022 +0200
@@ -10,6 +10,8 @@
 from trytond.model import (
     DeactivableMixin, ModelSQL, ModelView, Workflow, fields)
 from trytond.model.exceptions import AccessError
+from trytond.modules.company.model import (
+    employee_field, reset_employee, set_employee)
 from trytond.modules.currency.fields import Monetary
 from trytond.modules.product import price_digits
 from trytond.pool import Pool
@@ -50,7 +52,6 @@
         states={
             'readonly': _states['readonly'] | Eval('origin'),
             })
-    employee = fields.Many2One('company.employee', 'Employee', states=_states)
     type = fields.Many2One('sale.complaint.type', 'Type', required=True,
         states=_states)
     origin = fields.Reference('Origin', selection='get_origin',
@@ -105,6 +106,18 @@
                 | (If(~Eval('origin_id', 0), 0, Eval('origin_id', 0)) <= 0)),
             },
         depends={'origin_model'})
+    submitted_by = employee_field(
+        "Submitted By",
+        states=['waiting', 'approved', 'rejected', 'done', 'cancelled'])
+    approved_by = employee_field(
+        "Approved By",
+        states=['approved', 'rejected', 'done', 'cancelled'])
+    rejected_by = employee_field(
+        "Rejected By",
+        states=['approved', 'rejected', 'done', 'cancelled'])
+    cancelled_by = employee_field(
+        "Cancelled By",
+        states=['cancelled'])
     state = fields.Selection([
             ('draft', 'Draft'),
             ('waiting', 'Waiting'),
@@ -177,6 +190,11 @@
                 and not table_h.column_exist('number')):
             table_h.column_rename('reference', 'number')
 
+        # Migration from 6.4: rename employee into submitted_by
+        if (table_h.column_exist('employee')
+                and not table_h.column_exist('submitted_by')):
+            table_h.column_rename('employee', 'submitted_by')
+
         super(Complaint, cls).__register__(module_name)
 
     @classmethod
@@ -271,6 +289,10 @@
         else:
             default = default.copy()
         default.setdefault('number', None)
+        default.setdefault('submitted_by')
+        default.setdefault('approved_by')
+        default.setdefault('rejected_by')
+        default.setdefault('cancelled_by')
         return super(Complaint, cls).copy(complaints, default=default)
 
     @classmethod
@@ -285,24 +307,29 @@
     @classmethod
     @ModelView.button
     @Workflow.transition('cancelled')
+    @set_employee('cancelled_by')
     def cancel(cls, complaints):
         pass
 
     @classmethod
     @ModelView.button
     @Workflow.transition('draft')
+    @reset_employee(
+        'submitted_by', 'approved_by', 'rejected_by', 'cancelled_by')
     def draft(cls, complaints):
         pass
 
     @classmethod
     @ModelView.button
     @Workflow.transition('waiting')
+    @set_employee('submitted_by')
     def wait(cls, complaints):
         pass
 
     @classmethod
     @ModelView.button
     @Workflow.transition('approved')
+    @set_employee('approved_by')
     def approve(cls, complaints):
         pool = Pool()
         Configuration = pool.get('sale.configuration')
@@ -317,6 +344,7 @@
     @classmethod
     @ModelView.button
     @Workflow.transition('rejected')
+    @set_employee('rejected_by')
     def reject(cls, complaints):
         pass
 
diff -r ea6a6a9b72a5 -r 7132c833c6a3 view/complaint_form.xml
--- a/view/complaint_form.xml   Sun Oct 09 18:57:51 2022 +0200
+++ b/view/complaint_form.xml   Sun Oct 09 19:01:25 2022 +0200
@@ -13,10 +13,6 @@
     <field name="date"/>
     <notebook>
         <page string="Complaint" id="complaint">
-            <label name="company"/>
-            <field name="company"/>
-            <label name="employee"/>
-            <field name="employee"/>
             <label name="type"/>
             <field name="type" widget="selection"/>
             <label name="origin"/>
@@ -26,6 +22,21 @@
             <field name="description" colspan="2"/>
             <field name="actions" colspan="2"/>
         </page>
+        <page string="Other Info" id="other">
+            <label name="company"/>
+            <field name="company"/>
+            <newline/>
+
+            <label name="submitted_by"/>
+            <field name="submitted_by"/>
+            <label name="cancelled_by"/>
+            <field name="cancelled_by"/>
+
+            <label name="approved_by"/>
+            <field name="approved_by"/>
+            <label name="rejected_by"/>
+            <field name="rejected_by"/>
+        </page>
     </notebook>
     <label name="state"/>
     <field name="state"/>

Reply via email to