diff --git a/contract/README.rst b/contract/README.rst index 84b6a6ba1..694e69915 100644 --- a/contract/README.rst +++ b/contract/README.rst @@ -63,8 +63,8 @@ Usage * 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) * 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 - the invoiced period in the invoice line description + * #START# - #END# or #INVOICEMONTHNAME# in the description field to display + 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) #. The "Generate Recurring Invoices from Contracts" cron runs daily to generate the invoices. diff --git a/contract/i18n/contract.pot b/contract/i18n/contract.pot index 075ab4a33..063ee7fe9 100644 --- a/contract/i18n/contract.pot +++ b/contract/i18n/contract.pot @@ -106,6 +106,23 @@ msgstr "" msgid "#END#: End date of the invoiced period" msgstr "" +#. module: contract +#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view +msgid "" +"#INVOICEMONTHNAME#\n" +" : Invoice month name\n" +" of\n" +" the\n" +" invoiced period" +msgstr "" + +#. module: contract +#: model_terms:ir.ui.view,arch_db:contract.contract_template_form_view +msgid "" +"#INVOICEMONTHNAME#: Invoice month name of the invoiced " +"period" +msgstr "" + #. module: contract #: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view msgid "" @@ -313,6 +330,13 @@ msgstr "" msgid "Analytic Precision" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "April" +msgstr "" + #. module: contract #: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view #: model_terms:ir.ui.view,arch_db:contract.contract_contract_search_view @@ -345,6 +369,13 @@ msgstr "" msgid "Attachment Count" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "August" +msgstr "" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__is_auto_renew #: model:ir.model.fields,field_description:contract.field_contract_line__is_auto_renew @@ -930,6 +961,13 @@ msgstr "" msgid "Day(s)" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "December" +msgstr "" + #. module: contract #: model:ir.model.fields,help:contract.field_contract_abstract_contract_line__note_invoicing_mode #: model:ir.model.fields,help:contract.field_contract_line__note_invoicing_mode @@ -1012,6 +1050,13 @@ msgid "" "%(ue)s" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "February" +msgstr "" + #. module: contract #: model_terms:ir.ui.view,arch_db:contract.contract_contract_search_view msgid "Finished" @@ -1240,6 +1285,13 @@ msgstr "" msgid "Is suspension without end date" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "January" +msgstr "" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_abstract_contract__journal_id #: model:ir.model.fields,field_description:contract.field_contract_contract__journal_id @@ -1258,6 +1310,20 @@ msgstr "" msgid "Journal Item" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "July" +msgstr "" + +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "June" +msgstr "" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__last_date_invoiced #: model:ir.model.fields,field_description:contract.field_contract_contract__last_date_invoiced @@ -1343,6 +1409,13 @@ msgstr "" msgid "Manually Invoice Sale Contracts" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "March" +msgstr "" + #. module: contract #: model:ir.model.fields,help:contract.field_contract_abstract_contract__line_recurrence #: model:ir.model.fields,help:contract.field_contract_contract__line_recurrence @@ -1352,6 +1425,13 @@ msgid "" "all together for the whole contract." msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "May" +msgstr "" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_contract__message_has_error msgid "Message Delivery error" @@ -1475,6 +1555,13 @@ msgstr "" msgid "Notes" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "November" +msgstr "" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_contract__message_needaction_counter msgid "Number of Actions" @@ -1509,6 +1596,13 @@ msgstr "" msgid "Number of messages with delivery error" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "October" +msgstr "" + #. module: contract #: model:ir.model.fields,field_description:contract.field_account_bank_statement_line__old_contract_id #: model:ir.model.fields,field_description:contract.field_account_move__old_contract_id @@ -1780,6 +1874,13 @@ msgstr "" msgid "Sent" msgstr "" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "September" +msgstr "" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__sequence #: model:ir.model.fields,field_description:contract.field_contract_line__sequence diff --git a/contract/i18n/es.po b/contract/i18n/es.po index c93aee6cf..f684bcca1 100644 --- a/contract/i18n/es.po +++ b/contract/i18n/es.po @@ -231,6 +231,29 @@ msgstr "" msgid "#END#: End date of the invoiced period" msgstr "#END#: Fecha fin del periodo facturado" +#. module: contract +#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view +msgid "" +"#INVOICEMONTHNAME#\n" +" : Invoice month name\n" +" of\n" +" the\n" +" invoiced period" +msgstr "" +"#INVOICEMONTHNAME#\n" +" : Nombe del mes\n" +" del\n" +" periodo facturado" + +#. module: contract +#: model_terms:ir.ui.view,arch_db:contract.contract_template_form_view +msgid "" +"#INVOICEMONTHNAME#: Invoice month name of the invoiced " +"period" +msgstr "" +"#INVOICEMONTHNAME#: FechaNombre del mes del periodo " +"facturado" + #. module: contract #: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view msgid "" @@ -444,6 +467,13 @@ msgstr "Búsqueda de distribución analítica" msgid "Analytic Precision" msgstr "Precisión analítica" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "April" +msgstr "Abril" + #. module: contract #: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view #: model_terms:ir.ui.view,arch_db:contract.contract_contract_search_view @@ -476,6 +506,13 @@ msgstr "Socio asociado" msgid "Attachment Count" msgstr "Nº de archivos adjuntos" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "August" +msgstr "Agosto" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__is_auto_renew #: model:ir.model.fields,field_description:contract.field_contract_line__is_auto_renew @@ -1092,6 +1129,13 @@ msgstr "Fecha de siguiente factura" msgid "Day(s)" msgstr "Día(s)" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "December" +msgstr "Diciembre" + #. module: contract #: model:ir.model.fields,help:contract.field_contract_abstract_contract_line__note_invoicing_mode #: model:ir.model.fields,help:contract.field_contract_line__note_invoicing_mode @@ -1182,6 +1226,13 @@ msgstr "" "Fallo al procesar el contrato %(name)s [id: %(id)s]:\n" "%(ue)s" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "February" +msgstr "Febrero" + #. module: contract #: model_terms:ir.ui.view,arch_db:contract.contract_contract_search_view msgid "Finished" @@ -1418,6 +1469,13 @@ msgstr "Es nota recurrente" msgid "Is suspension without end date" msgstr "Es suspensión sin fecha de finalización" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "January" +msgstr "Enero" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_abstract_contract__journal_id #: model:ir.model.fields,field_description:contract.field_contract_contract__journal_id @@ -1436,6 +1494,20 @@ msgstr "Entrada diaria" msgid "Journal Item" msgstr "Apunte contable" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "July" +msgstr "Julio" + +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "June" +msgstr "Junio" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__last_date_invoiced #: model:ir.model.fields,field_description:contract.field_contract_contract__last_date_invoiced @@ -1522,6 +1594,13 @@ msgstr "Facturar manualmente contratos de compra" msgid "Manually Invoice Sale Contracts" msgstr "Facturar manualmente contratos de venta" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "March" +msgstr "Marzo" + #. module: contract #: model:ir.model.fields,help:contract.field_contract_abstract_contract__line_recurrence #: model:ir.model.fields,help:contract.field_contract_contract__line_recurrence @@ -1533,6 +1612,13 @@ msgstr "" "Marque esta casilla si desea controlar la recurrencia a nivel de línea en " "lugar de todos juntos para todo el contrato." +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "May" +msgstr "Mayo" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_contract__message_has_error msgid "Message Delivery error" @@ -1656,6 +1742,13 @@ msgstr "Modo de facturación de la nota" msgid "Notes" msgstr "Notas" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "November" +msgstr "Noviembre" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_contract__message_needaction_counter msgid "Number of Actions" @@ -1692,6 +1785,13 @@ msgstr "Número de mensajes que requieren una acción" msgid "Number of messages with delivery error" msgstr "Número de mensajes con error de entrega" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "October" +msgstr "Octubre" + #. module: contract #: model:ir.model.fields,field_description:contract.field_account_bank_statement_line__old_contract_id #: model:ir.model.fields,field_description:contract.field_account_move__old_contract_id @@ -1964,6 +2064,13 @@ msgstr "Enviar por correo electrónico" msgid "Sent" msgstr "Enviado" +#. module: contract +#. odoo-python +#: code:addons/contract/models/contract_line.py:0 +#, python-format +msgid "September" +msgstr "Septiembre" + #. module: contract #: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__sequence #: model:ir.model.fields,field_description:contract.field_contract_line__sequence @@ -2433,455 +2540,3 @@ msgid "" msgstr "" "{{ object.company_id.name }} Contrato (Ref {{ object.name or 'n/a' }}) - " "Modificaciones" - -#~ msgid "Analytic account" -#~ msgstr "Cuenta analítica" - -#~ msgid "SMS Delivery error" -#~ msgstr "Error de entrega de SMS" - -#~ msgid "Number of messages which requires an action" -#~ msgstr "Número de mensajes que requieren una acción" - -#~ msgid "" -#~ "
\n" -#~ "

