diff --git a/CHANGELOG b/CHANGELOG
index 1a2f2586ba..109f39374a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,4 @@
+* Add employee on complaint for some states
* Remove address on complaint
Version 6.4.0 - 2022-05-02
diff --git a/complaint.py b/complaint.py
index 5faf253ea6..d2b2c4e46d 100644
--- a/complaint.py
+++ b/complaint.py
@@ -10,6 +10,8 @@ from trytond.i18n import gettext
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 @@ class Complaint(Workflow, ModelSQL, ModelView):
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 @@ class Complaint(Workflow, ModelSQL, ModelView):
| (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 @@ class Complaint(Workflow, ModelSQL, ModelView):
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 @@ class Complaint(Workflow, ModelSQL, ModelView):
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 @@ class Complaint(Workflow, ModelSQL, ModelView):
@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 @@ class Complaint(Workflow, ModelSQL, ModelView):
@classmethod
@ModelView.button
@Workflow.transition('rejected')
+ @set_employee('rejected_by')
def reject(cls, complaints):
pass
diff --git a/view/complaint_form.xml b/view/complaint_form.xml
index 27a9cafc8a..e44a4dbe75 100644
--- a/view/complaint_form.xml
+++ b/view/complaint_form.xml
@@ -13,10 +13,6 @@ this repository contains the full copyright notices and license terms. -->
-
-
-
-
@@ -26,6 +22,21 @@ this repository contains the full copyright notices and license terms. -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+