|
|
for stmt in self.sorted(lambda x: x.first_line_index or '0'):
journal_id = stmt.journal_id.id or stmt.line_ids.journal_id.id
previous_line_with_statement = self.env['account.bank.statement.line'].search([
('internal_index', '<', stmt.first_line_index),
('journal_id', '=', journal_id),
('state', '=', 'posted'),
('statement_id', '!=', False),
], limit=1)
balance_start = previous_line_with_statement.statement_id.balance_end_real
lines_in_between_domain = [
('internal_index', '<', stmt.first_line_index),
('journal_id', '=', journal_id),
('state', '=', 'posted'),
]
if previous_line_with_statement:
lines_in_between_domain.append(('internal_index', '>', previous_line_with_statement.internal_index))
# remove lines from previous statement (when multi-editing a line already in another statement)
previous_st_lines = previous_line_with_statement.statement_id.line_ids
lines_in_common = previous_st_lines.filtered(lambda l: l.id in stmt.line_ids._origin.ids)
balance_start -= sum(lines_in_common.mapped('amount'))
lines_in_between = self.env['account.bank.statement.line'].search(lines_in_between_domain)
balance_start += sum(lines_in_between.mapped('amount'))
stmt.balance_start = balance_start
|
|