Merge PR #1156 into 17.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2024-12-05 09:54:00 +00:00
9 changed files with 290 additions and 46 deletions

View File

@@ -57,21 +57,22 @@ Usage
2. When creating a contract, fill fields for selecting the invoicing
parameters:
- a journal
- a price list (optional)
- a journal
- a price list (optional)
3. And add the lines to be invoiced with:
- the product with a description, a quantity and a price
- 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
- pre-paid (invoice at period start) or post-paid (invoice at start
of next period)
- the product with a description, a quantity and a price
- 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# - #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)
4. The "Generate Recurring Invoices from Contracts" cron runs daily to
generate the invoices. If you are in debug mode, you can click on the
@@ -85,7 +86,7 @@ Usage
price list and lines when creating a contract. To use it, just select
the template on the contract and fields will be filled automatically.
- Contracts appear in portal to following users in every contract:
- Contracts appear in portal to following users in every contract:
|image|
@@ -100,8 +101,8 @@ Usage
Known issues / Roadmap
======================
- Recover states and others functional fields in Contracts.
- Add recurrence flag at template level.
- Recover states and others functional fields in Contracts.
- Add recurrence flag at template level.
Bug Tracker
===========
@@ -125,33 +126,33 @@ Authors
Contributors
------------
- Angel Moya <angel.moya@domatix.com>
- Angel Moya <angel.moya@domatix.com>
- Dave Lasley <dave@laslabs.com>
- Dave Lasley <dave@laslabs.com>
- Miquel Raïch <miquel.raich@eficent.com>
- Miquel Raïch <miquel.raich@eficent.com>
- Souheil Bejaoui <souheil.bejaoui@acsone.eu>
- Souheil Bejaoui <souheil.bejaoui@acsone.eu>
- Thomas Binsfeld <thomas.binsfeld@acsone.eu>
- Thomas Binsfeld <thomas.binsfeld@acsone.eu>
- Guillaume Vandamme <guillaume.vandamme@acsone.eu>
- Guillaume Vandamme <guillaume.vandamme@acsone.eu>
- Raphaël Reverdy <raphael.reverdy@akretion.com>
- Raphaël Reverdy <raphael.reverdy@akretion.com>
- `Tecnativa <https://www.tecnativa.com>`__:
- `Tecnativa <https://www.tecnativa.com>`__:
- Pedro M. Baeza
- Carlos Dauden
- Vicent Cubells
- Rafael Blasco
- Víctor Martínez
- Pedro M. Baeza
- Carlos Dauden
- Vicent Cubells
- Rafael Blasco
- Víctor Martínez
- Iván Antón <ozono@ozonomultimedia.com>
- Iván Antón <ozono@ozonomultimedia.com>
- `APSL <https://www.apsl.tech>`__:
- `APSL <https://www.apsl.tech>`__:
- Antoni Marroig <amarroig@apsl.net>
- Antoni Marroig <amarroig@apsl.net>
Maintainers
-----------

View File

@@ -113,6 +113,23 @@ msgstr ""
msgid "<strong>#END#</strong>: End date of the invoiced period"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid ""
"<strong>#INVOICEMONTHNAME#</strong>\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 ""
"<strong>#INVOICEMONTHNAME#</strong>: Invoice month name of the invoiced "
"period"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid ""
@@ -320,6 +337,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
@@ -352,6 +376,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
@@ -934,6 +965,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
@@ -1016,6 +1054,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"
@@ -1243,6 +1288,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
@@ -1261,6 +1313,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
@@ -1327,6 +1393,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
@@ -1336,6 +1409,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"
@@ -1459,6 +1539,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"
@@ -1493,6 +1580,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
@@ -1768,6 +1862,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

View File

@@ -9,8 +9,6 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-03 19:17+0000\n"
"PO-Revision-Date: 2024-09-03 21:25+0200\n"
"Last-Translator: Sergio Teruel <sergio.teruel@tecnativa.com>\n"
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
"Language: es\n"
@@ -238,6 +236,29 @@ msgstr ""
msgid "<strong>#END#</strong>: End date of the invoiced period"
msgstr "<strong>#END#</strong>: Fecha fin del periodo facturado"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid ""
"<strong>#INVOICEMONTHNAME#</strong>\n"
" : Invoice month name\n"
" of\n"
" the\n"
" invoiced period"
msgstr ""
"<strong>#INVOICEMONTHNAME#</strong>\n"
" : Nombe del mes\n"
" del\n"
" periodo facturado"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_template_form_view
msgid ""
"<strong>#INVOICEMONTHNAME#</strong>: Invoice month name of the invoiced "
"period"
msgstr ""
"<strong>#INVOICEMONTHNAME#</strong>: FechaNombre del mes del periodo "
"facturado"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid ""
@@ -451,6 +472,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
@@ -483,6 +511,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
@@ -1094,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
@@ -1184,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"
@@ -1419,6 +1468,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
@@ -1437,6 +1493,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
@@ -1504,6 +1574,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
@@ -1515,6 +1592,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"
@@ -1638,6 +1722,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"
@@ -1674,6 +1765,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
@@ -1950,6 +2048,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
@@ -2419,8 +2524,3 @@ msgid ""
msgstr ""
"{{ object.company_id.name }} Contrato (Ref {{ object.name or 'n/a' }}) - "
"Modificaciones"
#, fuzzy
#~| msgid "Next Activity Deadline"
#~ msgid "Next Activity Calendar Event"
#~ msgstr "Fecha límite de la siguiente actividad"

View File

@@ -595,6 +595,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"]
@@ -603,6 +620,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):

View File

@@ -11,9 +11,9 @@
(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)
4. The "Generate Recurring Invoices from Contracts" cron runs daily to

View File

@@ -410,12 +410,13 @@ parameters:<ul>
<li>And add the lines to be invoiced with:<ul>
<li>the product with a description, a quantity and a price</li>
<li>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)</li>
last day or years), start date, date of next invoice
(automatically computed, can be modified) and end date (optional)</li>
<li>auto-price, for having a price automatically obtained from the
price list</li>
<li>#START# or #END# in the description field to display the start/end
date of the invoiced period in the invoice line description</li>
<li>#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</li>
<li>pre-paid (invoice at period start) or post-paid (invoice at start
of next period)</li>
</ul>

View File

@@ -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",
},
),
@@ -2385,3 +2386,11 @@ class TestContract(TestContractBase):
self.assertEqual(len(self.contract._get_related_invoices()), 4)
self.contract.recurring_create_invoice()
self.assertEqual(len(self.contract._get_related_invoices()), 4)
@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")

View File

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

View File

@@ -76,6 +76,8 @@
<p> <strong
>#START#</strong>: Start 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>
</div>
</group>
</form>