Merge PR #445 into 12.0

Signed-off-by sbejaoui
This commit is contained in:
OCA-git-bot
2020-01-07 15:34:29 +00:00
2 changed files with 39 additions and 9 deletions

View File

@@ -540,7 +540,7 @@ class ContractLine(models.Model):
def _onchange_date_start(self):
for rec in self.filtered('date_start'):
rec.recurring_next_date = self.get_next_invoice_date(
rec.date_start,
rec.next_period_date_start,
rec.recurring_invoicing_type,
rec.recurring_invoicing_offset,
rec.recurring_rule_type,
@@ -808,6 +808,23 @@ class ContractLine(models.Model):
"recurring_next_date": new_recurring_next_date,
})
@api.multi
def _prepare_value_for_stop(self, date_end, manual_renew_needed):
self.ensure_one()
return {
'date_end': date_end,
'is_auto_renew': False,
'manual_renew_needed': manual_renew_needed,
'recurring_next_date': self.get_next_invoice_date(
self.next_period_date_start,
self.recurring_invoicing_type,
self.recurring_invoicing_offset,
self.recurring_rule_type,
self.recurring_interval,
max_date_end=date_end,
),
}
@api.multi
def stop(self, date_end, manual_renew_needed=False, post_message=True):
"""
@@ -824,14 +841,11 @@ class ContractLine(models.Model):
else:
if not rec.date_end or rec.date_end > date_end:
old_date_end = rec.date_end
values = {
'date_end': date_end,
'is_auto_renew': False,
'manual_renew_needed': manual_renew_needed,
}
if rec.last_date_invoiced == date_end:
values['recurring_next_date'] = False
rec.write(values)
rec.write(
rec._prepare_value_for_stop(
date_end, manual_renew_needed
)
)
if post_message:
msg = _(
"""Contract line for <strong>{product}</strong>

View File

@@ -2315,3 +2315,19 @@ class TestContract(TestContractBase):
'recurring_next_date': '2019-01-01',
'last_date_invoiced': '2019-06-01',
})
def test_stop_and_update_recurring_invoice_date(self):
self.acct_line.write(
{
'date_start': '2019-01-01',
'date_end': '2019-12-31',
'recurring_next_date': '2020-01-01',
'recurring_invoicing_type': 'post-paid',
'recurring_rule_type': 'yearly',
}
)
self.acct_line.stop(to_date('2019-05-31'))
self.assertEqual(self.acct_line.date_end, to_date('2019-05-31'))
self.assertEqual(
self.acct_line.recurring_next_date, to_date('2019-06-01')
)