我想编写一个自定义模块来替换邮件模板。
这些模板包含在基本的Odoo插件中,例如sale:
文件sale.order
/sale/data/mail_template_data.xml
模板
此模板如下:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!--Email template -->
<record id="email_template_edi_sale" model="mail.template">
<field name="name">Sales Order - Send by Email</field>¬
...
</odoo>
由于自定义模块要替换此标准基本模板:
<data noupdate>
中应该写什么?sale
会发生什么?Odoo 10社区版。
答案 0 :(得分:3)
要替换电子邮件模板,只需在模板名称前面添加插件名称后跟点(。),并确保从前端删除默认电子邮件模板。然后更新您的自定义插件。这将取代旧模板。
示例:
<record id="sale.email_template_edi_sale" model="mail.template">
<field name="name">Sales Quotation</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} ${object.state in ('draft', 'sent') and 'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })</field>
<field name="partner_to">${object.partner_invoice_id.id}</field>
....
....
</record>
答案 1 :(得分:2)
location / {
try_files $uri $uri/ /index.php?$query_string;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
请将您的代码添加到
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<!--Email template -->
<record id="email_template_edi_sale" model="mail.template">
<field name="name">Sales Order - Send by Email</field>
...
</odoo>
这将删除原始邮件模板,并添加一个具有相同ID的新模板,以便不扰动odoo功能。
答案 2 :(得分:0)
不要删除原始模板,您将丢失原始模块字段,并且某些事情将停止工作。而是为模板更改ir.model.data中的noupdate
值。
要在模块更新时自动执行此操作:
修改模型'ir.model.data'并添加一个allow_update
方法,在models文件夹中创建一个 ir_model_data.py (修改__init__.py以包括新文件) :
from odoo import models, fields, api
class IrModelData(models.Model):
_inherit = 'ir.model.data'
@api.model
def allow_update(self, module, name, model):
self.search([('module', '=', module), ('name', '=', name), ('model', '=', model)])[0].noupdate = False
在记录更新之前将函数调用元素添加到allow_update
并传递原始模块名称,external_id和'mail.template':
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<function model='ir.model.data' name='allow_update'>
<value>sale</value>
<value>email_template_edi_sale</value>
<value>mail.template</value>
</function>
<record id="sale.email_template_edi_sale" model="mail.template" >
<field name="body_html" type="html">
<div style="margin: 0px; padding: 0px;">
<p style="margin: 0px; padding: 0px; font-size: 13px;">
% set doc_name = 'quotation' if object.state in ('draft', 'sent') else 'order'
Dear ${object.partner_id.name}