Merge PR #594 into 13.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2020-12-29 08:11:07 +00:00
15 changed files with 620 additions and 2372 deletions

View File

@@ -4,4 +4,12 @@
<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

@@ -67,4 +67,54 @@
</div>
]]></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 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-29 07:26+0000\n"
"PO-Revision-Date: 2020-12-29 07:26+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@@ -13,6 +15,15 @@ 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 ""
@@ -73,6 +84,13 @@ 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 ""
@@ -149,6 +167,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>"
@@ -445,6 +468,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
@@ -457,6 +481,11 @@ msgstr ""
msgid "Contract #"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "Contract -"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_terminate_form_view
msgid "Contract Contract Terminate"
@@ -490,13 +519,13 @@ msgid "Contract Manually Create Invoice Wizard"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid "Contract Name"
#: model:ir.model,name:contract.model_contract_modification
msgid "Contract Modification"
msgstr ""
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "Contract Order -"
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid "Contract Name"
msgstr ""
#. module: contract
@@ -660,6 +689,17 @@ msgid ""
"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:0
#, 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"
@@ -714,6 +754,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
@@ -727,6 +768,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
@@ -768,7 +810,10 @@ msgstr ""
#. module: contract
#: code:addons/contract/controllers/main.py:0
#: 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 ""
@@ -850,9 +895,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 ""
@@ -886,6 +934,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_recurrency_basic_mixin__display_name
#: model:ir.model.fields,field_description:contract.field_contract_recurrency_mixin__display_name
#: model:ir.model.fields,field_description:contract.field_contract_tag__display_name
@@ -952,6 +1001,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_recurrency_basic_mixin__id
#: model:ir.model.fields,field_description:contract.field_contract_recurrency_mixin__id
#: model:ir.model.fields,field_description:contract.field_contract_tag__id
@@ -1146,6 +1196,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_recurrency_basic_mixin____last_update
#: model:ir.model.fields,field_description:contract.field_contract_recurrency_mixin____last_update
#: model:ir.model.fields,field_description:contract.field_contract_tag____last_update
@@ -1161,6 +1212,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
@@ -1174,6 +1226,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
@@ -1239,6 +1292,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
#: model:ir.model.fields.selection,name:contract.selection__contract_abstract_contract__recurring_rule_type__monthly
#: model:ir.model.fields.selection,name:contract.selection__contract_abstract_contract_line__auto_renew_rule_type__monthly
@@ -1638,6 +1697,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

View File

