Merge PR #585 into 12.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2020-12-25 11:10:21 +00:00
15 changed files with 466 additions and 1987 deletions

View File

@@ -4,4 +4,9 @@
<field name="name">Invoice created</field>
<field name="res_model">contract.contract</field>
</record>
<record id="mail_message_subtype_contract_modification" model="mail.message.subtype">
<field name="name">Contract modifications</field>
<field name="res_model">contract.contract</field>
<field name="default" eval="False"/>
</record>
</odoo>

View File

@@ -63,4 +63,42 @@
]]></field>
</record>
<record id="mail_template_contract_modification" model="mail.template">
<field name="name">Contract Modification Template</field>
<field name="email_from">${(object.user_id.email and '%s &lt;%s&gt;' % (object.user_id.name, object.user_id.email) or '')|safe}</field>
<field name="subject">${object.company_id.name} Contract (Ref ${object.name or 'n/a'}) - Modifications</field>
<field name="model_id" ref="model_contract_contract"/>
<field name="lang">${object.partner_id.lang}</field>
<field name="body_html"><![CDATA[
<p>Hello</p>
<p>We have modifications on the contract that we want to notify you.</p>
]]></field>
</record>
<template id="mail_notification_contract" inherit_id="mail.mail_notification_paynow" primary="True">
<xpath expr="//t[@t-raw='message.body']" position="after">
<t t-raw="0"/>
</xpath>
</template>
<template id="template_contract_modification" name="Contract Modification">
<t t-call="contract.mail_notification_contract">
<table border="1" align="center">
<thead>
<tr>
<th name="th_date">Date</th>
<th name="th_description">Description</th>
</tr>
</thead>
<tbody>
<t t-foreach="record.modification_ids" t-as="modification">
<tr t-if="not modification.sent">
<td name="td_date"><span t-field="modification.date" /></td>
<td name="td_description"><div t-field="modification.description" /></td>
</tr>
</t>
</tbody>
</table>
</t>
</template>
</odoo>

View File

