From cb83dc582041282351b0bcacacbd27dff3bb5692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 26 Mar 2022 12:17:01 +0100 Subject: [PATCH] Add approving employee on refunds issue11297 review356071002 --- CHANGELOG | 1 + payment.py | 16 ++++++++++++++++ view/refund_form.xml | 16 +++++++++------- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 37439fcba9..0a5dc9af9b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Add approving employee on refunds * Add setup intent expire delay * Add support for Python 3.10 * Remove support for Python 3.6 diff --git a/payment.py b/payment.py index f97844dd12..f9b59d4a6e 100644 --- a/payment.py +++ b/payment.py @@ -18,6 +18,8 @@ from trytond.model import ( DeactivableMixin, ModelSQL, ModelView, Workflow, dualmethod, fields) from trytond.modules.account_payment.exceptions import ( PaymentValidationError, ProcessError) +from trytond.modules.company.model import ( + employee_field, reset_employee, set_employee) from trytond.modules.currency.fields import Monetary from trytond.pool import Pool, PoolMeta from trytond.pyson import Eval @@ -688,6 +690,10 @@ class Refund(Workflow, ModelSQL, ModelView): 'readonly': Eval('state') != 'draft', }, depends=['state']) + approved_by = employee_field( + "Approved by", + states=['approved', 'processing', 'succeeded', 'failed']) + state = fields.Selection([ ('draft', "Draft"), ('approved', "Approved"), @@ -715,6 +721,9 @@ class Refund(Workflow, ModelSQL, ModelView): currency = fields.Function( fields.Many2One('currency.currency', "Currency"), 'on_change_with_currency') + company = fields.Function( + fields.Many2One('company.company', "Company"), + 'on_change_with_company') @classmethod def __setup__(cls): @@ -752,6 +761,11 @@ class Refund(Workflow, ModelSQL, ModelView): if self.payment and self.payment.currency: return self.payment.currency.id + @fields.depends('payment', '_parent_payment.company') + def on_change_with_company(self, name=None): + if self.payment and self.payment.company: + return self.payment.company.id + @classmethod def default_state(cls): return 'draft' @@ -781,12 +795,14 @@ class Refund(Workflow, ModelSQL, ModelView): @classmethod @ModelView.button @Workflow.transition('draft') + @reset_employee('approved_by') def draft(cls, refunds): pass @classmethod @ModelView.button @Workflow.transition('approved') + @set_employee('approved_by') def approve(cls, refunds): pass diff --git a/view/refund_form.xml b/view/refund_form.xml index aea987a0d7..8d0f5d6ea6 100644 --- a/view/refund_form.xml +++ b/view/refund_form.xml @@ -19,12 +19,14 @@ this repository contains the full copyright notices and license terms. -->