@@ -9,16 +9,31 @@ msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-27 01:12+0000\n"
"PO-Revision-Date: 2020-06-17 11:28+0000\n"
"POT-Creation-Date: 2020-12-29 07:26+0000\n"
"PO-Revision-Date: 2020-12-29 08:27+0100\n"
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>\n"
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10\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
@@ -88,12 +103,85 @@ msgid ""
"</div>\n"
" "
msgstr ""
"\n"
"<div style=\"font-family: 'Lucida Grande', Ubuntu, Arial, Verdana, sans-"
"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; \">\n"
" <p>Hola ${object.partner_id.name or ''},</p>\n"
" <p>Se ha creado un nuevo contrato: </p>\n"
"\n"
" <p style=\"border-left: 1px solid #8e0000; margin-left: 30px;\">\n"
" &nbsp;&nbsp;<strong>REFERENCIAS</strong><br />\n"
" &nbsp;&nbsp;Contrato: <strong>${object.name}</strong><br />\n"
" % if object.date_start:\n"
" &nbsp;&nbsp;Fecha inicio contrato: ${object.date_start or ''}<br />\n"
" % endif\n"
"\n"
" % if object.user_id:\n"
" % if object.user_id.email:\n"
" &nbsp;&nbsp;Su contacto: <a href=\"mailto:${object.user_id.email or "
"''}?subject=Contract%20${object.name}\">${object.user_id.name}</a>\n"
" % else:\n"
" &nbsp;&nbsp;Su contacto: ${object.user_id.name}\n"
" % endif\n"
" % endif\n"
" </p>\n"
"\n"
" <br/>\n"
" <p>Si tiene alguna pregunta, no dude en contactarnos.</p>\n"
" <p>Gracias por elegir a ${object.company_id.name or 'nosotros'}!</p>\n"
" <br/>\n"
" <br/>\n"
" <div style=\"width: 375px; margin: 0px; padding: 0px; background-color: "
"#8E0000; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; "
"background-repeat: repeat no-repeat;\">\n"
" <h3 style=\"margin: 0px; padding: 2px 14px; font-size: 12px; color: "
"#DDD;\">\n"
" <strong style=\"text-transform:uppercase;\">${object.company_id."
"name}</strong></h3>\n"
" </div>\n"
" <div style=\"width: 347px; margin: 0px; padding: 5px 14px; line-height: "
"16px; background-color: #F2F2F2;\">\n"
" <span style=\"color: #222; margin-bottom: 5px; display: block; \">\n"
" ${object.company_id.partner_id.sudo()."
"with_context(show_address=True, html_format=True).name_get()[0][1] | safe}\n"
" </span>\n"
" % if object.company_id.phone:\n"
" <div style=\"margin-top: 0px; margin-right: 0px; margin-bottom: "
"0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: "
"0px; padding-left: 0px; \">\n"
" Teléfono: ${object.company_id.phone}\n"
" </div>\n"
" % endif\n"
" % if object.company_id.website:\n"
" <div>\n"
" Web: <a href=\"${object.company_id.website}\">${object."
"company_id.website}</a>\n"
" </div>\n"
" %endif\n"
" <p></p>\n"
" </div>\n"
" <p></p>\n"
" <a href=\"${object.get_base_url()}/my/contracts/${object.id}?"
"access_token=${object.access_token}\" target=\"_blank\" style=\"background-"
"color:#875A7B;padding: 8px 16px 8px 16px; text-decoration: none; color: "
"#fff; border-radius: 5px; font-size:13px;\">Ver contrato</a>\n"
"</div>\n"
" "
#. module: contract
#: model:mail.template,subject:contract.email_contract_template
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 ""
@@ -127,6 +215,10 @@ msgid ""
" the\n"
" invoiced period"
msgstr ""
"<strong>#END#</strong>: Fecha final\n"
" del\n"
" periodo\n"
" facturado"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_template_form_view
@@ -142,6 +234,10 @@ msgid ""
" of the\n"
" invoiced period"
msgstr ""
"<strong>#START#</strong>: Fecha\n"
" inicio\n"
" del\n"
" periodo facturado"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_template_form_view
@@ -156,7 +252,7 @@ msgstr "<strong>Contrato: </strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "<strong>Customer:</strong>"
msgstr ""
msgstr "<strong>Cliente:</strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
@@ -166,18 +262,23 @@ msgstr "<strong>Fecha de inicio</strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "<strong>Date end</strong>"
msgstr ""
msgstr "<strong>Fecha fin</strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "<strong>Date of Next Invoice</strong>"
msgstr ""
msgstr "<strong>Fecha de siguiente factura</strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
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>"
@@ -206,7 +307,7 @@ msgstr "<strong>Elementos recurrentes</strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "<strong>Reference</strong>"
msgstr ""
msgstr "<strong>Referencia</strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
@@ -216,7 +317,7 @@ msgstr "<strong>Responsable: </strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "<strong>Responsible:</strong>"
msgstr ""
msgstr "<strong>Responsable:</strong>"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.report_contract_document
@@ -259,7 +360,7 @@ msgstr "Línea de Contrato Recurrente Abstracta"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__access_warning
msgid "Access warning"
msgstr ""
msgstr "Alerta de acceso"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__message_needaction
@@ -280,7 +381,7 @@ msgstr "Actividades"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__activity_exception_decoration
msgid "Activity Exception Decoration"
msgstr ""
msgstr "Decoración de excepción de actividad"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__activity_state
@@ -371,7 +472,7 @@ msgstr "¿Precio automático?"
#. module: contract
#: model:ir.model,name:contract.model_contract_recurrency_basic_mixin
msgid "Basic recurrency mixin for abstract contract models"
msgstr ""
msgstr "Mixin de recurrencia básica para modelos de contrato abstracto"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
@@ -434,7 +535,7 @@ msgstr "Entidad comercial"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "Communication"
msgstr ""
msgstr "Comunicación"
#. module: contract
#: model:ir.model,name:contract.model_res_company
@@ -475,6 +576,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
@@ -485,7 +587,12 @@ msgstr "Contrato"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_my_contracts
msgid "Contract #"
msgstr ""
msgstr "Contrato #"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "Contract -"
msgstr "Contrato -"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_terminate_form_view
@@ -519,16 +626,16 @@ 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 del contrato"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid "Contract Name"
msgstr "Nombre del contrato"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "Contract Order -"
msgstr ""
#. module: contract
#: model:ir.model,name:contract.model_contract_tag
#: model:ir.ui.menu,name:contract.contract_tag_menu
@@ -704,7 +811,7 @@ msgstr "Líneas de contrato"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__contract_line_fixed_ids
msgid "Contract lines (fixed)"
msgstr ""
msgstr "Líneas de contrato (fijo)"
#. module: contract
#: code:addons/contract/models/contract.py:0
@@ -716,6 +823,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:0
#, 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"
@@ -770,6 +888,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
@@ -783,6 +902,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
@@ -820,14 +940,17 @@ msgstr "Contratos de cliente"
#. module: contract
#: model:ir.model.fields,help:contract.field_contract_contract__access_url
msgid "Customer Portal URL"
msgstr ""
msgstr "URL para portal"
#. module: contract
#: code:addons/contract/controllers/main.py:0
#: 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 ""
msgstr "Fecha"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__date_end
@@ -854,7 +977,7 @@ msgstr "Fecha de inicio"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_my_contracts
msgid "Date end"
msgstr ""
msgstr "Fecha fin"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract__recurring_next_date
@@ -871,7 +994,7 @@ msgstr "Próxima fecha de factura"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "Date of next invoice"
msgstr ""
msgstr "Fecha de siguiente factura"
#. module: contract
#: model:ir.model.fields.selection,name:contract.selection__contract_abstract_contract__recurring_rule_type__daily
@@ -910,9 +1033,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"
@@ -948,6 +1074,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_recurrency_basic_mixin__display_name
#: model:ir.model.fields,field_description:contract.field_contract_recurrency_mixin__display_name
#: model:ir.model.fields,field_description:contract.field_contract_tag__display_name
@@ -1014,6 +1141,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_recurrency_basic_mixin__id
#: model:ir.model.fields,field_description:contract.field_contract_recurrency_mixin__id
#: model:ir.model.fields,field_description:contract.field_contract_tag__id
@@ -1026,12 +1154,12 @@ msgstr "ID"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__activity_exception_icon
msgid "Icon"
msgstr ""
msgstr "Icono"
#. module: contract
#: model:ir.model.fields,help:contract.field_contract_contract__activity_exception_icon
msgid "Icon to indicate an exception activity."
msgstr ""
msgstr "Icono para indicar una actividad de excepción."
#. module: contract
#: model:ir.model.fields,help:contract.field_res_company__create_new_line_at_contract_line_renew
@@ -1114,7 +1242,7 @@ msgstr "Facturar cada"
#. module: contract
#: model:mail.message.subtype,name:contract.mail_message_subtype_invoice_created
msgid "Invoice created"
msgstr ""
msgstr "Factura creada"
#. module: contract
#: model:ir.model.fields,help:contract.field_contract_abstract_contract__recurring_interval
@@ -1174,7 +1302,7 @@ msgstr "Es seguidor"
#: model:ir.model.fields,field_description:contract.field_contract_line__is_recurring_note
#: model:ir.model.fields,field_description:contract.field_contract_template_line__is_recurring_note
msgid "Is Recurring Note"
msgstr ""
msgstr "Es nota recurrente"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_line_wizard_stop_form_view
@@ -1192,12 +1320,12 @@ msgstr "Diario"
#. module: contract
#: model:ir.model,name:contract.model_account_move
msgid "Journal Entries"
msgstr ""
msgstr "Asientos contables"
#. module: contract
#: model:ir.model,name:contract.model_account_move_line
msgid "Journal Item"
msgstr ""
msgstr "Apunte contable"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract_line__last_date_invoiced
@@ -1216,6 +1344,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_recurrency_basic_mixin____last_update
#: model:ir.model.fields,field_description:contract.field_contract_recurrency_mixin____last_update
#: model:ir.model.fields,field_description:contract.field_contract_tag____last_update
@@ -1231,6 +1360,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
@@ -1244,6 +1374,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
@@ -1254,7 +1385,7 @@ msgstr "Última Actualización en"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.portal_contract_page
msgid "Last date invoice"
msgstr ""
msgstr "Última fecha de factura"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
@@ -1271,7 +1402,7 @@ msgstr "Adjunto principal"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__manual_currency_id
msgid "Manual Currency"
msgstr ""
msgstr "Moneda manual"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_line__manual_renew_needed
@@ -1299,6 +1430,8 @@ msgid ""
"Mark this check if you want to control recurrrence at line level instead of "
"all together for the whole contract."
msgstr ""
"Marque esta casilla si desea controlar la recurrencia a nivel de línea en "
"lugar de todos juntos para todo el contrato."
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__message_has_error
@@ -1310,6 +1443,12 @@ msgstr "Mensaje de Error de entrega"
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
#: model:ir.model.fields.selection,name:contract.selection__contract_abstract_contract__recurring_rule_type__monthly
#: model:ir.model.fields.selection,name:contract.selection__contract_abstract_contract_line__auto_renew_rule_type__monthly
@@ -1437,7 +1576,7 @@ msgstr ""
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__message_has_error_counter
msgid "Number of errors"
msgstr ""
msgstr "Número de errores"
#. module: contract
#: model:ir.model.fields,help:contract.field_contract_contract__message_needaction_counter
@@ -1502,7 +1641,7 @@ msgstr "Por favor defina un diario de %s para la compañía '%s'."
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__access_url
msgid "Portal Access URL"
msgstr ""
msgstr "URL de acceso al portal"
#. module: contract
#: model:ir.model.fields.selection,name:contract.selection__contract_abstract_contract__recurring_invoicing_type__post-paid
@@ -1536,7 +1675,7 @@ msgstr "Líneas de contrato predecesora"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
msgid "Preview"
msgstr ""
msgstr "Previsualizar"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_abstract_contract__pricelist_id
@@ -1598,12 +1737,12 @@ msgstr "Recurrencia"
#: model:ir.model.fields,field_description:contract.field_contract_contract__line_recurrence
#: model:ir.model.fields,field_description:contract.field_contract_template__line_recurrence
msgid "Recurrence at line level?"
msgstr ""
msgstr "¿Recurrencia a nivel de línea?"
#. module: contract
#: model:ir.model,name:contract.model_contract_recurrency_mixin
msgid "Recurrency mixin for contract models"
msgstr ""
msgstr "Mixin de recurrencia para modelos contractuales"
#. module: contract
#: model_terms:ir.ui.view,arch_db:contract.contract_contract_form_view
@@ -1671,7 +1810,7 @@ msgstr "Usuario Responsable"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__message_has_sms_error
msgid "SMS Delivery error"
msgstr ""
msgstr "Error de entrega de SMS"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_res_partner__sale_contract_count
@@ -1691,7 +1830,7 @@ msgstr "Sección"
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_contract__access_token
msgid "Security Token"
msgstr ""
msgstr "Token de seguridad"
#. module: contract
#: model:ir.model.fields.selection,name:contract.selection__contract_abstract_contract__recurring_rule_type__semesterly
@@ -1711,6 +1850,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
@@ -1962,7 +2106,7 @@ msgstr "Para renovar"
#. module: contract
#: model:ir.model.fields,help:contract.field_contract_contract__activity_exception_decoration
msgid "Type of the exception activity on record."
msgstr ""
msgstr "Tipo de actividad de excepción en registro."
#. module: contract
#: model:ir.model.fields,field_description:contract.field_contract_line__is_un_cancel_allowed
@@ -2167,231 +2311,5 @@ msgstr "ejemplo Contrato XYZ"
msgid "on"
msgstr "en"
#~ msgid ""
#~ "\n"
#~ "<div style=\"font-family: 'Lucida Grande', Ubuntu, Arial, Verdana, sans-"
#~ "serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; "
#~ "\">\n"
#~ " <p>Hello ${object.partner_id.name or ''},</p>\n"
#~ " <p>A new contract has been created: </p>\n"
#~ "\n"
#~ " <p style=\"border-left: 1px solid #8e0000; margin-left: 30px;\">\n"
#~ " &nbsp;&nbsp;<strong>REFERENCES</strong><br />\n"
#~ " &nbsp;&nbsp;Contract: <strong>${object.name}</strong><br />\n"
#~ " % if object.date_start:\n"
#~ " &nbsp;&nbsp;Contract Date Start: ${object.date_start or ''}<br />\n"
#~ " % endif\n"
#~ "\n"
#~ " % if object.user_id:\n"
#~ " % if object.user_id.email:\n"
#~ " &nbsp;&nbsp;Your Contact: <a href=\"mailto:${object.user_id.email "
#~ "or ''}?subject=Contract%20${object.name}\">${object.user_id.name}</a>\n"
#~ " % else:\n"
#~ " &nbsp;&nbsp;Your Contact: ${object.user_id.name}\n"
#~ " % endif\n"
#~ " % endif\n"
#~ " </p>\n"
#~ "\n"
#~ " <br/>\n"
#~ " <p>If you have any questions, do not hesitate to contact us.</p>\n"
#~ " <p>Thank you for choosing ${object.company_id.name or 'us'}!</p>\n"
#~ " <br/>\n"
#~ " <br/>\n"
#~ " <div style=\"width: 375px; margin: 0px; padding: 0px; background-"
#~ "color: #8E0000; border-top-left-radius: 5px 5px; border-top-right-radius: "
#~ "5px 5px; background-repeat: repeat no-repeat;\">\n"
#~ " <h3 style=\"margin: 0px; padding: 2px 14px; font-size: 12px; "
#~ "color: #DDD;\">\n"
#~ " <strong style=\"text-transform:uppercase;\">${object."
#~ "company_id.name}</strong></h3>\n"
#~ " </div>\n"
#~ " <div style=\"width: 347px; margin: 0px; padding: 5px 14px; line-"
#~ "height: 16px; background-color: #F2F2F2;\">\n"
#~ " <span style=\"color: #222; margin-bottom: 5px; display: block; "
#~ "\">\n"
#~ " ${object.company_id.partner_id.sudo()."
#~ "with_context(show_address=True, html_format=True).name_get()[0][1] | "
#~ "safe}\n"
#~ " </span>\n"
#~ " % if object.company_id.phone:\n"
#~ " <div style=\"margin-top: 0px; margin-right: 0px; margin-"
#~ "bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; "
#~ "padding-bottom: 0px; padding-left: 0px; \">\n"
#~ " Phone: ${object.company_id.phone}\n"
#~ " </div>\n"
#~ " % endif\n"
#~ " % if object.company_id.website:\n"
#~ " <div>\n"
#~ " Web: <a href=\"${object.company_id.website}\">${object."
#~ "company_id.website}</a>\n"
#~ " </div>\n"
#~ " %endif\n"
#~ " <p></p>\n"
#~ " </div>\n"
#~ "</div>\n"
#~ " "
#~ msgstr ""
#~ "\n"
#~ "<div style=\"font-family: 'Lucida Grande', Ubuntu, Arial, Verdana, sans-"
#~ "serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; "
#~ "\">\n"
#~ " <p>Hola ${object.partner_id.name or ''},</p>\n"
#~ " <p>Se ha creado un nuevo contrato: </p>\n"
#~ "\n"
#~ " <p style=\"border-left: 1px solid #8e0000; margin-left: 30px;\">\n"
#~ " &nbsp;&nbsp;<strong>REFERENCIAS</strong><br />\n"
#~ " &nbsp;&nbsp;Contrato: <strong>${object.name}</strong><br />\n"
#~ " &nbsp;&nbsp;Fecha de inicio del contrato: ${object.date_start or "
#~ "''}<br />\n"
#~ "\n"
#~ " % if object.user_id:\n"
#~ " % if object.user_id.email:\n"
#~ " &nbsp;&nbsp;Contacto: <a href=\"mailto:${object.user_id.email or "
#~ "''}?subject=Contrato%20${object.name}\">${object.user_id.name}</a>\n"
#~ " % else:\n"
#~ " &nbsp;&nbsp;Contacto: ${object.user_id.name}\n"
#~ " % endif\n"
#~ " % endif\n"
#~ " </p>\n"
#~ "\n"
#~ " <br/>\n"
#~ " <p>Si tiene cualquier pregunta, no dude en contactarnos.</p>\n"
#~ " <p>Gracias por elegir ${object.company_id.name or 'nos'}!</p>\n"
#~ " <br/>\n"
#~ " <br/>\n"
#~ " <div style=\"width: 375px; margin: 0px; padding: 0px; background-"
#~ "color: #8E0000; border-top-left-radius: 5px 5px; border-top-right-radius: "
#~ "5px 5px; background-repeat: repeat no-repeat;\">\n"
#~ " <h3 style=\"margin: 0px; padding: 2px 14px; font-size: 12px; "
#~ "color: #DDD;\">\n"
#~ " <strong style=\"text-transform:uppercase;\">${object."
#~ "company_id.name}</strong></h3>\n"
#~ " </div>\n"
#~ " <div style=\"width: 347px; margin: 0px; padding: 5px 14px; line-"
#~ "height: 16px; background-color: #F2F2F2;\">\n"
#~ " <span style=\"color: #222; margin-bottom: 5px; display: block; "
#~ "\">\n"
#~ " ${object.company_id.partner_id.sudo()."
#~ "with_context(show_address=True, html_format=True).name_get()[0][1] | "
#~ "safe}\n"
#~ " </span>\n"
#~ " % if object.company_id.phone:\n"
#~ " <div style=\"margin-top: 0px; margin-right: 0px; margin-"
#~ "bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; "
#~ "padding-bottom: 0px; padding-left: 0px; \">\n"
#~ " Teléfono: ${object.company_id.phone}\n"
#~ " </div>\n"
#~ " % endif\n"
#~ " % if object.company_id.website:\n"
#~ " <div>\n"
#~ " Web: <a href=\"${object.company_id.website}\">${object."
#~ "company_id.website}</a>\n"
#~ " </div>\n"
#~ " %endif\n"
#~ " <p></p>\n"
#~ " </div>\n"
#~ "</div>\n"
#~ " "
#~ msgid ""
#~ "<strong>#END#</strong>: End date\n"
#~ " of\n"
#~ " the\n"
#~ " invoiced period"
#~ msgstr ""
#~ "<strong>#END#</strong>: Fecha final\n"
#~ " del\n"
#~ " periodo\n"
#~ " facturado"
#~ msgid ""
#~ "<strong>#START#</strong>: Start\n"
#~ " date\n"
#~ " of the\n"
#~ " invoiced period"
#~ msgstr ""
#~ "<strong>#START#</strong>: Fecha\n"
#~ " inicio\n"
#~ " del\n"
#~ " periodo facturado"
#~ msgid "If checked new messages require your attention."
#~ msgstr "Si está marcado los nuevos mensajes requieren su atención."
#~ msgid "Invoice"
#~ msgstr "Factura"
#~ msgid "Invoice Line"
#~ msgstr "Línea de factura"
#~ msgid "Number of error"
#~ msgstr "Número de error"
#~ msgid "Overdue"
#~ msgstr "Vencido"
#~ msgid "Planned"
#~ msgstr "Planificado"
#~ msgid "Today"
#~ msgstr "Hoy"
#~ msgid ""
#~ "<strong>Notes: </strong>\n"
#~ " <br/>"
#~ msgstr ""
#~ "<strong>Notas: </strong>\n"
#~ " <br/>"
#~ msgid "Specify if process date is 'from' or 'to' invoicing date"
#~ msgstr ""
#~ "Especifica si la fecha de proceso es desde o hasta la fecha de facturación"
#~ msgid "Account Analytic Contract"
#~ msgstr "Contratos Cuenta Analítica"
#~ msgid "Account Analytic Lines"
#~ msgstr "Ver líneas contables analíticas"
#~ msgid "Date From"
#~ msgstr "Fecha inicio"
#~ msgid "Date To"
#~ msgstr "Fecha fin"
#~ msgid "Date from invoiced period"
#~ msgstr "Fecha del periodo facturado"
#~ msgid "Date to invoiced period"
#~ msgstr "Fecha del periodo facturado"
#~ msgid "Generate recurring invoices automatically"
#~ msgstr "Generar facturas recurrentes automáticamente"
#~ msgid "Partner and dependents"
#~ msgstr "Empresa y contactos"
#~ msgid "You must first select a Customer for Contract %s!"
#~ msgstr "¡Seleccione un cliente para este contrato %s!"
#~ msgid "You must first select a Supplier for Contract %s!"
#~ msgstr "Tiene que seleccionar un Proveedor para el contrato %s!"
#~ msgid ""
#~ "You must review start and end dates!\n"
#~ "%s"
#~ msgstr ""
#~ "Debe revisar las fechas de inicio y de fin\n"
#~ "%s"
#~ msgid "You must supply a customer for the contract '%s'"
#~ msgstr "Debe especificar un cliente para el contrato '%s'"
#~ msgid "You must supply a start date for contract '%s'"
#~ msgstr "Debe suministrar una fecha de inicio para el contrato '%s'"
#~ msgid "account.analytic.invoice.line"
#~ msgstr "account.analytic.invoice.line"
#~ msgid "⇒ Show recurring invoices"
#~ msgstr "⇒ Mostrar facturas recurrentes"
#~ msgid "Contract Order -"
#~ msgstr "Pedido de contrato -"