@@ -6,6 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-24 08:24+0000\n"
"PO-Revision-Date: 2020-12-24 08:24+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -13,6 +15,14 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: contract
#: model:mail.template,body_html:contract.mail_template_contract_modification
msgid "\n"
" <p>Hello</p>\n"
" <p>We have modifications on the contract that we want to notify you.</p>\n"
" "
msgstr ""
#. module: contract
#: model:mail.template,body_html:contract.email_contract_template
msgid "\n"
@@ -72,6 +82,11 @@ msgstr ""
msgid "${object.company_id.name} Contract (Ref ${object.name or 'n/a'})"
msgstr ""
#. module: contract
#: model:mail.template,subject:contract.mail_template_contract_modification
msgid "${object.company_id.name} Contract (Ref ${object.name or 'n/a'}) - Modifications"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_manually_create_invoice_form_view
msgid "<span attrs=\"{'invisible': [('contract_to_invoice_count', '&gt;', 1)]}\">\n"
@@ -143,6 +158,11 @@ msgstr ""
msgid "<strong>Description</strong>"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
msgid "<strong>Modifications</strong>"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
msgid "<strong>Notes: </strong>"
@@ -404,7 +424,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:394
#: code:addons/contract/models/contract.py:441
#, python-format
msgid "Compose Email"
msgstr ""
@@ -426,6 +446,7 @@ msgstr ""
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__contract_id
#: model:ir.model.fields,field_description:contract.field_contract_contract_terminate__contract_id
#: model:ir.model.fields,field_description:contract.field_contract_line__contract_id
#: model:ir.model.fields,field_description:contract.field_contract_modification__contract_id
#: model:ir.model.fields,field_description:contract.field_contract_template_line__contract_id
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
#: model_terms:ir.ui.view,arch_db:contract.res_config_settings_form_view
@@ -470,6 +491,11 @@ msgstr ""
msgid "Contract Manually Create Invoice Wizard"
msgstr ""
#. module: contract
#: model:ir.model,name:contract.model_contract_modification
msgid "Contract Modification"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid "Contract Name"
@@ -625,11 +651,22 @@ msgid "Contract lines"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:550
#: code:addons/contract/models/contract.py:597
#, python-format
msgid "Contract manually invoiced: <a href=\"#\" data-oe-model=\"%s\" data-oe-id=\"%s\">Invoice</a>"
msgstr ""
#. module: contract
#: model:mail.message.subtype,name:contract.mail_message_subtype_contract_modification
msgid "Contract modifications"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:147
#, python-format
msgid "Contract start"
msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_template__contract_line_ids
msgid "Contract template lines"
@@ -641,8 +678,6 @@ msgid "Contract: Can Terminate Contracts"
msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_fsm_location__contract_ids
#: model:ir.model.fields,field_description:contract.field_fsm_person__contract_ids
#: model:ir.model.fields,field_description:contract.field_res_partner__contract_ids
#: model:ir.model.fields,field_description:contract.field_res_users__contract_ids
#: model:ir.ui.menu,name:contract.menu_config_contract
@@ -686,6 +721,7 @@ msgstr ""
#: model:ir.model.fields,field_description:contract.field_contract_line__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_modification__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_tag__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_template__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_template_line__create_uid
@@ -699,6 +735,7 @@ msgstr ""
#: model:ir.model.fields,field_description:contract.field_contract_line__create_date
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__create_date
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__create_date
#: model:ir.model.fields,field_description:contract.field_contract_modification__create_date
#: model:ir.model.fields,field_description:contract.field_contract_tag__create_date
#: model:ir.model.fields,field_description:contract.field_contract_template__create_date
#: model:ir.model.fields,field_description:contract.field_contract_template_line__create_date
@@ -740,7 +777,10 @@ msgstr ""
#. module: contract
#: code:addons/contract/controllers/main.py:40
#: model:ir.model.fields,field_description:contract.field_contract_modification__date
#: model_terms:ir.ui.view,arch_db:contract.portal_my_contracts
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
#, python-format
msgid "Date"
msgstr ""
@@ -806,9 +846,12 @@ msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__name
#: model:ir.model.fields,field_description:contract.field_contract_line__name
#: model:ir.model.fields,field_description:contract.field_contract_modification__description
#: model:ir.model.fields,field_description:contract.field_contract_template_line__name
#: model_terms:ir.ui.view,arch_db:contract.contract_abstract_contract_line_form_view
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "Description"
msgstr ""
@@ -840,6 +883,7 @@ msgstr ""
#: model:ir.model.fields,field_description:contract.field_contract_line__display_name
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__display_name
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__display_name
#: model:ir.model.fields,field_description:contract.field_contract_modification__display_name
#: model:ir.model.fields,field_description:contract.field_contract_tag__display_name
#: model:ir.model.fields,field_description:contract.field_contract_template__display_name
#: model:ir.model.fields,field_description:contract.field_contract_template_line__display_name
@@ -904,6 +948,7 @@ msgstr ""
#: model:ir.model.fields,field_description:contract.field_contract_line__id
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__id
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__id
#: model:ir.model.fields,field_description:contract.field_contract_modification__id
#: model:ir.model.fields,field_description:contract.field_contract_tag__id
#: model:ir.model.fields,field_description:contract.field_contract_template__id
#: model:ir.model.fields,field_description:contract.field_contract_template_line__id
@@ -1059,6 +1104,7 @@ msgstr ""
#: model:ir.model.fields,field_description:contract.field_contract_line____last_update
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard____last_update
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice____last_update
#: model:ir.model.fields,field_description:contract.field_contract_modification____last_update
#: model:ir.model.fields,field_description:contract.field_contract_tag____last_update
#: model:ir.model.fields,field_description:contract.field_contract_template____last_update
#: model:ir.model.fields,field_description:contract.field_contract_template_line____last_update
@@ -1072,6 +1118,7 @@ msgstr ""
#: model:ir.model.fields,field_description:contract.field_contract_line__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_modification__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_tag__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_template__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_template_line__write_uid
@@ -1085,6 +1132,7 @@ msgstr ""
#: model:ir.model.fields,field_description:contract.field_contract_line__write_date
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__write_date
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__write_date
#: model:ir.model.fields,field_description:contract.field_contract_modification__write_date
#: model:ir.model.fields,field_description:contract.field_contract_tag__write_date
#: model:ir.model.fields,field_description:contract.field_contract_template__write_date
#: model:ir.model.fields,field_description:contract.field_contract_template_line__write_date
@@ -1141,6 +1189,12 @@ msgstr ""
msgid "Messages"
msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__modification_ids
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid "Modifications"
msgstr ""
#. module: contract
#: selection:contract.abstract.contract.line,auto_renew_rule_type:0
#: selection:contract.abstract.contract.line,recurring_rule_type:0
@@ -1312,7 +1366,7 @@ msgid "Planned"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:352
#: code:addons/contract/models/contract.py:399
#, python-format
msgid "Please define a %s journal for the company '%s'."
msgstr ""
@@ -1362,8 +1416,6 @@ msgid "Product"
msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_fsm_location__purchase_contract_count
#: model:ir.model.fields,field_description:contract.field_fsm_person__purchase_contract_count
#: model:ir.model.fields,field_description:contract.field_res_partner__purchase_contract_count
#: model:ir.model.fields,field_description:contract.field_res_users__purchase_contract_count
#: model_terms:ir.ui.view,arch_db:contract.view_partner_form
@@ -1457,8 +1509,6 @@ msgid "Responsible User"
msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_fsm_location__sale_contract_count
#: model:ir.model.fields,field_description:contract.field_fsm_person__sale_contract_count
#: model:ir.model.fields,field_description:contract.field_res_partner__sale_contract_count
#: model:ir.model.fields,field_description:contract.field_res_users__sale_contract_count
#: model_terms:ir.ui.view,arch_db:contract.view_partner_form
@@ -1491,6 +1541,11 @@ msgstr ""
msgid "Send by Email"
msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_modification__sent
msgid "Sent"
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
@@ -1645,7 +1700,7 @@ msgid "Technical field for UX purpose."
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:585
#: code:addons/contract/models/contract.py:632
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_terminate_form_view
#, python-format
@@ -1849,7 +1904,7 @@ msgid "Year(s)"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:599
#: code:addons/contract/models/contract.py:646
#, python-format
msgid "You are not allowed to terminate contracts."
msgstr ""

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-09 15:59+0000\n"
"PO-Revision-Date: 2020-12-09 17:08+0100\n"
"POT-Creation-Date: 2020-12-24 08:24+0000\n"
"PO-Revision-Date: 2020-12-24 09:28+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"Language: es\n"
@@ -17,6 +17,21 @@ msgstr ""
"Plural-Forms: \n"
"X-Generator: Poedit 2.3\n"
#. module: contract
#: model:mail.template,body_html:contract.mail_template_contract_modification
msgid ""
"\n"
" <p>Hello</p>\n"
" <p>We have modifications on the contract that we want to notify "
"you.</p>\n"
" "
msgstr ""
"\n"
" <p>Hola</p>\n"
" <p>Tenemos modificaciones en el contrato que queremos "
"notificarle.</p>\n"
" "
#. module: contract
#: model:mail.template,body_html:contract.email_contract_template
msgid ""
@@ -155,6 +170,15 @@ msgstr ""
msgid "${object.company_id.name} Contract (Ref ${object.name or 'n/a'})"
msgstr "${object.company_id.name} Contrato (Ref ${object.name or 'n/a'})"
#. module: contract
#: model:mail.template,subject:contract.mail_template_contract_modification
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"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_manually_create_invoice_form_view
msgid ""
@@ -245,6 +269,11 @@ msgstr "<strong>Fecha de siguiente factura</strong>"
msgid "<strong>Description</strong>"
msgstr "<strong>Descripción</strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
msgid "<strong>Modifications</strong>"
msgstr "<strong>Modificaciones</strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
msgid "<strong>Notes: </strong>"
@@ -507,7 +536,7 @@ msgid "Company"
msgstr "Compañía"
#. module: contract
#: code:addons/contract/models/contract.py:394
#: code:addons/contract/models/contract.py:441
#, python-format
msgid "Compose Email"
msgstr "Componer correo electrónico"
@@ -529,6 +558,7 @@ msgstr "Contacto"
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__contract_id
#: model:ir.model.fields,field_description:contract.field_contract_contract_terminate__contract_id
#: model:ir.model.fields,field_description:contract.field_contract_line__contract_id
#: model:ir.model.fields,field_description:contract.field_contract_modification__contract_id
#: model:ir.model.fields,field_description:contract.field_contract_template_line__contract_id
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
#: model_terms:ir.ui.view,arch_db:contract.res_config_settings_form_view
@@ -573,6 +603,11 @@ msgstr "Contrato Crear factura manualmente"
msgid "Contract Manually Create Invoice Wizard"
msgstr "Asistente de creación manual de facturas de contrato"
#. module: contract
#: model:ir.model,name:contract.model_contract_modification
msgid "Contract Modification"
msgstr "Modificación de contrato"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid "Contract Name"
@@ -756,7 +791,7 @@ msgid "Contract lines"
msgstr "Líneas de contrato"
#. module: contract
#: code:addons/contract/models/contract.py:550
#: code:addons/contract/models/contract.py:597
#, python-format
msgid ""
"Contract manually invoiced: <a href=\"#\" data-oe-model=\"%s\" data-oe-id="
@@ -765,6 +800,17 @@ msgstr ""
"Contratos facturados manualmente: <a href=\"#\" data-oe-model=\"%s\" data-oe-"
"id=\"%s\">Factura</a>"
#. module: contract
#: model:mail.message.subtype,name:contract.mail_message_subtype_contract_modification
msgid "Contract modifications"
msgstr "Modificaciones del contrato"
#. module: contract
#: code:addons/contract/models/contract.py:147
#, python-format
msgid "Contract start"
msgstr "Inicio del contrato"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_template__contract_line_ids
msgid "Contract template lines"
@@ -776,8 +822,6 @@ msgid "Contract: Can Terminate Contracts"
msgstr "Contrato: Puede terminar contratos"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_fsm_location__contract_ids
#: model:ir.model.fields,field_description:contract.field_fsm_person__contract_ids
#: model:ir.model.fields,field_description:contract.field_res_partner__contract_ids
#: model:ir.model.fields,field_description:contract.field_res_users__contract_ids
#: model:ir.ui.menu,name:contract.menu_config_contract
@@ -821,6 +865,7 @@ msgstr "Crear facturas"
#: model:ir.model.fields,field_description:contract.field_contract_line__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_modification__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_tag__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_template__create_uid
#: model:ir.model.fields,field_description:contract.field_contract_template_line__create_uid
@@ -834,6 +879,7 @@ msgstr "Creado por"
#: model:ir.model.fields,field_description:contract.field_contract_line__create_date
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__create_date
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__create_date
#: model:ir.model.fields,field_description:contract.field_contract_modification__create_date
#: model:ir.model.fields,field_description:contract.field_contract_tag__create_date
#: model:ir.model.fields,field_description:contract.field_contract_template__create_date
#: model:ir.model.fields,field_description:contract.field_contract_template_line__create_date
@@ -875,7 +921,10 @@ msgstr "URL para portal"
#. module: contract
#: code:addons/contract/controllers/main.py:40
#: model:ir.model.fields,field_description:contract.field_contract_modification__date
#: model_terms:ir.ui.view,arch_db:contract.portal_my_contracts
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
#, python-format
msgid "Date"
msgstr "Fecha"
@@ -946,9 +995,12 @@ msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__name
#: model:ir.model.fields,field_description:contract.field_contract_line__name
#: model:ir.model.fields,field_description:contract.field_contract_modification__description
#: model:ir.model.fields,field_description:contract.field_contract_template_line__name
#: model_terms:ir.ui.view,arch_db:contract.contract_abstract_contract_line_form_view
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "Description"
msgstr "Descripción"
@@ -984,6 +1036,7 @@ msgstr ""
#: model:ir.model.fields,field_description:contract.field_contract_line__display_name
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__display_name
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__display_name
#: model:ir.model.fields,field_description:contract.field_contract_modification__display_name
#: model:ir.model.fields,field_description:contract.field_contract_tag__display_name
#: model:ir.model.fields,field_description:contract.field_contract_template__display_name
#: model:ir.model.fields,field_description:contract.field_contract_template_line__display_name
@@ -1048,6 +1101,7 @@ msgstr "Agrupar por..."
#: model:ir.model.fields,field_description:contract.field_contract_line__id
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__id
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__id
#: model:ir.model.fields,field_description:contract.field_contract_modification__id
#: model:ir.model.fields,field_description:contract.field_contract_tag__id
#: model:ir.model.fields,field_description:contract.field_contract_template__id
#: model:ir.model.fields,field_description:contract.field_contract_template_line__id
@@ -1058,7 +1112,7 @@ msgstr "ID"
#. module: contract
#: model:ir.model.fields,help:contract.field_contract_contract__message_unread
msgid "If checked new messages require your attention."
msgstr "Si está marcado, hay nuevos mensajes que requieren su atención"
msgstr "Si está marcado, hay nuevos mensajes que requieren su atención."
#. module: contract
#: model:ir.model.fields,help:contract.field_res_company__create_new_line_at_contract_line_renew
@@ -1219,6 +1273,7 @@ msgstr "Última fecha facturada"
#: model:ir.model.fields,field_description:contract.field_contract_line____last_update
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard____last_update
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice____last_update
#: model:ir.model.fields,field_description:contract.field_contract_modification____last_update
#: model:ir.model.fields,field_description:contract.field_contract_tag____last_update
#: model:ir.model.fields,field_description:contract.field_contract_template____last_update
#: model:ir.model.fields,field_description:contract.field_contract_template_line____last_update
@@ -1232,6 +1287,7 @@ msgstr "Última modificación en"
#: model:ir.model.fields,field_description:contract.field_contract_line__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_modification__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_tag__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_template__write_uid
#: model:ir.model.fields,field_description:contract.field_contract_template_line__write_uid
@@ -1245,6 +1301,7 @@ msgstr "Última actualización por"
#: model:ir.model.fields,field_description:contract.field_contract_line__write_date
#: model:ir.model.fields,field_description:contract.field_contract_line_wizard__write_date
#: model:ir.model.fields,field_description:contract.field_contract_manually_create_invoice__write_date
#: model:ir.model.fields,field_description:contract.field_contract_modification__write_date
#: model:ir.model.fields,field_description:contract.field_contract_tag__write_date
#: model:ir.model.fields,field_description:contract.field_contract_template__write_date
#: model:ir.model.fields,field_description:contract.field_contract_template_line__write_date
@@ -1302,6 +1359,12 @@ msgstr "Error de Envío de Mensaje"
msgid "Messages"
msgstr "Mensajes"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__modification_ids
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid "Modifications"
msgstr "Modificaciones"
#. module: contract
#: selection:contract.abstract.contract.line,auto_renew_rule_type:0
#: selection:contract.abstract.contract.line,recurring_rule_type:0
@@ -1477,7 +1540,7 @@ msgid "Planned"
msgstr "Planificado"
#. module: contract
#: code:addons/contract/models/contract.py:352
#: code:addons/contract/models/contract.py:399
#, python-format
msgid "Please define a %s journal for the company '%s'."
msgstr "Por favor defina un diario de %s para la compañía '%s'."
@@ -1527,8 +1590,6 @@ msgid "Product"
msgstr "Producto"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_fsm_location__purchase_contract_count
#: model:ir.model.fields,field_description:contract.field_fsm_person__purchase_contract_count
#: model:ir.model.fields,field_description:contract.field_res_partner__purchase_contract_count
#: model:ir.model.fields,field_description:contract.field_res_users__purchase_contract_count
#: model_terms:ir.ui.view,arch_db:contract.view_partner_form
@@ -1622,8 +1683,6 @@ msgid "Responsible User"
msgstr "Usuario responsable"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_fsm_location__sale_contract_count
#: model:ir.model.fields,field_description:contract.field_fsm_person__sale_contract_count
#: model:ir.model.fields,field_description:contract.field_res_partner__sale_contract_count
#: model:ir.model.fields,field_description:contract.field_res_users__sale_contract_count
#: model_terms:ir.ui.view,arch_db:contract.view_partner_form
@@ -1656,6 +1715,11 @@ msgstr "Semestre/s"
msgid "Send by Email"
msgstr "Enviar por correo electrónico"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_modification__sent
msgid "Sent"
msgstr "Enviado"
#. 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
@@ -1715,7 +1779,7 @@ msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_line__state
msgid "State"
msgstr "Provincia"
msgstr "Estado"
#. module: contract
#: model:ir.model.fields,help:contract.field_contract_contract__activity_state
@@ -1816,10 +1880,10 @@ msgstr "Etiquetas"
#: model:ir.model.fields,help:contract.field_contract_line__display_type
#: model:ir.model.fields,help:contract.field_contract_template_line__display_type
msgid "Technical field for UX purpose."
msgstr "Campo técnico para propósitos UX"
msgstr "Campo técnico para propósitos UX."
#. module: contract
#: code:addons/contract/models/contract.py:585
#: code:addons/contract/models/contract.py:632
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_terminate_form_view
#, python-format
@@ -2028,7 +2092,7 @@ msgid "Year(s)"
msgstr "Año(s)"
#. module: contract
#: code:addons/contract/models/contract.py:599
#: code:addons/contract/models/contract.py:646
#, python-format
msgid "You are not allowed to terminate contracts."
msgstr "No tiene permitido rescindir contratos."

