
Report pada OpenERP biasanya dalam bentuk PDF. Ini artinya dokumen dicetak printer dengan graphic mode. Namun graphic mode printing memiliki beberapa kelemahan pada printer dotmatrix.
Kelemahannya antara lain:
Untuk mengatasi hal ini kita akan buat Laporan Penjualan dapat dicetak dengan text mode printing.
Sebelum masuk ke sesi OpenERP, lakukanlah beberapa persiapan berikut ini:
$ sudo su # apt-get install python-mako
# ls -l /dev/lp0 crw-rw---- 1 root lp 6, 0 2010-01-04 08:43 /dev/lp0 # adduser openerp lp
# su - openerp $ cat /etc/hosts > /dev/lp0
Namun jika Anda belum memiliki printernya, Anda bisa simpan nanti dalam sebuah file sebagai gantinya.
Selanjutnya ke sesi OpenERP. Mulailah dengan membuat template dengan hasil akhirnya seperti ini:
Sales Order
Nomor : F0000061
Tanggal : 2010-01-06
Pelanggan: R. GANJAR SUWARGANI
-------------------------------------------------------------------------
No. Nama Jumlah Harga Disc Subtotal
-------------------------------------------------------------------------
1 [ME581047] SWITCH 1 207.000,00 0.0 207.000,00
2 [MF660035] PACKING 1 4.100,00 0.0 4.100,00
3 [MF660068] GASKET, CYLINDE 1 5.300,00 0.0 5.300,00
4 [MH037794] PLUG 1 27.500,00 0.0 27.500,00
5 [MS820044] BULB 12V-21W 1 5.400,00 0.0 5.400,00
6 [MS820079] BULB STOP LAMP 1 57.500,00 0.0 57.500,00
7 [TK000013] SEAL TIPE 1 2.000,00 0.0 2.000,00
-------------------------------------------------------------------------
TOTAL 308.800,00Buatlah /usr/lib/openerp-server/addons/sale/wizard/order.txt sebagai headernya:
Sales Order
Nomor : ${id}
Tanggal : ${tgl}
Pelanggan: ${pelanggan}
${'-'*73}
No. ${'Nama'.ljust(30)} Jumlah ${'Harga'.rjust(12)} ${'Disc'.rjust(5)} ${'Subtotal'.rjust(12)}
${'-'*73}
${rows}${'-'*73}
${' '*55}TOTAL ${total.rjust(12)}Lanjutkan dengan /usr/lib/openerp-server/addons/sale/wizard/order_line.txt untuk daftar barang yang dijual:
${no.rjust(3)} ${prod.ljust(30)[:30]} ${jml.rjust(6)} ${hrg.rjust(12)} ${disc.rjust(5)} ${subt.rjust(12)}Kemudian ini script utamanya, file /usr/lib/openerp-server/addons/sale/wizard/wizard_cetak.py:
import wizard import pooler from mako.template import Template from mako.lookup import TemplateLookup import time import os import locale locale.setlocale(locale.LC_ALL, 'id_ID.UTF-8') tpl_lookup = TemplateLookup(directories=['/usr/lib/openerp-server/addons/sale/wizard']) def money(n): return locale.format('%.2f', n, True) cetak_form = '''<?xml version="1.0"?> <form string="Cetak ke printer dotmatrix"> <field name="teks" /> </form>''' cetak_fields = { 'teks' : {'type' : 'text', 'default': 'Pencetakan sedang berlangsung.', 'readonly': True }, } class sale_cetak(wizard.interface): def cetak(self, cr, uid, data, context): obj = pooler.get_pool(cr.dbname).get('sale.order') order = obj.browse(cr, uid, data['id']) print order.name, order.date_order, order.partner_id.name, order.amount_total no = 0 rows = [] tpl_line = tpl_lookup.get_template('order_line.txt') for line in order.order_line: no += 1 s = tpl_line.render(no=str(no), prod=line.name, jml=str(int(line.product_uom_qty)), hrg=money(line.price_unit), disc=str(line.discount), subt=money(line.price_subtotal), ) rows.append(s) tpl = tpl_lookup.get_template('order.txt') s = tpl.render(id=order.name, tgl=order.date_order, pelanggan=order.partner_id.name, rows=''.join(rows), total=money(order.amount_total).rjust(12), ) filename = '/dev/lp0' # filename = '/tmp/%s.txt' % uid f = open(filename,'w') f.write(s) f.close() return {} states = { 'init': { 'actions': [cetak], 'result': {'type':'form', 'arch':cetak_form, 'fields': cetak_fields, 'state':[] } }, } sale_cetak('sale.cetak')
Lalu daftarkan di file /usr/lib/openerp-server/addons/sale/wizard/__init__.py dengan menambahkan baris:
import wizard_cetakKemudian buatlah menunya di file /usr/lib/openerp-server/addons/sale/cetak_wizard.xml:
<?xml version="1.0" ?> <openerp> <data> <wizard id="report_wizard_cetak" string="Cetak" model="sale.order" name="sale.cetak" keyword="client_print_multi"/> </data> </openerp>

Terakhir daftarkan di /usr/lib/openerp-server/addons/sale/__terp__.py di bagian update_xml:
...
'update_xml': [
'security/sale_security.xml',
'security/ir.model.access.csv',
'sale_workflow.xml',
'sale_sequence.xml',
'sale_data.xml',
'sale_wizard.xml',
'sale_view.xml',
'sale_report.xml',
'stock_view.xml',
'process/sale_process.xml',
'cetak_wizard.xml',
],
...Untuk menghindari pesan error yang tak perlu saat update modul nanti, sebaiknya kosongkan bagian demo_xml:
...
'demo_xml': [],
...Kadang Anda perlu juga mengosongkan demo_xml ini di addons/product/__terp__.py karena update modul sale biasanya mengupdate modul product juga.
Selanjutnya lakukan update modul:
# su - openerp $ openerp-server --database=openerp --update=sale --stop-after-init
Lalu restart daemonnya:
# /etc/init.d/openerp-server restart
Sekarang giliran browser Firefox. Setelah login, masuklah ke menu Sales Management, Sales Order. Klik salah satu tanggal transaksi agar tampil rinciannya. Di sebelah kanan pada bagian REPORTS ada menu Cetak. Jangan klik dulu. Siapkan kertas di printer, lalu klik Cetak.
Selamat mencoba.
Referensi:
Lihat juga:
Update 7 Maret 2010
Menu cetak ke dotmatrix ini sudah disertakan di paket Debian openerp-server 5.0.7 yang dikemas RAB. Anda bisa ikuti petunjuk instalasinya.
| Lampiran | Ukuran |
|---|---|
| sale-order.png | 108.45 KB |
| order.txt | 239 bita |
| order_line.txt | 106 bita |
| wizard_cetak.py.txt | 2.22 KB |
| cetak_wizard.xml | 198 bita |
Komentar terbaru
1 pekan 4 hari y.l.
5 pekan 1 hari y.l.
7 pekan 2 hari y.l.
11 pekan 4 hari y.l.
12 pekan 5 hari y.l.
12 pekan 5 hari y.l.
12 pekan 6 hari y.l.
14 pekan 3 hari y.l.
16 pekan 4 hari y.l.
16 pekan 4 hari y.l.