Odoo14如何通过服务器动作向多位求职者批量发送拒信并归档
Odoo14 批量发送求职拒绝邮件并自动归档实现方案
现有代码问题梳理
- 服务器动作配置错误:
model_id和binding_model_id错误关联了邮件模板,应关联求职者模型hr.applicant - 代码拼写错误:
self.env.user.emoployee_id拼写错误,正确写法为employee_id - 未适配批量场景:现有方法仅支持单条求职者记录发送,未处理批量选中多条记录的场景
- 冗余配置覆盖模板逻辑:手动传入
email_to、email_from等参数会覆盖邮件模板内置的动态取值规则,无需额外配置 - 缺少归档逻辑:邮件发送完成后没有执行求职者记录归档的相关代码
修正后完整代码
1. 邮件模板(XML)
仅需删除原有模板中多余的enter code here冗余内容即可,其余配置无需修改:
<record id="email_template_custom" model="mail.template"> <field name="name">求职拒绝通知邮件</field> <field name="model_id" ref="hr_recruitment_custom.model_hr_applicant"/> <field name="email_from">${object.user_id.email_formatted |safe}</field> <field name="email_to">${object.email_from}</field> <field name="subject">应聘反馈:(岗位 ${object.job_id.name})</field> <field name="body_html" type="html"> <div style="margin: 0px; padding: 0px;"> <p style="margin: 0px; padding: 0px; font-size: 13px;"> 尊敬的 ${object.partner_name}: <br/> <br/> 感谢您应聘${object.company_id.name}的${object.job_id.name}岗位,也十分感谢您投入时间参与我们的招聘流程。 <br/> <br/> 经过综合评估,我们本次选择了更匹配岗位需求的候选人,很遗憾没能和您共事。您的能力背景给我们留下了深刻印象,后续我们还有更多岗位开放,欢迎您持续关注并投递。 <br/> <br/> 祝您求职顺利,事业发展顺遂。 <br/> <br/> 此致 敬礼 ${object.user_id.name} </p> </div> </field> </record>
如果要保留英文模板也可以直接用原有内容,删除冗余字符即可。
2. 业务逻辑代码(Python)
新增批量处理逻辑和归档逻辑:
def action_send_refusal_by_email(self): # 加载预设邮件模板 template = self.env.ref('hr_recruitment_custom.email_template_custom') for applicant in self: # 跳过没有留邮箱的求职者 if not applicant.email_from: continue # 发送邮件 template.send_mail(applicant.id, force_send=True, raise_exception=False) # 归档逻辑:设置active=False即自动将记录移入归档,若需要同步修改求职阶段,可新增stage_id字段赋值 applicant.write({'active': False})
3. 服务器动作配置(XML)
修正模型关联配置:
<record id="action_refuse_applicants" model="ir.actions.server"> <field name="name">批量发送拒绝信并归档</field> <!-- 若你的自定义求职者模型在hr_recruitment_custom模块中,ref改为hr_recruitment_custom.model_hr_applicant --> <field name="model_id" ref="hr_recruitment.model_hr_applicant"/> <field name="binding_model_id" ref="hr_recruitment.model_hr_applicant"/> <field name="binding_type">action</field> <field name="state">code</field> <field name="code">records.action_send_refusal_by_email()</field> </record>
功能验证
升级自定义模块后,进入求职者列表页,勾选需要处理的记录,点击动作菜单中的「批量发送拒绝信并归档」即可自动完成批量邮件发送和记录归档操作。
内容的提问来源于stack exchange,提问作者Jaymezon
相关产品推荐
相关产品推荐

