mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
@@ -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>
|
||||
|
||||
@@ -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 <%s>' % (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>
|
||||
|
||||
@@ -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', '>', 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 ""
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
47
contract/models/contract_modification.py
Normal file
47
contract/models/contract_modification.py
Normal 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()
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
|
71
contract/static/src/scss/frontend.scss
Normal file
71
contract/static/src/scss/frontend.scss
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user