如何在Odoo 10 GUI中创建服务器动作打印自定义拣货报表(ID:690)
Odoo 服务器动作打印报表及自动化配置方案
一、通过GUI界面的服务器动作打印通用报表
- 进入系统后台路径:设置 > 技术 > 动作 > 服务器动作,点击「创建」按钮。
- 填写基础配置:
- 名称:设置清晰的标识名(例如「打印销售订单明细报表」)
- 模型:选择报表对应的业务模型(如销售订单选
sale.order,库存拣货单选stock.picking) - 动作类型:选择「Python代码」
- 编写打印逻辑代码,核心调用Odoo内置报表执行方法:
# 获取当前操作的单条记录(批量操作可改用records变量) active_record = env[MODEL_NAME].browse(env.context.get('active_id')) # 替换REPORT_ID为目标报表的实际ID report_action = env['ir.actions.report'].browse(REPORT_ID) return report_action.report_action(active_record) - 保存服务器动作后,回到对应业务模型的列表/表单页面,选中目标记录,点击顶部「动作」下拉菜单,选择创建的服务器动作即可触发打印。
二、Odoo 10 专属配置:打印ID690拣货报表+自动打印新确认订单
2.1 创建打印ID690拣货报表的服务器动作
- 按上述路径进入服务器动作创建页面,填写配置:
- 名称:「打印ID690自定义拣货报表」
- 模型:
stock.picking(拣货单模型,若报表关联其他模型请自行调整) - 动作类型:「Python代码」
- 写入针对性打印代码:
# 获取当前选中的拣货单记录 picking_record = env['stock.picking'].browse(env.context.get('active_id')) # 调用ID为690的自定义报表 target_report = env['ir.actions.report'].browse(690) return target_report.report_action(picking_record) - 保存后测试:进入拣货单列表,选中记录,通过「动作」菜单触发该动作,验证报表正常输出。
2.2 配置自动化:新确认订单自动打印拣货报表
订单确认后通常会自动生成出库拣货单,需在订单状态变更为「已确认」时触发打印动作:
- 进入设置 > 技术 > 自动化 > 动作触发,点击「创建」。
- 配置触发规则:
- 名称:「订单确认自动打印拣货报表」
- 模型:
sale.order(销售订单模型) - 触发时机:选择「创建或更新时」,勾选「更新后」
- 触发条件:设置域条件为
[('state', '=', 'sale')](仅当订单状态变为已确认时触发)
- 关联服务器动作:
- 切换到「动作」标签页,点击「添加一条」
- 动作类型:选择「服务器动作」
- 服务器动作:选择刚创建的「打印ID690自定义拣货报表」
- 优化服务器动作代码(关联订单对应的拣货单):
由于触发源是销售订单,需在代码中找到订单关联的拣货单,调整代码如下:# 获取当前确认的销售订单 sale_order = env['sale.order'].browse(env.context.get('active_id')) # 筛选出该订单对应的出库拣货单 outgoing_pickings = sale_order.picking_ids.filtered(lambda p: p.picking_type_code == 'outgoing') if outgoing_pickings: target_report = env['ir.actions.report'].browse(690) return target_report.report_action(outgoing_pickings) - 保存所有配置后测试:创建新销售订单并确认,系统会自动触发ID690拣货报表的打印。
内容的提问来源于stack exchange,提问作者Pelingier
相关产品推荐
相关产品推荐