File diff suppressed because it is too large Load Diff

View File

@@ -6,6 +6,7 @@ from . import contract_template
from . import contract
from . import contract_template_line
from . import contract_line
from . import contract_modification
from . import account_invoice
from . import account_invoice_line
from . import res_partner

View File

@@ -123,6 +123,63 @@ class ContractContract(models.Model):
copy=False,
track_visibility="onchange",
)
modification_ids = fields.One2many(
comodel_name='contract.modification',
inverse_name='contract_id',
string='Modifications',
)
@api.model_create_multi
def create(self, vals_list):
records = super().create(vals_list)
records._set_start_contract_modification()
return records
def write(self, vals):
if 'modification_ids' in vals:
res = super(ContractContract, self.with_context(
bypass_modification_send=True
)).write(vals)
self._modification_mail_send()
else:
res = super(ContractContract, self).write(vals)
return res
@api.model
def _set_start_contract_modification(self):
for record in self:
if record.contract_line_ids:
date_start = min(record.contract_line_ids.mapped('date_start'))
else:
date_start = record.create_date
record.write({
'modification_ids': [
(0, 0, {'date': date_start, 'description': _('Contract start')})
]
})
@api.model
def _modification_mail_send(self):
for record in self:
modification_ids_not_sent = record.modification_ids.filtered(
lambda x: not x.sent
)
if modification_ids_not_sent:
contract_modification_subtype = self.env.ref(
'contract.mail_message_subtype_contract_modification'
)
notified_partners = record.message_follower_ids.filtered(
lambda x: contract_modification_subtype in x.subtype_ids
).mapped('partner_id')
if notified_partners:
record.message_post_with_template(
self.env.ref(
"contract.mail_template_contract_modification"
).id,
partner_ids=[(4, x.id) for x in notified_partners],
notif_layout="contract.template_contract_modification",
)
modification_ids_not_sent.write({'sent': True})
@api.multi
def _inverse_partner_id(self):

