Pada bagian ini kita akan mulai praktek membuat addons. Addons yang akan kita buat ini tidak akan memuat fungsi atau memberikan efek apapun terhadap aplikasi, karena pada bagian ini saya hanya ingin menjelaskan syarat minimal untuk membuat addons. Dan syarat minimal untuk membuat addons agar terbaca di menu apps adalah dengan membuat satu folder dan satu file.

Sekarang silahkan buat folder baru di dalam folder custom_addons yang sudah kita buat sebelumnya di part 1 /home/miftah/odoo/custom_addons, beri nama new_addons. Kemudian buat satu file baru di dalam folder new_addons dan beri nama __manifest__.py

File manifest berfungsi untuk mendeklarasikan python package sebagai modul Odoo dan menentukan metadata modul. Penulisan file ini menggunakan single dictionary yang berisi beberapa key dan value, yang mana setiap key menunjukkan metadata modul.

Selanjutnya edit file __manifest__.py dan isi dengan {} atau agar lebih lengkap isi dengan code berikut :

{
    "name"          : "New Addons",
    "version"       : "1.0",
    "author"        : "Miftahussalam",
    "website"       : "http://miftahussalam.com",
    "category"      : "New Module",
    "summary"       : "Ini adalah addons baru",
    "description"   : """
        Latihan membuat addons baru di odoo 10
    """,
    "depends"       : [
        "base",
    ],
    "data"          : [
 
    ],
    "demo"          : [],
    "test"          : [],
    "images"        : [],
    "qweb"          : [],
    "css"           : [],
    "application"   : True,
    "installable"   : True,
    "auto_install"  : False,
}

Kemudian save dan sampai sini seharusnya addons sudah bisa terbaca di menu apps. Silahkan jalankan service odoo (atau restart jika sebelumnya sudah dijalankan) kemudian masuk ke menu Apps di browser, jangan lupa Aktifkan Developer Mode agar muncul menu Update Apps List di submenu Apps.

Setelah itu update apps list dengan mengklik menu Update Apps List > Update dan ketikkan new addons di kolom pencarian (pojok kanan atas), kemudian enter. Jika berhasil maka akan muncul addons dengan nama New Addons sesuai dengan nama addons yang kita buat.

Sampai sini maka addons sudah dapat terbaca di menu Apps, akan tetapi belum bisa diinstal. Untuk menginstalnya maka kita harus menambahkan file baru dengan nama __init__.py di dalam folder new_addons (sejajar dengan file __manifest__.py). Biarkan file tersebut kosong, tidak perlu diisi.

Jika sudah, silahkan restart kembali service nya dan update apps list kemudian instal addons nya

Selamat, anda sudah bisa membuat addons baru dan berhasil menginstalnya