Hello ,\n" -#~ "

A new contract has been created:

\n" -#~ "\n" -#~ "

\n" -#~ "   REFERENCES
\n" -#~ "   Contract:
\n" -#~ " \n" -#~ "   Contract Date Start:
\n" -#~ "
\n" -#~ "\n" -#~ " \n" -#~ " \n" -#~ "   Your Contact: \n" -#~ " \n" -#~ " \n" -#~ "   Your Contact: \n" -#~ " \n" -#~ " \n" -#~ "

\n" -#~ "\n" -#~ "
\n" -#~ "

If you have any questions, do not hesitate to contact " -#~ "us.

\n" -#~ "

Thank you for choosing !

\n" -#~ "
\n" -#~ "
\n" -#~ "
\n" -#~ "

\n" -#~ "

\n" -#~ "
\n" -#~ "
\n" -#~ " \n" -#~ "
\n" -#~ " \n" -#~ " \n" -#~ "
\n" -#~ " Phone: \n" -#~ "
\n" -#~ "
\n" -#~ " \n" -#~ "
\n" -#~ " \n" -#~ "
\n" -#~ "
\n" -#~ "
View " -#~ "contract\n" -#~ "
\n" -#~ " " -#~ msgstr "" -#~ "
\n" -#~ "

Hello ,\n" -#~ "

