[IMP] contract: Add contract modification

This commit is contained in:
Víctor Martínez
2020-12-16 09:44:18 +01:00
committed by Pedro M. Baeza
parent 7f8c59fb2a
commit a9f65b439a
15 changed files with 426 additions and 1985 deletions

View File

@@ -4,4 +4,8 @@
<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>
</record>
</odoo>

View File

@@ -62,5 +62,26 @@
</div>
]]></field>
</record>
<template id="template_contract_modification" name="Contract Modification">
<t t-call="email_template_qweb.view_email_template_corporate_identity">
<p>Hello</p>
<p>We have modifications on the contract <strong t-esc="object.name" /> that we want to notify you.</p>
<table border="1">
<thead>
<tr>
<th>Date</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<t t-foreach="object.modification_ids" t-as="notification_id">
<tr t-if="not notification_id.sent">
<td><span t-field="notification_id.date" /></td>
<td><div t-field="notification_id.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-23 16:39+0000\n"
"PO-Revision-Date: 2020-12-23 16:39+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -143,6 +145,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 +411,7 @@ msgid "Company"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:394
#: code:addons/contract/models/contract.py:436
#, python-format
msgid "Compose Email"
msgstr ""
@@ -426,6 +433,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 +478,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 +638,22 @@ msgid "Contract lines"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:550
#: code:addons/contract/models/contract.py:592
#, 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 +665,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 +708,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 +722,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 +764,9 @@ 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
#, python-format
msgid "Date"
msgstr ""
@@ -806,9 +832,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 +869,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
@@ -896,6 +926,11 @@ msgstr ""
msgid "Group By..."
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "Hello"
msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract__id
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__id
@@ -904,6 +939,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 +1095,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 +1109,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 +1123,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 +1180,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 +1357,7 @@ msgid "Planned"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:352
#: code:addons/contract/models/contract.py:394
#, python-format
msgid "Please define a %s journal for the company '%s'."
msgstr ""
@@ -1362,8 +1407,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 +1500,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 +1532,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
@@ -1545,6 +1591,7 @@ msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_line__state
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "State"
msgstr ""
@@ -1645,7 +1692,7 @@ msgid "Technical field for UX purpose."
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:585
#: code:addons/contract/models/contract.py:627
#: 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
@@ -1794,6 +1841,11 @@ msgstr ""
msgid "View"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "We have modifications on the contract"
msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__website_message_ids
msgid "Website Messages"
@@ -1849,7 +1901,7 @@ msgid "Year(s)"
msgstr ""
#. module: contract
#: code:addons/contract/models/contract.py:599
#: code:addons/contract/models/contract.py:641
#, python-format
msgid "You are not allowed to terminate contracts."
msgstr ""
@@ -1900,3 +1952,8 @@ msgstr ""
msgid "on"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "that we want to notify you."
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-23 16:39+0000\n"
"PO-Revision-Date: 2020-12-23 18:14+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"Language: es\n"
@@ -245,6 +245,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 +512,7 @@ msgid "Company"
msgstr "Compañía"
#. module: contract
#: code:addons/contract/models/contract.py:394
#: code:addons/contract/models/contract.py:436
#, python-format
msgid "Compose Email"
msgstr "Componer correo electrónico"
@@ -529,6 +534,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 +579,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 +767,7 @@ msgid "Contract lines"
msgstr "Líneas de contrato"
#. module: contract
#: code:addons/contract/models/contract.py:550
#: code:addons/contract/models/contract.py:592
#, python-format
msgid ""
"Contract manually invoiced: <a href=\"#\" data-oe-model=\"%s\" data-oe-id="
@@ -765,6 +776,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 +798,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 +841,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 +855,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 +897,9 @@ 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
#, python-format
msgid "Date"
msgstr "Fecha"
@@ -946,9 +970,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 +1011,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
@@ -1040,6 +1068,11 @@ msgstr "Grupo"
msgid "Group By..."
msgstr "Agrupar por..."
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "Hello"
msgstr "Hola"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract__id
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__id
@@ -1048,6 +1081,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
@@ -1219,6 +1253,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 +1267,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 +1281,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 +1339,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 +1520,7 @@ msgid "Planned"
msgstr "Planificado"
#. module: contract
#: code:addons/contract/models/contract.py:352
#: code:addons/contract/models/contract.py:394
#, 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 +1570,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 +1663,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 +1695,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
@@ -1714,6 +1758,7 @@ msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_line__state
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "State"
msgstr "Provincia"
@@ -1819,7 +1864,7 @@ msgid "Technical field for UX purpose."
msgstr "Campo técnico para propósitos UX"
#. module: contract
#: code:addons/contract/models/contract.py:585
#: code:addons/contract/models/contract.py:627
#: 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
@@ -1973,6 +2018,11 @@ msgstr "Validar"
msgid "View"
msgstr "Ver"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "We have modifications on the contract"
msgstr "Tenemos modificaciones en el contrato"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__website_message_ids
msgid "Website Messages"
@@ -2028,7 +2078,7 @@ msgid "Year(s)"
msgstr "Año(s)"
#. module: contract
#: code:addons/contract/models/contract.py:599
#: code:addons/contract/models/contract.py:641
#, python-format
msgid "You are not allowed to terminate contracts."
msgstr "No tiene permitido rescindir contratos."
@@ -2096,3 +2146,8 @@ msgstr "ejemplo Contrato XYZ"
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid "on"
msgstr "de"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.template_contract_modification
msgid "that we want to notify you."
msgstr "que queremos notificarle."

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,49 @@ 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
@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):
modification_ids_not_sent = self.modification_ids.filtered(
lambda x: not x.sent
)
if modification_ids_not_sent:
contract_modification_subtype = self.sudo().env.ref(
'contract.mail_message_subtype_contract_modification'
)
notified_partners = self.message_follower_ids.filtered(
lambda x: contract_modification_subtype in x.subtype_ids
).mapped('partner_id')
if notified_partners:
self.message_post_with_view(
'mail.email_contract_modification_template',
partner_ids=notified_partners.ids,
)
modification_ids_not_sent.write({'sent': True})
@api.multi
def _inverse_partner_id(self):

View File

@@ -0,0 +1,48 @@
# 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,
readonly=True,
)
@api.model_create_multi
def create(self, vals_list):
records = super().create(vals_list)
records.check_modification_ids_need_sent()
return records
def write(self, vals):
res = super().write(vals)
self.check_modification_ids_need_sent()
return res
def check_modification_ids_need_sent(self):
records_not_sent = self.filtered(lambda x: not x.sent)
if records_not_sent:
records_not_sent.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.assertEqual(len(self.contract.message_partner_ids.ids), 2)
mail_messages = self.env["mail.message"].search([
("model", "=", "contract.contract"),
("res_id", "=", self.contract.id),
])
self.assertGreaterEqual(len(mail_messages), 3)
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>