Do no copy lines when statement has origins
issue11182 review366631002
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -98,3 +98,7 @@ Test statement report::
|
||||
|
||||
>>> report = Report('account.statement')
|
||||
>>> _ = report.execute([statement], {})
|
||||
|
||||
Test copy statement::
|
||||
|
||||
>>> _ = statement.duplicate()
|
||||
|
||||
Reference in New Issue
Block a user