Se ha creado un nuevo contrato:

\n" -#~ "\n" -#~ "

\n" -#~ "   REFERENCES
\n" -#~ "   Contract:
\n" -#~ " \n" -#~ "   Fecha de inicio del contrato: " -#~ "
\n" -#~ "
\n" -#~ "\n" -#~ " \n" -#~ " \n" -#~ "   Su contacto: \n" -#~ " \n" -#~ " \n" -#~ "   Su contacto: \n" -#~ " \n" -#~ " \n" -#~ "

\n" -#~ "\n" -#~ "
\n" -#~ "

No dude en ponerse en contacto con nosotros para " -#~ "cualquier aclaración.

\n" -#~ "

Gracias por escoger !

\n" -#~ "
\n" -#~ "
\n" -#~ "
\n" -#~ "

\n" -#~ "

\n" -#~ "
\n" -#~ "
\n" -#~ "
\n" -#~ "
View " -#~ "contract\n" -#~ "
\n" -#~ " " - -#~ msgid "Analytic Tags" -#~ msgstr "Etiquetas Analíticas" - -#~ msgid "Number of unread messages" -#~ msgstr "Número de mensajes no leídos" - -#~ msgid "Unread Messages" -#~ msgstr "Mensajes no leídos" - -#~ msgid "Unread Messages Counter" -#~ msgstr "Número de mensajes no leídos" - -#~ msgid "" -#~ "\n" -#~ "

Hello

\n" -#~ "

We have modifications on the contract that we want to " -#~ "notify you.

