Membaca Source Code Odoo : Jurnal Delivery Order

Tulisan ini adalah bagian kedua dari seri Membaca Source Code Odoo. Kali ini saya akan membahas bagaimana mencari potongan source code yang berfungsi untuk membuat jurnal saat Delivery Order di validate.

Untuk mengikuti tulisan ini pastikan anda memiliki produk dengan pengaturan Inventory Valuation bernilai Automated. Untuk mengecek pengaturan ini, buka master produk anda kemudian klik field Product Category. Gambar dibawah ini adalah contoh pengaturan Inventory Valuation di server odoo saya.

Selanjutnya buka salah satu file python module bawaan odoo atau module custom anda, pastikan module tempat file yang anda buka sudah diinstall, agar kode yang akan kita tambahkan nanti dieksekusi oleh odoo. Tambahkan kode di bawah ini.

class AccountMove(models.Model):
    _inherit = 'account.move'

    def create(self, value):
        # buat error jika ada aktivitas yang memanggil method ini
        a = 1 / 0

Pada komputer saya, kode di atas saya tulis di module stock tepatnya di file stock/models/stock_picking.py. Maksud kode di atas adalah, jika ada aktivitas pembuatan jurnal, dimana method create dari model account.move dipanggil, kita paksa agar error, sehingga odoo akan menampilkan pesan Traceback, yaitu pesan error yang berisi informasi file dan method apa saja yang dieksekusi python sampai kode yang mengakibatkan error tersebut. Nantinya dengan memanfaatkan pesan Traceback ini kita bisa menulusuri file apa yang memangil method create dari model account.move yaitu method yang dipanggil untuk membuat jurnal.

Buat sebuah sales order, dengan produk yang memiliki pengaturan inventory valuation Automated. Kemudian klik tombol Confirm agar dibuat sebuah deliver order. Validate delivery order tadi, maka akan muncul error seperti pada gambar di bawah ini.

Selanjutnya tinggal kita baca setiap file di pesan error tersebut untuk mencari potongan kode yang berfungsi untuk membuat jurnal. Tidak semua file perlu anda baca. Pastikan file yang anda baca adalah bagian dari suatu module. Pada gambar di atas File “/odoo14/odoo14-server/odoo/api.py”, line 344, in _model_create_multi bukan bagian dari module yang bisa kita install atau uninstall, jadi abaikan saja.

Yang pertama adalah File “/odoo14/odoo14-server/addons/stock/models/stock_picking.py”, line 25, in create. Kode baris ke-25 pada file ini adalah kode yang saya tambahkan, jadi bukan merupakan kode yang berfungsi untuk membuat jurnal. Abaikan.

Selanjutnya mari kita lihat File “/odoo14/odoo14-server/addons/purchase/models/account_invoice.py”, line 102, in create, berikut ini adalah screenshot dari kode tersebut di komputer saya.

Terlihat bahwa kode di atas adalah kode yang sejenis dengan kode yang baru saja kita tambahkan, yaitu kode yang meng-overide method create model account.move. Jadi bukan file ini yang berfungsi untuk membuat jurnal.

Mari kita lihat file selanjutnya yaitu File “/odoo14/odoo14-server/addons/stock_account/models/stock_move.py”, line 457, in _create_account_move_line. Berikut ini adalah screenshot file tersebut di komputer saya.

Akhirnya kita telah menemukan file dan method yang berfungsi untuk membuat jurnal. Terlihat dari gambar di atas, method create dari model account.move di panggil di file ini. Untuk mengujinya, mari kita ubah sedikit isi method di file tersebut, kurang lebih seperti dibawah ini.

Hapus tambahan method create yang menyebabkan error yang baru saja kita tambahkan di atas. Restart service odoo kemudian validate kembali delivery order. Jika delivery order berhasil di validate, buka menu Accounting >> Accounting >> Journal Entries untuk melihat jurnal yang baru saja dibuat. Sekarang Reference dari jurnal tersebut berisi kata-kata yang kita buat, berarti kode yang kita ubah adalah kode yang benar, yaitu kode yang berfungsi membuat jurnal saat delivery order di validate.

Anda dapat menggunakan cara ini untuk melakukan debug pada method lainnya seperti method write atau unlink. Jangan lupa untuk mengembalikan semua file yang sudah kita ubah ke keadaan semula.

Tulisan Serupa

Leave a Reply