changeset 4a7701368f61 in modules/account_statement:default
details: 
https://hg.tryton.org/modules/account_statement?cmd=changeset&node=4a7701368f61
description:
        Do no copy lines when statement has origins

        issue11182
        review366631002
diffstat:

 statement.py                        |  20 ++++++++++++++++++++
 tests/scenario_statement_origin.rst |   4 ++++
 2 files changed, 24 insertions(+), 0 deletions(-)

diffs (48 lines):

diff -r e8967555ced0 -r 4a7701368f61 statement.py
--- a/statement.py      Sun Jan 30 13:06:39 2022 +0100
+++ b/statement.py      Sun Jan 30 13:16:08 2022 +0100
@@ -651,6 +651,20 @@
     def reconcile(cls, statements):
         pass
 
+    @classmethod
+    def copy(cls, statements, default=None):
+        default = default.copy() if default is not None else {}
+        new_statements = []
+        for origins, sub_statements in groupby(
+                statements, key=lambda s: bool(s.origins)):
+            sub_statements = list(sub_statements)
+            sub_default = default.copy()
+            if origins:
+                sub_default.setdefault('lines')
+            new_statements.extend(super().copy(
+                    statements, default=sub_default))
+        return new_statements
+
 
 def origin_mixin(_states, _depends):
     class Mixin:
@@ -1125,6 +1139,12 @@
                 group_by=table.id))
         return [('id', 'in', query)]
 
+    @classmethod
+    def copy(cls, origins, default=None):
+        default = default.copy() if default is not None else {}
+        default.setdefault('lines')
+        return super().copy(origins, default=default)
+
 
 del _states, _depends
 
diff -r e8967555ced0 -r 4a7701368f61 tests/scenario_statement_origin.rst
--- a/tests/scenario_statement_origin.rst       Sun Jan 30 13:06:39 2022 +0100
+++ b/tests/scenario_statement_origin.rst       Sun Jan 30 13:16:08 2022 +0100
@@ -98,3 +98,7 @@
 
     >>> report = Report('account.statement')
     >>> _ = report.execute([statement], {})
+
+Test copy statement::
+
+    >>> _ = statement.duplicate()

Reply via email to