我正在创建一个自定义模块,我希望在该模块中获取工资单中所有选定的员工并向他们发送默认电子邮件。为此,我正在这样做
显示操作按钮
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="action_email_payslip" model="ir.actions.server">
<field name="name">Email</field>
<field eval="2" name="sequence"/>
<field name="view_mode">form</field>
<field name="multi" eval="False"/>
<field name="model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="binding_model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="state">code</field>
<field name="code">
action = records.action_send_email()
</field>
</record>
</data>
</odoo>
在模型中,我的代码是这样的
从odoo导入模型,字段,api,_
class EmailPayslip(models.Model):
_inherit = 'hr.payslip'
@api.multi
def action_send_email(self):
selected_employess = []
not_selected_employees = []
for payslip in self:
try:
lang = payslip.employee_id.user_id.lang
template.with_context(lang=lang).send_mail(
self.env.user.id, force_send=True, raise_exception=True
)
selected_employess.append(payslip.name)
except Exception as e:
not_selected_employees.append(payslip.name)
print(selected_employess)
但是它显示出类似错误
ValueError: Expected singleton: %s" % record
ValueError:预期的单例:hr.payslip(1、3、4)
有人可以告诉我我在这里做错了什么以及如何解决这个问题? 任何帮助和建议都是非常可取的。
此致
答案 0 :(得分:0)
尝试下面的代码段,
template.with_context(lang=lang).send_mail(
payslip.employee_id.user_id.id, force_send=True, raise_exception=True
)
答案 1 :(得分:0)
也尝试像下面那样循环“工资单”
for payslip in self:
for slip in payslip:
try:
lang = payslip.employee_id.user_id.lang
template.with_context(lang=lang).send_mail(
self.env.user.id, force_send=True, raise_exception=True
)
selected_employess.append(slip.name)
except Exception as e:
not_selected_employees.append(slip.name)