Skip to content

Commit 8b9a854

Browse files
author
bosd
committed
Fixup
1 parent 00d86c8 commit 8b9a854

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

contract_invoice_offset/models/contract.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,21 @@ def _compute_recurring_next_date(self):
4242
and contract._origin.date_start != contract.date_start
4343
or not recurring_next_date
4444
):
45+
kwargs = {
46+
"invoicing_offset_type": contract.invoicing_offset_type,
47+
"invoicing_offset_value": contract.invoicing_offset_value,
48+
}
49+
if hasattr(contract, "align_billing_cycle"):
50+
kwargs["align_billing_cycle"] = contract.align_billing_cycle
51+
4552
contract.recurring_next_date = self.get_next_invoice_date(
4653
contract.next_period_date_start,
4754
contract.recurring_invoicing_type,
4855
contract.recurring_invoicing_offset,
4956
contract.recurring_rule_type,
5057
contract.recurring_interval,
5158
max_date_end=contract.date_end,
52-
invoicing_offset_type=contract.invoicing_offset_type,
53-
invoicing_offset_value=contract.invoicing_offset_value,
59+
**kwargs,
5460
)
5561
else:
5662
contract.recurring_next_date = min(recurring_next_date)
@@ -70,6 +76,13 @@ def _compute_next_period_date_end(self):
7076
"""Compute the end date of the next billing period."""
7177
# Override to pass offset settings
7278
for rec in self:
79+
kwargs = {
80+
"invoicing_offset_type": rec.invoicing_offset_type,
81+
"invoicing_offset_value": rec.invoicing_offset_value,
82+
}
83+
if hasattr(rec, "align_billing_cycle"):
84+
kwargs["align_billing_cycle"] = rec.align_billing_cycle
85+
7386
rec.next_period_date_end = self.get_next_period_date_end(
7487
rec.next_period_date_start,
7588
rec.recurring_rule_type,
@@ -78,6 +91,5 @@ def _compute_next_period_date_end(self):
7891
next_invoice_date=rec.recurring_next_date,
7992
recurring_invoicing_type=rec.recurring_invoicing_type,
8093
recurring_invoicing_offset=rec.recurring_invoicing_offset,
81-
invoicing_offset_type=rec.invoicing_offset_type,
82-
invoicing_offset_value=rec.invoicing_offset_value,
94+
**kwargs,
8395
)

contract_invoice_offset/models/contract_line.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ class ContractLine(models.Model):
2222
)
2323
def _compute_next_period_date_end(self):
2424
for rec in self:
25+
kwargs = {
26+
"invoicing_offset_type": rec.contract_id.invoicing_offset_type,
27+
"invoicing_offset_value": rec.contract_id.invoicing_offset_value,
28+
}
29+
if hasattr(rec.contract_id, "align_billing_cycle"):
30+
kwargs["align_billing_cycle"] = rec.contract_id.align_billing_cycle
31+
2532
rec.next_period_date_end = self.get_next_period_date_end(
2633
rec.next_period_date_start,
2734
rec.recurring_rule_type,
@@ -30,8 +37,7 @@ def _compute_next_period_date_end(self):
3037
next_invoice_date=rec.recurring_next_date,
3138
recurring_invoicing_type=rec.recurring_invoicing_type,
3239
recurring_invoicing_offset=rec.recurring_invoicing_offset,
33-
invoicing_offset_type=rec.contract_id.invoicing_offset_type,
34-
invoicing_offset_value=rec.contract_id.invoicing_offset_value,
40+
**kwargs,
3541
)
3642

3743
@api.depends(
@@ -48,15 +54,21 @@ def _compute_recurring_next_date(self):
4854
# Override to look at contract_id for offset settings,
4955
# since lines don't (typically) have these fields themselves set independently.
5056
for rec in self:
57+
kwargs = {
58+
"invoicing_offset_type": rec.contract_id.invoicing_offset_type,
59+
"invoicing_offset_value": rec.contract_id.invoicing_offset_value,
60+
}
61+
if hasattr(rec.contract_id, "align_billing_cycle"):
62+
kwargs["align_billing_cycle"] = rec.contract_id.align_billing_cycle
63+
5164
rec.recurring_next_date = self.get_next_invoice_date(
5265
rec.next_period_date_start,
5366
rec.recurring_invoicing_type,
5467
rec.recurring_invoicing_offset,
5568
rec.recurring_rule_type,
5669
rec.recurring_interval,
5770
max_date_end=rec.date_end,
58-
invoicing_offset_type=rec.contract_id.invoicing_offset_type,
59-
invoicing_offset_value=rec.contract_id.invoicing_offset_value,
71+
**kwargs,
6072
)
6173

6274
@api.constrains("recurring_next_date", "date_start")

contract_invoice_offset/models/contract_recurring_mixin.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def get_next_invoice_date(
3636
max_date_end,
3737
invoicing_offset_type="days",
3838
invoicing_offset_value=0,
39+
**kwargs,
3940
):
4041
"""Compute the date of the next invoice based on all parameters,
4142
including flexible offsets.
@@ -45,6 +46,9 @@ def get_next_invoice_date(
4546
recurring_rule_type,
4647
recurring_interval,
4748
max_date_end=max_date_end,
49+
invoicing_offset_type=invoicing_offset_type,
50+
invoicing_offset_value=invoicing_offset_value,
51+
**kwargs,
4852
)
4953
if not next_period_date_end:
5054
return False
@@ -82,6 +86,7 @@ def get_next_period_date_end(
8286
recurring_invoicing_offset=False,
8387
invoicing_offset_type="days",
8488
invoicing_offset_value=0,
89+
**kwargs,
8590
):
8691
"""Compute the end date for the next period, supporting flexible
8792
reverse calculation."""

0 commit comments

Comments
 (0)