Seperti kita tahu, tiap setahun sekali odoo selalu ganti versi. Tidak enaknya, tiap ganti versi selalu ada yang berubah, baik yang dikurangi atau ditambah. Oleh karena itu saya sebagai programmer odoo, mencoba untuk tidak menghapal kode odoo, bahkan kode yang sering digunakan sekalipun, seperti membuat Action Window. Saya pernah mencoba untuk menghapal kode pembuatan Action Window, tetapi tidak saya lanjutkan, karena percuma, di versi terbaru ada beberapa perubahan, membuat hapalan saya di versi odoo sebelumnya tidak relevan lagi. Apalagi saat ini saya selain mengerjakan proyek dengan versi odoo terbaru, juga masih mengerjakan beberapa proyek dengan odoo versi lama.
Sekarang saya selalu berusaha untuk membaca source code odoo, kemudian meng-copynya. Bahkan untuk membuat modelpun saya copy paste dari source code odoo. Ha..ha..ha. Saat koding, saya selalu membuka aplikasi sublime paling tidak sebanyak 2 window. Window pertama membuka source code odoo, sedangkan window kedua membuka module yang saya buat. Apakah tidak tambah sulit ? Source code odoo kan ribuan baris.
Saya punya trik sendiri dalam membaca source code odoo ini. Menurut pengalaman saya, cara ini cukup efektif dalam memudahkan pekerjaan saya. Oleh karena itu saya akan berbagi trik tersebut dalam rubrik khusus, yaitu Membaca Source Code Odoo. Dalam rubrik ini isi tulisannya kurang lebih adalah tentang pertanyaan : jika ada suatu aksi pada odoo, di manakah aksi itu ditulis ? Semoga berguna.
Pada bagian pertama ini, saya akan membahas di mana, dan bagaimana sebuah sidebar ditulis pada source code odoo. Jika anda belum tahu, yang saya maksud sidebar adalah 2 dropdown yang berlabel Print dan Action yang biasa ada di List dan Form View seperti pada gambar di bawah ini.
Sebenarnya saya tidak tahu istilah resmi 2 menu dropdown diatas. Sidebar ini adalah istilah yang saya pakai, karena dari source code odoo ditulis seperti itu, terutama di versi odoo 12 kebawah, di versi odoo 14 sepertinya sudah diubah, model web.sidebar sudah tidak saya temukan lagi. Tetapi di forum odoo sendiri ada yang menyebut 2 menu diatas sebagai Action Menu.
Sebagai contoh kasus, saya akan membahas di manakah source code tombol Mark Quotation as Sent pada sales order di atas ditulis. Perlu anda ketahui tutorial ini ditulis pada odoo 14 enterprise edition. Pada odoo versi lain tombol itu kemungkinan tidak ada, tetapi cara untuk mencari di mana tombol sidebar ditulis saya rasa sama.
Dengan google chrome buka menu Sales odoo anda. Jika anda sedang membuka List View anda harus memilih salah satu record, agar tombol Action muncul. Kemudian buka developer tool milik google chrome, dengan cara klik kanan kemudian pilih inspect. Atau pencet tombol F12 pada keyboard.
Kemudian buka tab Network pada developer tool google chrome. Pastikan tampilan tab Network ini bersih, seperti pada gambar dibawah ini. Jika ada datanya bersihkan terlebih dahulu dengan cara menekan tombol lingkaran yang dicoret di pojok kiri developer tools google chrome.
Kemudian klik tombol Action dan pilih Mark Quotation as Sent.
Dari tab Network developer tool google chrome, bisa kita ketahui bahwa saat kita mengklik tombol Mark Quotation as Sent, browser akan memanggil controller /web/action/load dengan hasil seperti pada gambar dibawah ini. Yang ternyata adalah sebuah Action Server.
Jika anda sudah membaca tutorial saya tentang cara membuat Action Server (baca di sini), anda tentu sudah tahu cara memanggil Action Server dari Menu Item. Sekarang anda tahu bahwa Action Server ternyata juga bisa dipanggil dari Sidebar / Action Menu.
Lalu dimanakah kode tombol Mark Quotation as Sent ditulis ?
Untuk mencari di mana kode tombol itu ditulis di source code odoo, kita bisa memanfaatkan perintah GREP bawaan linux. Saya sudah menulis tutorial penggunaan GREP di tulisan ini.
Di terminal, masuk directory addons odoo. Pada komputer saya directory itu terdapat di /odoo14/odoo14-server/addons kemudian lakukan GREP dengan keyword dari hasil controller /web/action/load yang dipanggil browser saat kita mengklik tombol Mark Quotation as Sent sebelumnya. Dalam kasus ini saya menggunakan value dari key xml_id, yaitu model_sale_order_action_quotation_sent. Hasilnya seperti pada gambar di bawah ini.
Sekarang kita tahu, kode tombol sidebar Mark Quotation as Sent ditulis di file sale/views/sale_views.xml, sekarang mari kita buka file tersebut dan kita lihat isinya.
Gambar di atas adalah isi file sale/views/sale_views.xml tempat tombol Mark Quotation as Sent ditulis di source code odoo. Sekarang anda dapat meng-copynya untuk dipasang di module anda, jika anda ingin menambahkan sebuah tombol di sidebar / Action Menu.