Odoo技术问询:如何在Chatter中添加跳转至内部调拨表单视图的链接
实现方法
1. 在审批模型中添加Chatter消息推送方法
既然已经能通过自动化规则生成内部调拨记录,只需在审批相关模型中新增自定义方法,用于生成带跳转链接的Chatter消息:
from odoo import models, api class ApprovalModel(models.Model): _inherit = '你的审批模型标识' # 替换为实际的审批模型名称 @api.model def post_transfer_link_to_chatter(self, approval_id, transfer_id): approval_record = self.browse(approval_id) transfer_record = self.env['stock.picking'].browse(transfer_id) # 内部调拨对应stock.picking模型,确认模型匹配 # 构造Odoo内部表单视图链接 transfer_form_url = f"/web#id={transfer_record.id}&model=stock.picking&view_type=form" # 组装带链接的消息内容 message_content = f"已生成内部调拨记录: <a href='{transfer_form_url}' target='_blank'>{transfer_record.name}</a>" # 推送消息至Chatter approval_record.message_post( body=message_content, message_type='notification', subtype_xmlid='mail.mt_note' )
2. 修改自动化规则触发消息推送
在现有Automation Rule中,完成内部调拨记录创建后,调用上述方法:
- 若自动化规则基于审批记录触发:
在"执行Python代码"动作中添加:# 假设transfer是你创建好的内部调拨记录对象 record.post_transfer_link_to_chatter(record.id, transfer.id) - 若自动化规则基于内部调拨记录触发:
在"执行Python代码"动作中添加:# 替换为实际关联审批记录的字段,比如approval_id approval_record = env['你的审批模型标识'].browse(record.approval_id.id) approval_record.post_transfer_link_to_chatter(approval_record.id, record.id)
3. 验证权限与效果
- 确保操作用户拥有
stock.picking表单视图的访问权限 - 触发审批流程后,检查Chatter中是否出现带链接的消息,点击链接确认能正常打开内部调拨记录表单
无代码替代方案:使用邮件模板
若不想编写Python代码,可通过邮件模板实现:
- 进入「设置->技术->邮件->邮件模板」,新建模板并关联审批模型
- 模板内容中添加:
已生成内部调拨记录: <a t-att-href="'/web#id=' + transfer_id + '&model=stock.picking&view_type=form'">${transfer_name}</a>
- 在自动化规则中选择「发送邮件」动作,使用该模板并传递
transfer_id和transfer_name变量
内容的提问来源于stack exchange,提问作者Ahmed Haroon
相关产品推荐
相关产品推荐

