Szeto Consultants

Bantuan Teman-teman: Memanggil Fungsi `amount_to_text` Odoo ke Pentaho Report Designer

Bantuan Teman-teman: Memanggil Fungsi `amount_to_text` Odoo ke Pentaho Report Designer

Diposting pada 27 Jun 2026, 18:59
Ditanyakan oleh: Arif

Halo teman-teman praktisi Odoo dan Pentaho sekalian,

Saya Arif dari tim IT di perusahaan kami. Saat ini kami menggunakan Odoo ERP untuk operasional sehari-hari dan juga memanfaatkan Pentaho Report Designer untuk kebutuhan laporan-laporan kustom yang lebih spesifik dan kompleks.

Saya sedang menghadapi kendala terkait implementasi fungsi 'amount_to_text' atau 'terbilang' pada laporan yang kami buat di Pentaho. Seperti yang kita semua tahu, Odoo punya fungsi 'amount_to_text' yang sangat powerful dan fleksibel untuk mengkonversi nilai numerik (misal: jumlah total faktur) menjadi teks (misal: 'Dua Juta Lima Ratus Ribu Rupiah').

Nah, yang menjadi pertanyaan besar saya, bagaimana cara terbaik untuk 'memanggil' atau 'menggunakan ulang' fungsi 'amount_to_text' yang ada di backend Odoo tersebut agar bisa langsung tampil di laporan yang kami desain menggunakan Pentaho Report Designer? Apakah ada cara standar atau best practice untuk melakukan integrasi ini?

Sejauh ini saya terpikir beberapa opsi, tapi masih belum menemukan jalan yang paling efisien:
1. Menarik data mentah dari database Odoo via SQL, tapi tentu fungsi 'amount_to_text' ini adalah logic Python di Odoo, bukan fungsi database yang bisa langsung dipanggil.
2. Membuat ulang logic 'amount_to_text' secara manual di Pentaho, tapi ini rasanya kurang efisien, rentan error, dan duplikasi kode.
3. Mungkin ada cara via API Odoo untuk mendapatkan nilai terbilang ini dan kemudian di-pass ke Pentaho? Kalau iya, bagaimana cara mengintegrasikannya dengan data source di Pentaho secara rapi?

Adakah teman-teman di sini yang punya pengalaman serupa atau punya solusi jitu untuk masalah ini? Mungkin ada trik atau setup tertentu yang perlu saya lakukan agar fungsi Odoo ini bisa 'direferensikan' atau 'dikonsumsi' langsung oleh Pentaho?

Mohon pencerahannya ya. Terima kasih banyak sebelumnya atas perhatian dan bantuannya!

Balasan (1)

Admin Odoo ForumAdmin & AI Support27 Jun 2026, 18:59
Halo Mas Arif,

Wah, pertanyaan yang bagus banget nih! Ini memang dilema umum yang sering dihadapi teman-teman saat mencoba mengintegrasikan Odoo dengan tool pelaporan eksternal seperti Pentaho Report Designer, terutama untuk logic yang sifatnya fungsional seperti konversi terbilang. Saya sangat paham dengan kebutuhan Mas Arif untuk memanfaatkan fungsi amount_to_text Odoo yang sudah teruji dan reliable.

Mari kita bahas opsi-opsi yang Mas Arif sudah pikirkan:




1. Menarik data mentah dari database Odoo via SQL

Mas Arif sudah benar sekali. Fungsi amount_to_text di Odoo itu adalah logic yang ditulis dalam Python, bagian dari kode aplikasi Odoo, bukan fungsi level database yang bisa langsung dipanggil dengan query SQL. Jadi, opsi ini memang tidak bisa dilakukan secara langsung. Mengakses database Odoo via SQL memang bagus untuk data mentah, tapi tidak untuk logika bisnis seperti ini.




2. Membuat ulang logic 'amount_to_text' secara manual di Pentaho

Secara teknis mungkin saja dilakukan (misalnya dengan JavaScript atau Groovy di Pentaho), tapi saya setuju sekali dengan Mas Arif, ini adalah pilihan yang kurang efisien dan rentan error. Logic terbilang ini cukup kompleks, apalagi jika harus menangani berbagai mata uang, desimal, dan bahasa yang berbeda. Membangun ulang dari nol akan memakan waktu, sulit pemeliharaannya, dan ada risiko ketidaksesuaian hasil dengan Odoo. Ini bukan best practice yang kami rekomendasikan.




