背景:
ODOO会在前置订单审批生效(提交)后,自动生成草稿状态的后续单据,如采购订单生效后,系统会自动生成草稿状态的采购收货单,供仓库同事监控待收货任务以及据此录入实收数量。
ERPNext中虽然可以从前置订单界面点一个按钮自动生成后续单据,也可以在目标单据界面点获取前置单据合并多个前置订单生成一个收(出)货单。但系统并没有像ODOO一样自动生成后续单据。
用户可以基于内置的python 脚本很方便地实现ODOO类似功能, 本案例是在销售订单提交时自动生成对应的销售出货单,并返回提示信息。
1. 在命令行容器执行以下命令启用服务器脚本功能(仅需初次启用时执行一次)
`bench set-config server_script_enabled 1`
![命令](https://images.gitee.com/uploads/images/2020/1210/150823_5dc0f3d2_7624863.png "bench console.PNG")
2. 为目标单据类型编写python脚本
```
#从当前销售订单行获取待出货明细行
items_to_deliver = [{'item_code': item.item_code,
'qty':item.qty,
'rate':item.rate,
'uom':item.uom} for item in doc.items]
#创建销售出货单
dn = frappe.get_doc(dict(
doctype ='Delivery Note',
title = doc.customer,
customer = doc.customer,
company = doc.company,
items = items_to_deliver)
).insert()
#返回弹出提示框
frappe.msgprint(msg=_(f'已为客户 {doc.customer} 自动生成出货单 {dn.name}'), title = _('Automation'), indicator='green')
```
![脚本](https://images.gitee.com/uploads/images/2020/1210/150753_5857fb78_7624863.png "python 脚本.PNG")
3. 操作目标单据,验证脚本运行结果
![运行效果](https://images.gitee.com/uploads/images/2020/1210/150727_7639f039_7624863.png "销售订单提交画面.PNG")
参考官方论坛的视频资料 https://discuss.erpnext.com/t/bounty-5000-for-creating-new-set-of-frappe-developer-videos/68707/10