Do no copy lines when statement has origins

issue11182
review366631002
This commit is contained in:
Cédric Krier
2022-01-30 13:16:08 +01:00
parent 0ed30642a2
commit 6f77dffeb3
2 changed files with 24 additions and 0 deletions
+20
View File
@@ -651,6 +651,20 @@ class Statement(Workflow, ModelSQL, ModelView):
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 @@ class Origin(origin_mixin(_states, _depends), ModelSQL, ModelView):
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
+4
View File
@@ -98,3 +98,7 @@ Test statement report::
>>> report = Report('account.statement')
>>> _ = report.execute([statement], {})
Test copy statement::
>>> _ = statement.duplicate()