POS的收据打印修改和吐糟
-
OPENERP V7的POS模块并没有完全集成入OPENERP,webclient访问pos,/OpenERP/report/pos_receipt.rml并不work,那只是为了pos模块后台打印sales order的需要。所有report/下的
sxw文件都可通过designer修改。
POS Web前台的显示和收据打印,主要是修改以下两个文件:
../openerp/addons/poinit_of_sale/static/css/pos.css
../openerp/addons/poinit_of_sale/static/xml/pos.xml
显示这里暂时不说,先说打印。
1、原始收据画蛇添足的加了个框子,走遍中外,我未发现有一家商铺的收据小票是这样的。所以要先改掉。
../openerp/addons/poinit_of_sale/static/css/pos.css 的827行border: solid 1px black !important;
注销这一行,或改 1px 为 0px,或改 black 为 white
2、更改打印页面尺寸
../openerp/addons/poinit_of_sale/static/css/pos.css 的771行width: 300px;
改为相应纸张的宽度,我的是655,对应美国信纸(letter)尺寸,A4略窄 600~650之间,请自行调整。
3、不知道是否由于纸的尺寸问题,收据中不打单价,每一个客户都在问“xx单价多少”,所以要打单价!
这里有两个方案:
A. 单价将显示在品名之后,like this “xx产品 at $15.00 / unit with a %15 discount.”
B. 象正规发票一样有一专门的栏,放入产品单价和单位,这需要基本的html table开发能力
原始table分三栏,2:1:1分布。参看第568行。可在578行前后,通过添加栏实现。如:<td class="pos-right-align"><br /> <t t-esc="orderline.get_unit_price()"/><br /></td>
下边的小记、税、总额等要依次修改。
我使用A方法, 这样改回小票比较方便。
在572行之后加入:<br />At <t t-esc="widget.format_currency(orderline.get_unit_price())" /> /<t t-esc="orderline.get_unit().name" /><br />
然后,在3行之后(</t>之后)加<br /><t t-if="orderline.get_discount() == 0"><br /> At <t t-esc="widget.format_currency(orderline.get_unit_price())" /> /<t t-esc="orderline.get_unit().name" /><br /></t><br />
4、添加公司标志图像
在558行之后添加<br /><div><br /> <img src="/point_of_sale/static/src/img/yourlogo.png" /><br /></div><br />
并上传图像文件。
5. 原始js文件中不支持取地址,要自己开发(或者我未找到),所以简单自己添加在以上公司标志之下。
基本的功能修改到此为止,下面开始吐糟:
openerp的pos很诡异的使用html的一个子集在XML文件中实现最基本的格式功能,连最基本的<hr>都不支持。搞得我想要画条线都不行,只能table上画border,还得用css来画,而我的需求写在css文件中还不行。或许应找些开发资料来看,有明眼人或可告诉我。
openerp每天都在滚动开发,这样的话pos web前端很有可能被覆盖,得搞一个定制模块实现此功能。否则有的改的。
[attach=1] -
[quote author=Jeff link=topic=14556.msg25142#msg25142 date=1383904927]
好像还有个打印出来的文字不够清晰的问题,osbzr版改过。
欢迎具体到代码和解决方案的吐槽,楼主好样的!
[/quote]
谢谢!
你说的好像是颜色设定的问题(#555555),在热敏打印机上确实不够黑,但我用laserptr,非常好了,不需要改了。 -
[quote author=ryebread link=topic=14556.msg25174#msg25174 date=1384131020]
改颜色为black后好一点,但是从浏览器中打印出来还是不怎么清晰,直接使用系统打印就清晰了,这个问题不好解决
[/quote]说容易也容易,
还有一种方式是改变打印机模式设置,从raw变成txt,自己加控制符,使用打印机内置字体。没玩过DOS的人可能会抓瞎 -
[quote author=old_taoist link=topic=14556.msg25186#msg25186 date=1384144822]
[quote author=ryebread link=topic=14556.msg25174#msg25174 date=1384131020]
改颜色为black后好一点,但是从浏览器中打印出来还是不怎么清晰,直接使用系统打印就清晰了,这个问题不好解决
[/quote]说容易也容易,
还有一种方式是改变打印机模式设置,从raw变成txt,自己加控制符,使用打印机内置字体。没玩过DOS的人可能会抓瞎
[/quote]
能说 具体点吗?找了下打印机的资料,TXT模式很少说,再吐下这两天谷哥很不给力呀,度娘基本不用的 -
firefox 有一个插件叫AttendPrint,可以关闭对话框。pos中点击打印后对话框不出现,直接开始打印。但目前不兼容v25 or later
chrome是否有同样的插件不知道。 -
[quote author=ryebread link=topic=14556.msg25209#msg25209 date=1384242365]
[quote author=old_taoist link=topic=14556.msg25186#msg25186 date=1384144822]
[quote author=ryebread link=topic=14556.msg25174#msg25174 date=1384131020]
改颜色为black后好一点,但是从浏览器中打印出来还是不怎么清晰,直接使用系统打印就清晰了,这个问题不好解决
[/quote]说容易也容易,
还有一种方式是改变打印机模式设置,从raw变成txt,自己加控制符,使用打印机内置字体。没玩过DOS的人可能会抓瞎
[/quote]
能说 具体点吗?找了下打印机的资料,TXT模式很少说,再吐下这两天谷哥很不给力呀,度娘基本不用的
[/quote]
每种打印机都不同,要看具体的使用手册。通常是在text流中加十六进制控制符。可以在线通过发送指令方式临时切换到text模式。
如果想永久关闭raw模式,Windows下,在打印机属性里的-》高级-》打印处理器-》选择text模式。或直接改变打印机设定。
同样,打开钱箱,也可使用这种方式,例如规定刷卡时打印收据不开钱箱,收现金就开等。各个钱箱的开箱指令大都相同,个别不一样,要查手册。