Odoo Point of Sale beda PosTicket dan XmlReceipt

Jika anda menggunakan module Point of Sale Odoo, pernahkan anda memperhatikan bahwa jika hasil cetak receipt antara menggunakan Posbox dan tanpa Posbox berbeda ?

Hal ini terjadi karena Odoo menerapkan perintah yang berbeda antara Point of Sale dengan Posbox dan tanpa Posbox. Lebih detailnya silakan lihat file point_of_sale/static/src/js/screen.js lebih tepatnya di object ReceiptScreenWidget function print

Di function print tersebut Odoo akan mengecek apakah anda menggunakan Posbox atau tidak. Jika tidak menggunakan Posbox Odoo akan memanggil perintah print_web sedangkan jika menggunakan Posbox Odoo akan memanggil perintah print_xml. Lalu apa perbedaan kedua perintah tersebut ?

Print Web

Print Web artinya yang mengirim perintah cetak ke printer adalah web browser. Odoo akan merender template PosTicket di file point_of_sale/static/src/xml/pos.xml hasil render inilah yang akan dicetak oleh web browser. Kemudian Odoo akan memanggil perintah window.print(); bawaan javascript, sehingga dialog print akan muncul, selanjutnya anda bisa memilih printer dan sebagainya. Karena berbasis web tentu saja ini lebih mudah, karena anda bisa menggunakan lebih banyak tag-tag html dan menggunakan css sesuai keinginan anda secara bebas.

Css untuk pos receipt ini disimpan di file point_of_sale/static/src/css/pos.css

Print XML

Berbeda dengan print web, print xml menggunakan perintah ESC/POS. Sehingga Odoo bisa mengirim perintah cetak langsung ke printer. Anda tidak perlu menekan tombol cetak, melihat preview dan memilih printer lagi, karena proses cetak bisa berjalan secara otomatis.

Saat Odoo memanggil perintah print xml, Odoo akan merender template XmlReceipt di file point_of_sale/static/src/xml/pos.xml hasil render inilah yang akan dikirim langsung ke printer tanpa perlu perintah print() bawaan javascrip.

Jika anda perhatikan template XmlReceipt tidak semua element-nya adalah element html yang valid, seperti line, left, right dll. Ini karena perintah print xml tidak benar-benar merender file html. Element-element html di template XmlReceipt akan diubah menjadi perintah ESC/POS. Sehingga ada kemungkinan ada element html yang tidak didukung seperti table. Selain itu perintah ini juga tidak mendukung css.

Lalu element html apa saja yang didukung oleh perintah ini, dan bagaimana mengubah stylenya ? Silakan lihat file hw_escpos/escpos/escpos.py. Di file tersebut anda bisa melihat element html apa saja yang didukung oleh perintah print xml, dan style yang mungkin anda gunakan.

Leave a Reply

Your email address will not be published. Required fields are marked *