[IMP] Add INVOICEMONTHNAME marker to line description

This commit is contained in:
stenex
2023-05-08 17:27:06 +02:00
parent 1cce6eccbf
commit 7b896a0d5f
5 changed files with 39 additions and 3 deletions

View File

@@ -616,6 +616,23 @@ class ContractLine(models.Model):
) )
return first_date_invoiced, last_date_invoiced, recurring_next_date return first_date_invoiced, last_date_invoiced, recurring_next_date
def _translate_marker_month_name(self, month_name):
months = {
"January": _("January"),
"February": _("February"),
"March": _("March"),
"April": _("April"),
"May": _("May"),
"June": _("June"),
"July": _("July"),
"August": _("August"),
"September": _("September"),
"October": _("October"),
"November": _("November"),
"December": _("December"),
}
return months[month_name]
def _insert_markers(self, first_date_invoiced, last_date_invoiced): def _insert_markers(self, first_date_invoiced, last_date_invoiced):
self.ensure_one() self.ensure_one()
lang_obj = self.env["res.lang"] lang_obj = self.env["res.lang"]
@@ -624,6 +641,12 @@ class ContractLine(models.Model):
name = self.name name = self.name
name = name.replace("#START#", first_date_invoiced.strftime(date_format)) name = name.replace("#START#", first_date_invoiced.strftime(date_format))
name = name.replace("#END#", last_date_invoiced.strftime(date_format)) name = name.replace("#END#", last_date_invoiced.strftime(date_format))
name = name.replace(
"#INVOICEMONTHNAME#",
self.with_context(lang=lang.code)._translate_marker_month_name(
first_date_invoiced.strftime("%B")
),
)
return name return name
def _update_recurring_next_date(self): def _update_recurring_next_date(self):

View File

@@ -10,8 +10,8 @@
* the recurrence parameters: interval (days, weeks, months, months last day or years), * the recurrence parameters: interval (days, weeks, months, months last day or years),
start date, date of next invoice (automatically computed, can be modified) and end date (optional) start date, date of next invoice (automatically computed, can be modified) and end date (optional)
* auto-price, for having a price automatically obtained from the price list * auto-price, for having a price automatically obtained from the price list
* #START# or #END# in the description field to display the start/end date of * #START# - #END# or #INVOICEMONTHNAME# in the description field to display
the invoiced period in the invoice line description the start/end date or the start month of the invoiced period in the invoice line description
* pre-paid (invoice at period start) or post-paid (invoice at start of next period) * pre-paid (invoice at period start) or post-paid (invoice at start of next period)
#. The "Generate Recurring Invoices from Contracts" cron runs daily to generate the invoices. #. The "Generate Recurring Invoices from Contracts" cron runs daily to generate the invoices.

View File

@@ -150,7 +150,7 @@ class TestContractBase(common.SavepointCase):
0, 0,
{ {
"product_id": False, "product_id": False,
"name": "Header for Services", "name": "Header for #INVOICEMONTHNAME# Services",
"display_type": "line_section", "display_type": "line_section",
}, },
), ),
@@ -2453,3 +2453,7 @@ class TestContract(TestContractBase):
self.acct_line.uom_id = uom_day.id self.acct_line.uom_id = uom_day.id
self.acct_line.refresh() self.acct_line.refresh()
self.assertEqual(self.acct_line.price_unit, 30.75 * 8) self.assertEqual(self.acct_line.price_unit, 30.75 * 8)
def test_check_month_name_marker(self):
invoice_id = self.contract3.recurring_create_invoice()
self.assertEqual(invoice_id.invoice_line_ids[0].name, "Header for May Services")

View File

@@ -466,6 +466,13 @@
the the
invoiced period invoiced period
</p> </p>
<p colspan="2">
<strong>#INVOICEMONTHNAME#</strong>
: Invoice month name
of
the
invoiced period
</p>
</group> </group>
</page> </page>
</notebook> </notebook>

View File

@@ -68,6 +68,8 @@
> >
<p> <strong>#START#</strong>: Start date of the invoiced period</p> <p> <strong>#START#</strong>: Start date of the invoiced period</p>
<p> <strong>#END#</strong>: End date of the invoiced period</p> <p> <strong>#END#</strong>: End date of the invoiced period</p>
<p> <strong
>#INVOICEMONTHNAME#</strong>: Invoice month name of the invoiced period</p>
</group> </group>
</form> </form>
</field> </field>