OpenERP: Laporan Penjualan

Foto os

Seorang pelanggan telah membeli sejumlah barang dan membutuhkan bon sebagai bukti pembeliannya. Saatnya membuat laporan sesuai bentuk yang kita inginkan di OpenERP.

Sebuah transaksi penjualan terdiri dari dua bagian yang bisa disebut sebagai master dan detail. Data master memuat nomor transaksi, tanggal, dan nama pelanggan. Sedangkan detail memuat daftar barang yang dibeli. Anda bisa lihat daftar transaksi di menu Sale Management, Sales Order. Klik salah satu transaksi, tepatnya pada bagian tanggal, lalu akan tampil rincian untuk transaksi tersebut.

Sampai di sini sebenarnya Anda sudah bisa mencetak laporan penjualan dengan klik pada menu Quotation / Order, ada di kanan atas. Laporan akan tampil dalam PDF. Kita juga akan membuat yang seperti itu dimana akan ada link baru untuk mencetak transaksi penjualan ini, namun dengan bentuk yang kita tentukan sendiri.

Mulailah menggunakan OpenOffice Writer untuk membuat penjualan.sxw seperti yang tampil di bawah ini:

Selanjutnya kita perlu memberitahu report generator bahwa ada bagian yang berulang, yaitu daftar barang (detail):

  1. Lakukan block pada bagian yang dimaksud, lihat gambar berikut:
  2. Klik menu Insert, Section yang akan menampilkan form Insert Section.
  3. Klik Insert saja

Simpan dokumen ini dengan nama penjualan.sxw.

Report generator tidak membutuhkan file sxw, ia membutuhkan rml. Untuk itu perlu diubah dengan cara berikut ini:

$ cd /usr/lib/openerp-server/addons/sale/report
$ sudo python /usr/lib/openerp-server/addons/base_report_designer/wizard/tiny_sxw2rml/tiny_sxw2rml.py /home/ilham/penjualan.sxw > penjualan.rml

Lalu buatlah parser tambahan di /usr/lib/openerp-server/addons/sale/report/penjualan.py:

import time
from report import report_sxw
 
 
class penjualan(report_sxw.rml_parse):
    def __init__(self, cr, uid, name, context):
        super(penjualan, self).__init__(cr, uid, name, context)
        self.localcontext.update({
            'time': time,
            })
 
report_sxw.report_sxw('report.sale.penjualan', 'sale.order',
    'addons/sale/report/penjualan.rml', parser=penjualan)

Dengan file ini, Anda bisa menyertakan waktu pencetakan di file sxw dengan cara menambahkan:

[[ time.strftime('%d-%m-%Y %H:%M:%S') ]]

Letaknya silahkan tentukan sendiri, misalnya di bagian footer.

Pastikan parser tadi dikenal oleh sistem, yaitu dengan menambahkan baris berikut ini di /usr/lib/openerp-server/addons/sale/report/__init__.py:

import penjualan

Update 2 Mei 2012
Juga di /usr/lib/openerp-server/addons/sale/__init__.py tambahkan (kalau belum ada):

import report

Sekarang definisikan menunya di /usr/lib/openerp-server/addons/sale/penjualan.xml:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <report id="report_sale_penjualan"
                string="Penjualan"
                model="sale.order"
                name="sale.penjualan"
                rml="sale/report/penjualan.rml"
                auto="False"
                header="False"/>
    </data>
</openerp>

Pastikan menu baru tersebut didaftarkan oleh sistem, yaitu dengan menambahkan baris berikut ini di file /usr/lib/openerp-server/addons/sale/__terp__.py pada bagian "update_xml":

"penjualan.xml",

sehingga menjadi:
    "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",
        "sale_wizard.xml",
        "stock_view.xml",
        "process/sale_process.xml",
        "penjualan.xml",
        ],

Terakhir apply:

$ sudo su
# su - openerp
$ openerp-server --database=openerp --update=sale --stop-after-init

Update 2 Mei 2012
Cara lain adalah dengan restart terlebih dahulu:

# sudo /etc/init.d/openerp-server restart

Lalu lakukan upgrade module sale melalui menu.

Cobalah dengan mencetak sebuah transaksi sebagaimana diterangkan di awal tulisan ini. Contoh bisa dilihat pada file pdf terlampir.

Selamat mencoba.

Referensi:

LampiranUkuran
master-detail.png38.83 KB
detail-section.png124.85 KB
penjualan.sxw12.15 KB
penjualan.pdf3.75 KB