\n" -#~ " " -#~ msgstr "" -#~ "\n" -#~ "

Hola

\n" -#~ "

Tenemos modificaciones en el contrato que queremos " -#~ "notificarle.

\n" -#~ " " - -#~ msgid "" -#~ "\n" -#~ "
\n" -#~ "

Hello ${object.partner_id.name or ''},

\n" -#~ "

A new contract has been created:

\n" -#~ "\n" -#~ "

\n" -#~ "   REFERENCES
\n" -#~ "   Contract: ${object.name}
\n" -#~ " % if object.date_start:\n" -#~ "   Contract Date Start: ${object.date_start or ''}
\n" -#~ " % endif\n" -#~ "\n" -#~ " % if object.user_id:\n" -#~ " % if object.user_id.email:\n" -#~ "   Your Contact: ${object.user_id.name}\n" -#~ " % else:\n" -#~ "   Your Contact: ${object.user_id.name}\n" -#~ " % endif\n" -#~ " % endif\n" -#~ "

\n" -#~ "\n" -#~ "
\n" -#~ "

If you have any questions, do not hesitate to contact us.

\n" -#~ "

Thank you for choosing ${object.company_id.name or 'us'}!

\n" -#~ "
\n" -#~ "
\n" -#~ "
\n" -#~ "

\n" -#~ " ${object." -#~ "company_id.name}

\n" -#~ "
\n" -#~ "
\n" -#~ " \n" -#~ " ${object.company_id.partner_id.sudo()." -#~ "with_context(show_address=True, html_format=True).name_get()[0][1] | " -#~ "safe}\n" -#~ " \n" -#~ " % if object.company_id.phone:\n" -#~ "
\n" -#~ " Phone: ${object.company_id.phone}\n" -#~ "
\n" -#~ " % endif\n" -#~ " % if object.company_id.website:\n" -#~ "
\n" -#~ " Web: ${object." -#~ "company_id.website}\n" -#~ "
\n" -#~ " %endif\n" -#~ "

\n" -#~ "
\n" -#~ "

\n" -#~ " View contract\n" -#~ "
\n" -#~ " " -#~ msgstr "" -#~ "\n" -#~ "
\n" -#~ "

Hola ${object.partner_id.name or ''},

\n" -#~ "

Se ha creado un nuevo contrato:

\n" -#~ "\n" -#~ "

\n" -#~ "   REFERENCIAS
\n" -#~ "   Contrato: ${object.name}
\n" -#~ " % if object.date_start:\n" -#~ "   Fecha inicio contrato: ${object.date_start or ''}
\n" -#~ " % endif\n" -#~ "\n" -#~ " % if object.user_id:\n" -#~ " % if object.user_id.email:\n" -#~ "   Su contacto:
${object.user_id.name}\n" -#~ " % else:\n" -#~ "   Su contacto: ${object.user_id.name}\n" -#~ " % endif\n" -#~ " % endif\n" -#~ "

\n" -#~ "\n" -#~ "
\n" -#~ "

Si tiene alguna pregunta, no dude en contactarnos.

\n" -#~ "

Gracias por elegir a ${object.company_id.name or 'nosotros'}!

\n" -#~ "
\n" -#~ "
\n" -#~ "
\n" -#~ "

\n" -#~ " ${object." -#~ "company_id.name}

\n" -#~ "
\n" -#~ "
\n" -#~ " \n" -#~ " ${object.company_id.partner_id.sudo()." -#~ "with_context(show_address=True, html_format=True).name_get()[0][1] | " -#~ "safe}\n" -#~ " \n" -#~ " % if object.company_id.phone:\n" -#~ "
\n" -#~ " Teléfono: ${object.company_id.phone}\n" -#~ "
\n" -#~ " % endif\n" -#~ " % if object.company_id.website:\n" -#~ "
\n" -#~ " Web: ${object." -#~ "company_id.website}\n" -#~ "
\n" -#~ " %endif\n" -#~ "