View File

@@ -0,0 +1,47 @@
# Copyright 2020 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class ContractModification(models.Model):
_name = 'contract.modification'
_description = 'Contract Modification'
_order = 'date desc'
date = fields.Date(
required=True,
string='Date'
)
description = fields.Text(
required=True,
string='Description'
)
contract_id = fields.Many2one(
string='Contract',
comodel_name='contract.contract',
required=True,
ondelete='cascade',
index=True
)
sent = fields.Boolean(
string='Sent',
default=False,
)
@api.model_create_multi
def create(self, vals_list):
records = super().create(vals_list)
if not self.env.context.get('bypass_modification_send'):
records.check_modification_ids_need_sent()
return records
def write(self, vals):
res = super().write(vals)
if not self.env.context.get('bypass_modification_send'):
self.check_modification_ids_need_sent()
return res
def check_modification_ids_need_sent(self):
self.mapped('contract_id')._modification_mail_send()

View File

@@ -99,6 +99,31 @@
</table>
</div>
</div>
<div class="row" id="modification_info" t-if="o.modification_ids">
<div class="col-12">
<p id="modification_info_p"><strong>Modifications</strong></p>
<table class="table table-sm">
<thead>
<tr>
<th name="th_date">Date</th>
<th name="th_description" class="text-right">Description</th>
</tr>
</thead>
<tbody>
<t t-foreach="o.modification_ids" t-as="notification_id">
<tr>
<td name="td_date">
<span t-field="notification_id.date"/>
</td>
<td name="td_description" class="text-right">
<div t-field="notification_id.description"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</div>
<div>
<div class="row mt-4" id="note">
<div><strong>Notes: </strong></div>

