[FIX] contract_price_revision: Skip revising lines that are not valid anymore

cherry-pick db5c3d6472
This commit is contained in:
Andrea
2020-02-14 16:57:54 +01:00
committed by Carlos Dauden
parent 02735b6609
commit d73aa24b4a

View File

@@ -25,12 +25,9 @@ class ContractPriceRevisionWizard(models.TransientModel):
def action_apply(self): def action_apply(self):
ContractLine = self.env['contract.line'] ContractLine = self.env['contract.line']
active_ids = self.env.context['active_ids'] active_ids = self.env.context.get('active_ids')
for line in self.env['contract.contract'].browse(active_ids).mapped( contracts = self.env['contract.contract'].browse(active_ids)
'contract_line_ids'): for line in self._get_contract_lines_to_revise(contracts):
if (line.automatic_price or line.successor_contract_line_id or
not line.recurring_next_date):
continue
line.update({ line.update({
'date_end': self.date_start - relativedelta(days=1), 'date_end': self.date_start - relativedelta(days=1),
}) })
@@ -52,3 +49,16 @@ class ContractPriceRevisionWizard(models.TransientModel):
'contract', 'action_customer_contract') 'contract', 'action_customer_contract')
action['domain'] = [('id', 'in', active_ids)] action['domain'] = [('id', 'in', active_ids)]
return action return action
def _get_contract_lines_to_revise(self, contracts):
self.ensure_one()
to_revise = (
contracts.mapped("contract_line_ids")
.filtered(
lambda x: not x.automatic_price
and not x.successor_contract_line_id
and x.recurring_next_date
and (not x.date_end or x.date_end >= self.date_start)
)
)
return to_revise