\n" -#~ "
\n" -#~ "

\n" -#~ " Ver contrato\n" -#~ "
\n" -#~ " " - -#~ msgid "${object.company_id.name} Contract (Ref ${object.name or 'n/a'})" -#~ msgstr "${object.company_id.name} Contrato (Ref ${object.name or 'n/a'})" - -#~ msgid "" -#~ "${object.company_id.name} Contract (Ref ${object.name or 'n/a'}) - " -#~ "Modifications" -#~ msgstr "" -#~ "${object.company_id.name} Contrato (Ref ${object.name or 'n/a'}) - " -#~ "Modificaciones" - -#~ msgid "Contract line Un-canceled: %s
- " -#~ msgstr "Línea de contrato no cancelada: %s
- " - -#~ msgid "Contract line canceled: %s
- " -#~ msgstr "Línea de contrato cancelada: %s
- " - -#~ msgid "" -#~ "Contract line for {product}\n" -#~ " stopped:
\n" -#~ " - End: {old_end} -- " -#~ "{new_end}\n" -#~ " " -#~ msgstr "" -#~ "Línea de contrato para {product}\n" -#~ " detenida:
\n" -#~ " - Fin: {old_end} -- " -#~ "{new_end}\n" -#~ " " - -#~ msgid "" -#~ "Contract line for {product}\n" -#~ " planned a successor:
\n" -#~ " - Start: {new_date_start}\n" -#~ "
\n" -#~ " - End: {new_date_end}\n" -#~ " " -#~ msgstr "" -#~ "Línea de contrato para {product}\n" -#~ " planeó un sucesor:
\n" -#~ " - Inicio: {new_date_start}\n" -#~ "
\n" -#~ " - Fin: {new_date_end}\n" -#~ " " - -#~ msgid "" -#~ "Contract line for {product}\n" -#~ " renewed:
\n" -#~ " - Start: {new_date_start}\n" -#~ "
\n" -#~ " - End: {new_date_end}\n" -#~ " " -#~ msgstr "" -#~ "Línea de contrato para {product}\n" -#~ " renovado:
\n" -#~ " - Inicio: {new_date_start}\n" -#~ "
\n" -#~ " - Fin: {new_date_end}\n" -#~ " " - -#~ msgid "" -#~ "Contract line for {product}\n" -#~ " suspended:
\n" -#~ " - Suspension Start: {new_date_start}\n" -#~ "
\n" -#~ " - Suspension End: {new_date_end}\n" -#~ " " -#~ msgstr "" -#~ "Línea de contrato para {product}\n" -#~ " suspendida:
\n" -#~ " - Inicio Suspensión: {new_date_start}\n" -#~ "
\n" -#~ " - Fin Suspensión: {new_date_end}\n" -#~ " " - -#~ msgid "" -#~ "Contract manually invoiced:
Invoice" -#~ msgstr "" -#~ "Contratos facturados manualmente: Factura" - -#~ msgid "Followers (Channels)" -#~ msgstr "Seguimiento (Canales)" - -#~ msgid "Manual renew needed" -#~ msgstr "Renovación manual necesaria" - -#~ msgid "Please define a %s journal for the company '%s'." -#~ msgstr "Por favor defina un diario de %s para la compañía '%s'." - -#~ msgid "Termination notice date" -#~ msgstr "Fecha de aviso de terminación" - -#~ msgid "" -#~ "\n" -#~ " contract to invoice\n" -#~ " \n" -#~ " \n" -#~ " contracts to invoice\n" -#~ " " -#~ msgstr "" -#~ "\n" -#~ " contrato a facturar\n" -#~ " \n" -#~ " \n" -#~ " contracts to invoice\n" -#~ " " - -#~ msgid "Journal Entries" -#~ msgstr "Asientos contables" - -#~ msgid "Last date invoice" -#~ msgstr "Última fecha de factura" - -#~ msgid "Contract Order -" -#~ msgstr "Pedido de contrato -" diff --git a/contract/models/contract_line.py b/contract/models/contract_line.py index f1ca6f46e..ff4fbc4aa 100644 --- a/contract/models/contract_line.py +++ b/contract/models/contract_line.py @@ -596,6 +596,23 @@ class ContractLine(models.Model): ) 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): self.ensure_one() lang_obj = self.env["res.lang"] @@ -604,6 +621,12 @@ class ContractLine(models.Model): name = self.name name = name.replace("#START#", first_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 def _update_recurring_next_date(self): diff --git a/contract/readme/USAGE.rst b/contract/readme/USAGE.rst index 7257cf153..072e87e68 100644 --- a/contract/readme/USAGE.rst +++ b/contract/readme/USAGE.rst @@ -10,8 +10,8 @@ * 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) * 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 - the invoiced period in the invoice line description + * #START# - #END# or #INVOICEMONTHNAME# in the description field to display + 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) #. The "Generate Recurring Invoices from Contracts" cron runs daily to generate the invoices. diff --git a/contract/static/description/index.html b/contract/static/description/index.html index d15721f88..6a22f0b38 100644 --- a/contract/static/description/index.html +++ b/contract/static/description/index.html @@ -8,11 +8,10 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ +:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. -Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +274,7 @@ pre.literal-block, pre.doctest-block, pre.math, pre.code { margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: gray; } /* line numbers */ +pre.code .ln { color: grey; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +300,7 @@ span.option { span.pre { white-space: pre } -span.problematic, pre.problematic { +span.problematic { color: red } span.section-subtitle { @@ -409,8 +408,8 @@ user access rights.

  • 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)
  • 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 -the invoiced period in the invoice line description
  • +
  • #START# - #END# or #INVOICEMONTHNAME# in the description field to display +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)
  • @@ -497,9 +496,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome

    Maintainers

    This module is maintained by the OCA.

    - -Odoo Community Association - +Odoo Community Association

    OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

    diff --git a/contract/tests/test_contract.py b/contract/tests/test_contract.py index 8f756b4f2..8004c4158 100644 --- a/contract/tests/test_contract.py +++ b/contract/tests/test_contract.py @@ -8,6 +8,7 @@ from collections import namedtuple from datetime import timedelta from dateutil.relativedelta import relativedelta +from freezegun import freeze_time from odoo import fields from odoo.exceptions import UserError, ValidationError @@ -141,7 +142,7 @@ class TestContractBase(common.TransactionCase): 0, { "product_id": False, - "name": "Header for Services", + "name": "Header for #INVOICEMONTHNAME# Services", "display_type": "line_section", }, ), @@ -2395,3 +2396,11 @@ class TestContract(TestContractBase): action = self.contract.action_preview() self.assertIn("/my/contracts/", action["url"]) self.assertIn("access_token=", action["url"]) + + @freeze_time("2023-05-01") + def test_check_month_name_marker(self): + """Set fixed date to check test correctly.""" + self.contract3.contract_line_ids.date_start = fields.Date.today() + self.contract3.contract_line_ids.recurring_next_date = fields.Date.today() + invoice_id = self.contract3.recurring_create_invoice() + self.assertEqual(invoice_id.invoice_line_ids[0].name, "Header for May Services") diff --git a/contract/views/contract.xml b/contract/views/contract.xml index e4c9521ba..30d51f58c 100644 --- a/contract/views/contract.xml +++ b/contract/views/contract.xml @@ -452,6 +452,13 @@ the invoiced period

    +

    + #INVOICEMONTHNAME# + : Invoice month name + of + the + invoiced period +

    diff --git a/contract/views/contract_template.xml b/contract/views/contract_template.xml index 75e6a0926..841bb5248 100644 --- a/contract/views/contract_template.xml +++ b/contract/views/contract_template.xml @@ -74,6 +74,8 @@

    #START#: Start date of the invoiced period

    #END#: End date of the invoiced period

    +

    #INVOICEMONTHNAME#: Invoice month name of the invoiced period