3. Memanggil via API Odoo

Nah, ini dia Mas Arif, opsi ketiga inilah yang merupakan pendekatan terbaik dan paling direkomendasikan untuk kasus Mas Arif!




Berikut adalah cara kerjanya dan bagaimana mengintegrasikannya dengan rapi:




Langkah 1: Membuat Custom API Endpoint di Odoo (Recommended)

Karena fungsi amount_to_text biasanya terikat pada model tertentu (misal: account.move) atau modul lokalisasi dan tidak secara langsung diekspos sebagai API utilitas umum, cara paling bersih adalah dengan membuat modul Odoo kustom yang sederhana.




Tujuan Modul Kustom: Modul ini akan membuat sebuah controller (endpoint API) baru. Controller ini akan menerima parameter seperti nilai numerik (amount), mata uang (currency_id), dan mungkin bahasa (lang).
Cara Kerja: Di dalam controller tersebut, Mas Arif akan memanggil fungsi internal Odoo yang melakukan konversi terbilang (misalnya, mencari fungsi amount_to_text di modul account atau modul lokalisasi yang relevan di Odoo versi Mas Arif, lalu memanggilnya). Hasil konversi ini kemudian akan dikembalikan sebagai respons JSON.
Contoh (konseptual): Endpoint bisa seperti /api/convert_amount_to_text yang menerima POST request dengan body {"amount": 1234567.89, "currency_id": 1} dan mengembalikan {"terbilang": "Satu Juta Dua Ratus Tiga Puluh Empat Ribu Lima Ratus Enam Puluh Tujuh Rupiah Delapan Puluh Sembilan Sen"}.




Pendekatan ini akan memastikan bahwa kita selalu menggunakan logic terbilang yang sama persis dengan yang digunakan Odoo, sehingga hasilnya konsisten dan akurat.




Langkah 2: Mengintegrasikan dengan Pentaho Report Designer (via Kettle/PDI)

Pentaho Report Designer sendiri biasanya mengambil data dari sumber data yang sudah siap. Untuk memanggil API eksternal seperti Odoo, kita akan membutuhkan bantuan Pentaho Data Integration (PDI), atau yang sering disebut Kettle.




Alur kerjanya kira-kira seperti ini dalam sebuah transformasi Kettle:




1. Ambil Data Utama: Mas Arif bisa mengambil data utama untuk laporan (misalnya data faktur, total, dll.) langsung dari database Odoo via koneksi SQL atau dari Odoo API jika data tersebut juga lebih cocok diambil melalui API.
2. Panggil Custom Odoo API: Untuk setiap baris data yang membutuhkan nilai terbilang, Mas Arif bisa menggunakan step 'REST Client' atau 'Web Services Lookup' di Kettle. Step ini akan memanggil custom API endpoint Odoo yang sudah dibuat di Langkah 1. Masukkan nilai nominal dari data utama sebagai parameter ke API tersebut.
3. Gabungkan Data: Setelah mendapatkan respons terbilang dari Odoo API, gabungkan (join) nilai terbilang ini kembali ke aliran data utama menggunakan step seperti 'Join Rows (deprecated)' atau 'Merge Join' jika diperlukan, atau langsung menambahkannya ke baris jika panggilan API dilakukan per baris.
4. Kirim ke Pentaho Report Designer: Data yang sudah diperkaya dengan nilai terbilang ini kemudian bisa menjadi input untuk Pentaho Report Designer. Mas Arif bisa output data ini ke file CSV, tabel sementara, atau menggunakan Kettle sebagai data source langsung untuk laporan Pentaho.




Dengan cara ini, Mas Arif akan mendapatkan data terbilang yang akurat dan konsisten sesuai dengan logic Odoo, tanpa perlu duplikasi kode atau membuat ulang di Pentaho. Ini adalah solusi yang fleksibel, profesional, dan mudah dipelihara.




Semoga penjelasan ini memberikan pencerahan ya, Mas Arif! Kalau ada pertanyaan lanjutan atau butuh panduan lebih detail untuk implementasi modul kustomnya, jangan sungkan untuk bertanya lagi di komunitas ini.




Sukses selalu untuk proyeknya!

Berikan Tanggapan

⚠️ Anti-Spam Aktif: Dilarang menyertakan tautan/URL di dalam form ini.
Butuh Konsultasi Odoo? 👋
Scroll to Top