View File

@@ -9,3 +9,5 @@
"contract_line_portal","Recurring portal","model_contract_line","base.group_portal",1,0,0,0
"contract_template_line_manager","Recurring manager","model_contract_template_line","account.group_account_manager",1,1,1,1
"contract_template_line_user","Recurring user","model_contract_template_line","account.group_account_invoice",1,0,0,0
"contract_modification_user","Contract modifications - User","model_contract_modification","account.group_account_invoice",1,1,1,1
"contract_modification_portal","Contract modifications - Portal","model_contract_modification","base.group_portal",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
9 contract_line_portal Recurring portal model_contract_line base.group_portal 1 0 0 0
10 contract_template_line_manager Recurring manager model_contract_template_line account.group_account_manager 1 1 1 1
11 contract_template_line_user Recurring user model_contract_template_line account.group_account_invoice 1 0 0 0
12 contract_modification_user Contract modifications - User model_contract_modification account.group_account_invoice 1 1 1 1
13 contract_modification_portal Contract modifications - Portal model_contract_modification base.group_portal 1 0 0 0

View File

@@ -0,0 +1,71 @@
/* https://github.com/odoo/odoo/blob/14.0/addons/website/static/src/snippets/s_timeline/000.scss */
.s_timeline {
.s_timeline_line {
position: relative;
&:before {
content: '';
position: absolute;
width: 1px;
top: 0px;
bottom: 0px;
left: 50%;
background-color: gray('800');
}
}
.s_timeline_row {
align-items: center;
.s_timeline_content {
align-items: center;
justify-content: flex-end;
width: 100%;
~ .s_timeline_content {
justify-content: flex-start;
}
}
&.flex-row-reverse {
.s_timeline_content {
flex-direction: row-reverse;
}
}
@include media-breakpoint-up(md) {
&.flex-row-reverse {
.s_timeline_content {
flex-direction: row-reverse;
&:not(:last-child) {
margin-left: 10%;
}
}
}
&:not(.flex-row-reverse) {
.s_timeline_content:last-child {
margin-left: 10%;
}
}
}
}
.s_timeline_date {
@include media-breakpoint-up(md) {
position: absolute;
left: 0%;
right: 0%;
}
@include media-breakpoint-down(sm) {
position: relative;
margin: 20px 0px;
}
span:not(.fa) {
display: inline-block;
padding: 5px;
}
.fa {
margin: 0 $grid-gutter-width/2;
}
text-align: center;
}
.s_timeline_icon {
flex: 0 0 auto;
margin: $grid-gutter-width/2;
z-index: 1;
}
}

