changeset cbca58c85330 in modules/account_payment:default
details: 
https://hg.tryton.org/modules/account_payment?cmd=changeset&node=cbca58c85330
description:
        Use reference field for statement line relation

        issue6854
        review367971002
diffstat:

 CHANGELOG   |   1 +
 __init__.py |   3 +++
 account.py  |  59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 tryton.cfg  |   1 +
 4 files changed, 63 insertions(+), 1 deletions(-)

diffs (108 lines):

diff -r e8595979f961 -r cbca58c85330 CHANGELOG
--- a/CHANGELOG Tue Feb 15 00:08:47 2022 +0100
+++ b/CHANGELOG Wed Feb 23 00:01:17 2022 +0100
@@ -1,3 +1,4 @@
+* Use reference field for statement line relation
 * Do not create dunning for line with pending payment
 * Add support for Python 3.10
 * Remove support for Python 3.6
diff -r e8595979f961 -r cbca58c85330 __init__.py
--- a/__init__.py       Tue Feb 15 00:08:47 2022 +0100
+++ b/__init__.py       Wed Feb 23 00:01:17 2022 +0100
@@ -25,6 +25,9 @@
         account.Invoice,
         module='account_payment', type_='model', depends=['account_invoice'])
     Pool.register(
+        account.StatementLine,
+        module='account_payment', type_='model', depends=['account_statement'])
+    Pool.register(
         account.Dunning,
         module='account_payment', type_='model', depends=['account_dunning'])
     Pool.register(
diff -r e8595979f961 -r cbca58c85330 account.py
--- a/account.py        Tue Feb 15 00:08:47 2022 +0100
+++ b/account.py        Wed Feb 23 00:01:17 2022 +0100
@@ -14,7 +14,7 @@
 from trytond.modules.company.model import CompanyValueMixin
 from trytond.modules.currency.fields import Monetary
 from trytond.pool import Pool, PoolMeta
-from trytond.pyson import Eval, Id
+from trytond.pyson import Bool, Eval, Id, If
 from trytond.tools.multivalue import migrate_property
 from trytond.transaction import Transaction
 from trytond.wizard import (
@@ -569,6 +569,63 @@
         return amounts
 
 
+class StatementLine(metaclass=PoolMeta):
+    __name__ = 'account.statement.line'
+
+    @classmethod
+    def __setup__(cls):
+        super().__setup__()
+        cls.related_to.domain['account.payment'] = [
+            ('company', '=', Eval('company', -1)),
+            If(Bool(Eval('party')),
+                ('party', '=', Eval('party')),
+                ()),
+            ('state', 'in', ['processing', 'succeeded', 'failed']),
+            ('currency', '=', Eval('currency', -1)),
+            ('kind', '=',
+                If(Eval('amount', 0) > 0, 'receivable',
+                    If(Eval('amount', 0) < 0, 'payable', ''))),
+            ]
+        cls.related_to.search_order['account.payment'] = [
+            ('amount', 'ASC'),
+            ('state', 'ASC'),
+            ]
+        cls.related_to.search_context.update({
+                'amount_order': Eval('amount', 0),
+                })
+        for field in ['company', 'party', 'currency', 'amount']:
+            if field not in cls.related_to.depends:
+                cls.related_to.depends.append(field)
+
+    @classmethod
+    def _get_relations(cls):
+        return super()._get_relations() + ['account.payment']
+
+    @property
+    @fields.depends('related_to')
+    def payment(self):
+        pool = Pool()
+        Payment = pool.get('account.payment')
+        related_to = getattr(self, 'related_to', None)
+        if isinstance(related_to, Payment) and related_to.id >= 0:
+            return related_to
+
+    @payment.setter
+    def payment(self, value):
+        self.related_to = value
+
+    @fields.depends(
+        'party', 'statement', '_parent_statement.journal',
+        methods=['payment'])
+    def on_change_related_to(self):
+        super().on_change_related_to()
+        if self.payment:
+            if not self.party:
+                self.party = self.payment.party
+            if self.payment.line:
+                self.account = self.payment.line.account
+
+
 class Dunning(metaclass=PoolMeta):
     __name__ = 'account.dunning'
 
diff -r e8595979f961 -r cbca58c85330 tryton.cfg
--- a/tryton.cfg        Tue Feb 15 00:08:47 2022 +0100
+++ b/tryton.cfg        Wed Feb 23 00:01:17 2022 +0100
@@ -10,6 +10,7 @@
 extras_depend:
     account_dunning
     account_invoice
+    account_statement
 xml:
     payment.xml
     account.xml

Reply via email to