changeset c2029d4f397d in modules/account_tax_cash:4.8
details: 
https://hg.tryton.org/modules/account_tax_cash?cmd=changeset;node=c2029d4f397d
description:
        Update cash basis on reconciliation

        The reconciled lines must be added to the payment amount and 
reconciliation
        should trigger the update of cash basis via process call.

        issue8207
        review249121002
        (grafted from 7115dc98fd723ae7b577b4fcf47f7a96ddac2600)
diffstat:

 account.py |  34 ++++++++++++++++++++++++++--------
 1 files changed, 26 insertions(+), 8 deletions(-)

diffs (59 lines):

diff -r b2c2dacdda66 -r c2029d4f397d account.py
--- a/account.py        Tue Feb 19 22:46:36 2019 +0100
+++ b/account.py        Wed Mar 27 00:35:37 2019 +0100
@@ -257,7 +257,11 @@
             ratio = 0
         else:
             payment_amount = sum(
-                l.debit - l.credit for l in self.payment_lines)
+                l.debit - l.credit for l in self.payment_lines
+                if not l.reconciliation)
+            payment_amount -= sum(
+                l.debit - l.credit for l in self.lines_to_pay
+                if l.reconciliation)
             if amount:
                 ratio = abs(payment_amount / amount)
             else:
@@ -267,21 +271,35 @@
 
     @classmethod
     def write(cls, *args):
-        pool = Pool()
-        TaxLine = pool.get('account.tax.line')
-        Date = pool.get('ir.date')
-        Period = pool.get('account.period')
-
         super(Invoice, cls).write(*args)
 
         invoices = []
         actions = iter(args)
         for records, values in zip(actions, actions):
-            if ('payment_lines' in values
-                    or values.get('state') in {'paid', 'cancel', 'posted'}):
+            if 'payment_lines' in values:
                 invoices.extend(records)
         invoices = cls.browse(sum(args[0:None:2], []))
         invoices = [i for i in invoices if i.move]
+        cls._update_tax_cash_basis(invoices)
+
+    @classmethod
+    def process(cls, invoices):
+        super(Invoice, cls).process(invoices)
+        cls._update_tax_cash_basis(invoices)
+
+    @classmethod
+    @ModelView.button
+    @Workflow.transition('cancel')
+    def cancel(cls, invoices):
+        super(Invoice, cls).cancel(invoices)
+        cls._update_tax_cash_basis(invoices)
+
+    @classmethod
+    def _update_tax_cash_basis(cls, invoices):
+        pool = Pool()
+        TaxLine = pool.get('account.tax.line')
+        Date = pool.get('ir.date')
+        Period = pool.get('account.period')
 
         # Call update_cash_basis grouped per period and ratio only because
         # group_cash_basis_key already group per move_line.

Reply via email to