File diff suppressed because it is too large Load Diff

View File

@@ -7,6 +7,7 @@ from . import contract_template
from . import contract
from . import contract_template_line
from . import contract_line
from . import contract_modification
from . import account_move
from . import res_partner
from . import contract_tag

View File

@@ -113,6 +113,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],
email_layout_xmlid="contract.template_contract_modification",
)
modification_ids_not_sent.write({"sent": True})
def _compute_access_url(self):
for record in self:

View File

@@ -0,0 +1,38 @@
# 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

@@ -132,6 +132,50 @@
</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 id="total" class="row" name="total">
<div class="col-4 ml-auto">
<table class="table table-sm">

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,70 @@
/* 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

@@ -28,6 +28,7 @@ class TestContractBase(common.SavepointCase):
{
"name": "partner test contract",
"property_product_pricelist": cls.pricelist.id,
"email": "demo@demo.com",
}
)
cls.product_1 = cls.env.ref("product.product_product_1")
@@ -170,6 +171,29 @@ 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), 1)
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

@@ -16,6 +16,19 @@
/>
</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>
<template id="assets_tests" inherit_id="web.assets_tests">
<xpath expr="." position="inside">
<script

View File

@@ -406,6 +406,18 @@
</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" />
<group>

View File

@@ -94,7 +94,7 @@
<t t-set="card_header">
<h5 class="mb-0">
<span>
Contract Order - <span t-field="contract.name" />
Contract - <span t-field="contract.name" />
</span>
</h5>
</t>
@@ -259,6 +259,52 @@
</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>
</section>
<!-- chatter -->
<div id="contract_communication" class="mt-4">
<h2>Communication</h2>