[FIX+IMP] contract: Several things

- Don't update recurring_next_date as computed
- Compute recurring_next_date for False values too + simplify compute as False values are already taken into account
  In get_next_invoice_date, False values are already taken into account, so, simplifying
  compute_recurring_next_date function.
- Add comment to remind updating method in next version
This commit is contained in:
Denis Roussel
2022-02-25 11:44:34 +01:00
committed by Christopher Rogos
parent 09be01e5f8
commit 88ddff2ebc
3 changed files with 44 additions and 39 deletions

View File

@@ -11,7 +11,7 @@
{
"name": "Recurring - Contracts Management",
"version": "15.0.1.1.1",
"version": "15.0.1.2.0",
"category": "Contract Management",
"license": "AGPL-3",
"author": "Tecnativa, ACSONE SA/NV, Odoo Community Association (OCA)",

View File

@@ -605,19 +605,12 @@ class ContractLine(models.Model):
return name
def _update_recurring_next_date(self):
# FIXME: Change method name according to real updated field
# e.g.: _update_last_date_invoiced()
for rec in self:
last_date_invoiced = rec.next_period_date_end
recurring_next_date = rec.get_next_invoice_date(
last_date_invoiced + relativedelta(days=1),
rec.recurring_invoicing_type,
rec.recurring_invoicing_offset,
rec.recurring_rule_type,
rec.recurring_interval,
max_date_end=rec.date_end,
)
rec.write(
{
"recurring_next_date": recurring_next_date,
"last_date_invoiced": last_date_invoiced,
}
)
@@ -689,16 +682,19 @@ class ContractLine(models.Model):
rec._prepare_value_for_stop(date_end, manual_renew_needed)
)
if post_message:
msg = _(
"""Contract line for <strong>%(product)s</strong>
msg = (
_(
"""Contract line for <strong>%(product)s</strong>
stopped: <br/>
- <strong>End</strong>: %(old_end)s -- %(new_end)s
"""
) % {
"product": rec.name,
"old_end": old_date_end,
"new_end": rec.date_end,
}
)
% {
"product": rec.name,
"old_end": old_date_end,
"new_end": rec.date_end,
}
)
rec.contract_id.message_post(body=msg)
else:
rec.write(
@@ -763,18 +759,21 @@ class ContractLine(models.Model):
rec.successor_contract_line_id = new_line
contract_line |= new_line
if post_message:
msg = _(
"""Contract line for <strong>%(product)s</strong>
msg = (
_(
"""Contract line for <strong>%(product)s</strong>
planned a successor: <br/>
- <strong>Start</strong>: %(new_date_start)s
<br/>
- <strong>End</strong>: %(new_date_end)s
"""
) % {
"product": rec.name,
"new_date_start": new_line.date_start,
"new_date_end": new_line.date_end,
}
)
% {
"product": rec.name,
"new_date_start": new_line.date_start,
"new_date_end": new_line.date_end,
}
)
rec.contract_id.message_post(body=msg)
return contract_line
@@ -866,18 +865,21 @@ class ContractLine(models.Model):
is_auto_renew,
post_message=False,
)
msg = _(
"""Contract line for <strong>%(product)s</strong>
msg = (
_(
"""Contract line for <strong>%(product)s</strong>
suspended: <br/>
- <strong>Suspension Start</strong>: %(new_date_start)s
<br/>
- <strong>Suspension End</strong>: %(new_date_end)s
"""
) % {
"product": rec.name,
"new_date_start": date_start,
"new_date_end": date_end,
}
)
% {
"product": rec.name,
"new_date_start": date_start,
"new_date_end": date_end,
}
)
rec.contract_id.message_post(body=msg)
return contract_line
@@ -1035,18 +1037,21 @@ class ContractLine(models.Model):
else:
new_line = rec._renew_extend_line(date_end)
res |= new_line
msg = _(
"""Contract line for <strong>%(product)s</strong>
msg = (
_(
"""Contract line for <strong>%(product)s</strong>
renewed: <br/>
- <strong>Start</strong>: %(new_date_start)s
<br/>
- <strong>End</strong>: %(new_date_end)s
"""
) % {
"product": rec.name,
"new_date_start": date_start,
"new_date_end": date_end,
}
)
% {
"product": rec.name,
"new_date_start": date_start,
"new_date_end": date_end,
}
)
rec.contract_id.message_post(body=msg)
return res

View File

@@ -93,7 +93,7 @@ class ContractRecurrencyMixin(models.AbstractModel):
@api.depends("next_period_date_start")
def _compute_recurring_next_date(self):
for rec in self.filtered("next_period_date_start"):
for rec in self:
rec.recurring_next_date = self.get_next_invoice_date(
rec.next_period_date_start,
rec.recurring_invoicing_type,