Jika anda bertanya, “Lalu apa maksud dari isi file __manifest__.py”? Berikut penjelasannya :

  • name          : tipe string, nama modul/addons
  • version       : tipe string, versi modul (harus mengikuti aturan semantic versioning)
  • author        : tipe string, nama (personal/kelompok) pembuat modul
  • website       : tipe string, URL website pembuat modul
  • category      : tipe string (default: Uncategorized), kategori modul untuk mengelompokkan dan memudahkan pencarian modul. Jika tidak diisi atau bahkan tidak ditulis baris/key category sama sekali maka secara default modul tersebut akan dikategorikan sebagai Uncategorized. Kategori juga bisa hirarki dengan menggunakan separator /. Misal: New Module / Master Data, maka akan membuat kategori New Module dan kategori Master Data sebagai child dari New Modul. Dan modul tersebut akan masuk ke kategori Master Data
  • summary    : tipe string, deskripsi singkat modul
  • description : tipe string, (deskripsi lengkap mengenai modul)
  • depends     : tipe list(string), daftar modul yang harus ada (terbaca di apps) agar modul ini bisa diinstal. Artinya harus ada karena modul yang kita buat menggunakan fitur atau apapun yang terkait dengan modul yang di depends ini. Ketika instal modul maka odoo akan menginstal modul yang di depends terlebih dahulu, sebelum menginstal modul yang sebenarnya kita instal. Dan ketika upgrade modul maka semua modul yang men-depends ke modul tersebut akan ikut diupgrade, namun tidak berlaku sebaliknya. Misal modul new_addons depends ke base, saat modul base diupgrade maka modul new_addons juga akan diupgrade. Namun saat modul new_addons diupgrade maka modul base tidak akan ikut diupgrade
  • data            : tipe list(string), daftar file data yang akan selalu diinstal atau diupdate/upgrade bersamaan dengan modul. Merupakan path dari folder root modul, biasanya merupakan file xml dan csv. Dan biasanya file yang di load di sini merupakan file untuk membuat view, action, menu, security, dll
  • demo          : tipe list(string), daftar file data yang hanya akan di load ketika kita mencentang checkbox Load Demonstration Data ketika pertama kali instal database. Merupakan path dari folder root modul, biasanya merupakan file xml dan csv. Dan biasanya file yang di load di sini merupakan file untuk menambahkan record master data atau transaksi
  • test              : tipe list(string), daftar file data yang hanya akan di load jika kita menambahkan command --test-enable saat menjalankan service. Merupakan path dari folder root modul atau bisa juga memanggil file dari addons lain, biasanya merupakan file yml dan xml. Dan biasanya file yang di load di sini merupakan file untuk menambahkan record master data atau transaksi serta berisi proses-proses tertentu untuk melakukan pengetesan terhadap modul
  • images        : tipe list(string), path file gambar yang akan digunakan oleh modul. Note : di screenshot dan video saya menulisnya image (tanpa s), seharusnya images
  • qweb           : tipe list(string), path file qweb/xml yang akan digunakan oleh modul. File qweb harus disimpan di folder static/src/xml
  • css               : tipe list(string), path file css yang akan digunakan oleh modul. File css harus disimpan di folder static/src/css
  • application : tipe boolean (default: False), jika diisi True maka modul dianggap sebagai aplikasi lengkap. Sementara jika diisi False dianggap sebagai modul teknikal yang hanya menambahkan beberapa fungsional terhadap modul aplikasi yang ada. Sebenarnya tidak terlalu berpengaruh terhadap modul, hanya akan terfilter sebagai Apps di pencarian default Apps
  • installable   : tipe boolean (default: False), jika diisi True maka modul dapat diinstal dan jika diisi False maka tidak bisa diinstal. Meskipun tombol instal tetap muncul dan bisa kita klik, tapi odoo tidak akan benar-benar menginstal modul tersebeut. Note : Kalau saya lihat modul odoo yang menggunakan ‘installable’: False maka modul tersebut tidak mempunyai button install, tapi ketika saya buat modul sendiri maka tombol install tetap muncul meskipun sudah diset False. Dan jujur saja saya tidak tahu kapan harus set ‘installable’: False, karena logikanya kita bikin modul untuk diinstal. Kalau anda tahu, please let me know hehe 🙂
  • auto_install : tipe boolean (default: False), modul akan otomatis diinstal jika semua modul dependencies nya terinstal. Dan jika modul tersebut tidak mempunyai dependencies (baris/key depends nya kosong) maka modul tersebut akan diinstal ketika create database

Diantara informasi metadata tersebut ada yang ditampilkan di interface odoo ada juga yang tidak.

Sebenarnya masih ada lagi beberapa key metadata yang bisa dipakai dalam file __manifest__.py tersebut, seperti maintainer, external_dependencies, license, dll. Akan tetapi kita tidak perlu memasukkan semuanya, bahkan jika kita hanya mengisi kurung kurawal {} pun modul tetap bisa terbaca di menu Apps. Selain itu kita juga bisa mengisi key dan value baru yang tidak ada formatnya dari odoo, asalkan sesuai dengan penulisan dictionary. Misalnya ‘nomor hp’: ‘085123456789’, ‘contributors’: ‘Miftah, Heru dan Ajeng’. Tambahan key value tersebut tidak akan menyebabkan modul jadi error, tapi juga tidak akan menambahkan efek apapun terhadap modul.

Perlu diingat bahwa penulisan metadata tersebut menggunakan format dictionary yaitu ada key dan value, jika penulisannya salah seperti kurang tanda kutip atau koma di akhir value maka akan menyebabkan addons tidak dapat terbaca.

Jika anda masih belum berhasil menginstalnya, silahkan download addons yang sudah saya buat berikut ini https://bitbucket.org/miftahussalam/new-addons/get/f01b87fb260f.zip

Di bawah ini saya juga membuat tutorial dalam bentuk video yang berhubungan dengan tutorial part 2 ini, silahkan disimak.

Terimakasih, semoga bermanfaat dan CMIIW…

Tutorial odoo/openerp Indonesia