changeset 994ab0494b59 in modules/account_payment:default
details: 
https://hg.tryton.org/modules/account_payment?cmd=changeset&node=994ab0494b59
description:
        Add employee on payments for some states

        issue9677
        review359451002
diffstat:

 CHANGELOG                          |   2 ++
 payment.py                         |  18 +++++++++++++++++-
 tests/scenario_account_payment.rst |  21 ++++++++++++++++++++-
 view/payment_form.xml              |   7 +++++++
 4 files changed, 46 insertions(+), 2 deletions(-)

diffs (153 lines):

diff -r ac6d7bc33d63 -r 994ab0494b59 CHANGELOG
--- a/CHANGELOG Sat Apr 10 23:46:23 2021 +0200
+++ b/CHANGELOG Sun Apr 11 10:48:26 2021 +0200
@@ -1,3 +1,5 @@
+* Add employee on payments for some states
+
 Version 5.8.0 - 2020-11-02
 * Bug fixes (see mercurial logs for details)
 * Remove support for Python 3.5
diff -r ac6d7bc33d63 -r 994ab0494b59 payment.py
--- a/payment.py        Sat Apr 10 23:46:23 2021 +0200
+++ b/payment.py        Sun Apr 11 10:48:26 2021 +0200
@@ -17,7 +17,8 @@
 from trytond.tools import sortable_values
 from trytond.wizard import Wizard, StateView, StateAction, Button
 from trytond.pool import Pool
-
+from trytond.modules.company.model import (
+    employee_field, set_employee, reset_employee)
 from .exceptions import OverpayWarning
 
 KINDS = [
@@ -311,6 +312,14 @@
     process_method = fields.Function(
         fields.Selection('get_process_methods', "Process Method"),
         'on_change_with_process_method', searcher='search_process_method')
+    approved_by = employee_field(
+        "Approved by",
+        states=['approved', 'processing', 'succeeded', 'failed'])
+    succeeded_by = employee_field(
+        "Success Noted by", states=['succeeded', 'processing'])
+    failed_by = employee_field(
+        "Failure Noted by",
+        states=['failed', 'processing'])
     state = fields.Selection([
             ('draft', 'Draft'),
             ('approved', 'Approved'),
@@ -446,6 +455,9 @@
         else:
             default = default.copy()
         default.setdefault('group', None)
+        default.setdefault('approved_by')
+        default.setdefault('succeeded_by')
+        default.setdefault('failed_by')
         return super().copy(payments, default=default)
 
     @classmethod
@@ -460,12 +472,14 @@
     @classmethod
     @ModelView.button
     @Workflow.transition('draft')
+    @reset_employee('approved_by', 'succeeded_by', 'failed_by')
     def draft(cls, payments):
         pass
 
     @classmethod
     @ModelView.button
     @Workflow.transition('approved')
+    @set_employee('approved_by')
     def approve(cls, payments):
         pass
 
@@ -497,12 +511,14 @@
     @classmethod
     @ModelView.button
     @Workflow.transition('succeeded')
+    @set_employee('succeeded_by')
     def succeed(cls, payments):
         pass
 
     @classmethod
     @ModelView.button
     @Workflow.transition('failed')
+    @set_employee('failed_by')
     def fail(cls, payments):
         pass
 
diff -r ac6d7bc33d63 -r 994ab0494b59 tests/scenario_account_payment.rst
--- a/tests/scenario_account_payment.rst        Sat Apr 10 23:46:23 2021 +0200
+++ b/tests/scenario_account_payment.rst        Sun Apr 11 10:48:26 2021 +0200
@@ -22,6 +22,20 @@
     >>> _ = create_company()
     >>> company = get_company()
 
+Set employee::
+
+    >>> User = Model.get('res.user')
+    >>> Party = Model.get('party.party')
+    >>> Employee = Model.get('company.employee')
+    >>> employee_party = Party(name="Employee")
+    >>> employee_party.save()
+    >>> employee = Employee(party=employee_party)
+    >>> employee.save()
+    >>> user = User(config.user)
+    >>> user.employees.append(employee)
+    >>> user.employee = employee
+    >>> user.save()
+
 Create fiscal year::
 
     >>> fiscalyear = create_fiscalyear(company)
@@ -46,7 +60,6 @@
 
 Create parties::
 
-    >>> Party = Model.get('party.party')
     >>> customer = Party(name='Customer')
     >>> customer.save()
     >>> supplier = Party(name='Supplier')
@@ -81,6 +94,8 @@
     Decimal('50.00')
     >>> payment.amount = Decimal('20.00')
     >>> payment.click('approve')
+    >>> payment.approved_by == employee
+    True
     >>> payment.state
     'approved'
     >>> process_payment = Wizard('account.payment.process', [payment])
@@ -106,6 +121,8 @@
 Success the payment and recheck the payment group::
 
     >>> payment.click('succeed')
+    >>> payment.succeeded_by == employee
+    True
     >>> payment.state
     'succeeded'
     >>> group.reload()
@@ -139,6 +156,8 @@
     Decimal('0.00')
     >>> payment.reload()
     >>> payment.click('fail')
+    >>> payment.failed_by == employee
+    True
     >>> payment.state
     'failed'
     >>> payment.group.payment_complete
diff -r ac6d7bc33d63 -r 994ab0494b59 view/payment_form.xml
--- a/view/payment_form.xml     Sat Apr 10 23:46:23 2021 +0200
+++ b/view/payment_form.xml     Sun Apr 11 10:48:26 2021 +0200
@@ -28,6 +28,13 @@
             <field name="group"/>
             <label name="origin"/>
             <field name="origin"/>
+            <newline/>
+            <label name="approved_by"/>
+            <field name="approved_by"/>
+            <label name="succeeded_by"/>
+            <field name="succeeded_by"/>
+            <label name="failed_by"/>
+            <field name="failed_by"/>
         </page>
     </notebook>
     <group col="4" colspan="4" id="state_buttons">

Reply via email to