View File

@@ -25,6 +25,7 @@ class TestContractBase(common.SavepointCase):
cls.partner = cls.env['res.partner'].create({
'name': 'partner test contract',
'property_product_pricelist': cls.pricelist.id,
'email': 'demo@demo.com'
})
cls.product_1 = cls.env.ref('product.product_product_1')
cls.product_2 = cls.env.ref('product.product_product_2')
@@ -133,6 +134,42 @@ class TestContract(TestContractBase):
vals.update(overrides)
return self.env['contract.template.line'].create(vals)
def test_add_modifications(self):
self.contract.message_subscribe(
partner_ids=self.contract.partner_id.ids,
subtype_ids=self.env.ref(
'contract.mail_message_subtype_contract_modification'
).ids
)
# Check initial modification auto-creation
self.assertEqual(len(self.contract.modification_ids), 1)
self.contract.write({
'modification_ids': [
(
0,
0,
{
'date': '2020-01-01',
'description': 'Modification 1',
}
),
(
0,
0,
{
'date': '2020-02-01',
'description': 'Modification 2',
}
)
]
})
self.assertGreaterEqual(len(self.contract.message_partner_ids), 2)
mail_messages = self.env["mail.message"].search([
("model", "=", "contract.contract"),
("res_id", "=", self.contract.id),
])
self.assertGreaterEqual(len(mail_messages), 2)
def test_check_discount(self):
with self.assertRaises(ValidationError):
self.acct_line.write({'discount': 120})

