POS自定义打印方案思路 - xiaohao0576/odoo-doc GitHub Wiki
厨房一菜一切功能
Odoo的默认打印方式,并不支持一菜一切,有以下几种方式实现一菜一切
方案1
离线部署Odoo,修改Odoo的厨房打印代码,此方案最灵活和强大,缺点是不能兼容Odoo Online版本,只能自托管部署
方案2
安装epos打印中间件,把收到的厨房打印单,使用位图处理的方式,按每道菜进行切隔并打印。
此方案的优点是不需要改动Odoo的代码,兼容Odoo Online版本,缺点是epos中间件处理位图的时候,会出现不切纸不准确的情况,甚至有些时候会丢单。当Odoo改变厨房打印订单的排版时,位图处理逻辑也需要更改
方案3
借助Odoo的自动化动作和厨房准备订单model,向厨房的云打印机发送打印数据
在Odoo的企业版的源码中搜索pos_preparation_display.orderline
,可查看到相关的字段定义
实现思路是,打开odoo的厨房准备屏幕功能,当pos向厨房下单后,后台会创建pos_preparation_display.orderline,配置Odoo的自动化服务器动作,当有orderline创建的时候,就POST数据到第三方服务器,第三方服务器再调用厨房的云打印机进行打印。
当有订单取消的时候,也是同样的道理
此方案的优点是能做到一菜一切,并且可以自定义排版,缺点是实现起来复杂,需要依赖外网和云打印方案。因为Odoo自动化任务发送数据是从Odoo后台服务器发送的,而厨房的打印机又在内网,所以需要公网服务器和云打印方案。
自定义结账小票
Odoo的POS收据的代码是打包到前端代码中的,所以在Odoo Online版本中,无法自定义小票,最多是加上一些文字header和footer
方案1
离线部署Odoo,安装第三方插件,或者自己修改小票打印xml代码,此方案最灵活和强大,缺点是不能兼容Odoo Online版本,只能自托管部署
方案2
安装epos打印中间件,借助Odoo的自动化任务,当pos.order
的nb_print
字段有更新的时候,触发自动化任务,把POS订单信息POST到第三方服务器,第三方服务器把订单的信息重新排版后,发送给云打印机进行打印。
除了nb_print
字段外,还可以通过payment_ids
字段来判断是否是打印已结账的订单