我只是个新手。我正在为Odoo11创建一个自定义模块。我想在hr_payroll
模块的hr.payslip
中添加一个新链接。因此,当管理员导航到一个单独的工资单时,我想在操作中添加一个新选项,名为电子邮件工资条。单击此按钮时,它将向员工发送电子邮件。在
为了实现这一点,我制作了一个名为电子邮件工资条的定制模块。在
代码是这样的:
初始化.py
from . import models
清单.py
^{pr2}$模型init.py
from . import email_payslip
模型电子邮件_工资条.py在
import babel
from datetime import date, datetime, time
from dateutil.relativedelta import relativedelta
from pytz import timezone
from odoo import api, fields, models, tools, _
from odoo.addons import decimal_precision as dp
from odoo.exceptions import UserError, ValidationError
class EmailPayslip(models.Model):
#print 'sdabhd'
_name = 'email.payslip'
name = fields.Char(string="Title", required=True)
description = 'Email Payslip'
EmailPayslip()
查看电子邮件_工资条.xml在
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<act_window id="email_payslip" src_model="hr.payslip" res_model="hr.payslip.line" name="Email Payslip"/>
</odoo>
上面的代码显示了操作中的电子邮件工资条菜单,但当我单击链接时,它显示的是员工工资单记录。在
有人能帮我吗?实现这一目标的正确方法是什么?如有任何帮助和建议,我们将不胜感激。在
到目前为止,我得到的是:
我已经知道,您希望在模型
hr.payslip
的形式的actions部分添加一个按钮,该模型由模块hr_payroll
创建。在我看到您正在创建一个名为
email.payslip
的新模型。这不是实现目标所必需的,请检查以下步骤:修改模块的}:
__manifest__.py
,使其依赖于hr_payroll
和{按如下方式修改XML操作:
^{pr2}$这是在模型
hr.payslip
视图的actions部分创建一个按钮。该按钮将调用此模型的Python方法,该方法将负责调用弹出窗口以发送电子邮件。在现在让我们用Python定义该方法:
只需将
your_module
替换为模块的技术名称。这个方法将打开表单来发送电子邮件,我们告诉它在默认情况下加载我们的自定义电子邮件模板,其XML ID是email_template_payslip
。在现在,我们必须用XML定义电子邮件模板。在模块的根路径中创建一个名为
data
的新文件夹,放在XML文件中,例如,名为email_template_data.xml
。不要忘记在__manifest__.py
的data
键中添加'data/email_template_data.xml'
行,以告诉模块它必须加载该XML文件内容:在
ctx
变量中,您拥有在Python方法中添加的所有数据。在object
变量中,当前hr.payslip
记录的每个字段。您可以使用点表示法来访问任何关系字段。查看其他电子邮件模板以了解更多有关Mako语言的信息。在如果您确实想使用您的模型
email.payslip
,那么您应该执行几乎相同的过程(取决于您到底想要什么),并将hr.payslip
引用替换为email.payslip
引用。在一旦您确定不再对电子邮件模板进行任何修改,可以将
noupdate
属性设置为1,以允许Odoo用户在更新模块时从界面自定义电子邮件模板,而不会丢失更改:一旦您看到电子邮件弹出窗口和默认加载的模板“确定”,请记住选中以下三个步骤:
force_send
设置为True。在相关问题 更多 >
编程相关推荐