View File

@@ -7,4 +7,9 @@
<script type="text/javascript" src="/contract/static/src/js/section_and_note_fields_backend.js"></script>
</xpath>
</template>
<template id="assets_frontend" inherit_id="web.assets_frontend" name="contract assets">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/contract/static/src/scss/frontend.scss" type="text/css"/>
</xpath>
</template>
</odoo>

View File

@@ -170,6 +170,15 @@
</field>
<field name="note"/>
</page>
<page name="modications" string="Modifications">
<field name="modification_ids" attrs="{'readonly': [('is_terminated','=',True)]}">
<tree editable="bottom">
<field name="date"/>
<field name="description"/>
<field name="sent"/>
</tree>
</field>
</page>
<page name="info" string="Other Information">
<field name="create_invoice_visibility"
invisible="1"/>

View File

@@ -168,6 +168,29 @@
</div>
</t>
</t>
<section t-if="contract.modification_ids" class="s_timeline pt24 pb48 o_colored_level" data-snippet="s_timeline">
<div class="container s_timeline_line">
<t t-set="last_modification_date" t-value="False" />
<div class="s_timeline_row d-block d-md-flex flex-row" t-foreach="contract.modification_ids" t-as="modification">
<div class="s_timeline_date">
<t t-if="not last_modification_date or last_modification_date!=modification.date">
<t t-set="last_modification_date" t-value="modification.date" />
<span class="bg-white">
<b class="o_default_snippet_text" t-esc="last_modification_date" t-options='{"widget": "date"}' />
</span>
</t>
</div>
<div class="s_timeline_content s_timeline_content_left d-flex">
<div class="s_timeline_card s_card card bg-white w-100" data-snippet="s_card">
<div class="card-body">
<div class="card-text o_default_snippet_text" t-field="modification.description"/>
</div>
</div>
</div>
<div class="s_timeline_content s_timeline_content_right"></div>
</div>
</div>
</section>
<!-- chatter -->
<div id="contract_communication" class="mt-4">
<h2>Communication</h2>