Szeto Consultants

Minta Saran: Filter Data Bulanan di Odoo via API Menggunakan cURL

Minta Saran: Filter Data Bulanan di Odoo via API Menggunakan cURL

Diposting pada 18 Jun 2026, 00:43
Ditanyakan oleh: Kurniawan

Halo teman-teman praktisi Odoo di sini,

Saya Kurniawan dari tim IT, mau nanya nih. Saat ini kami sedang pakai Odoo dan ada kebutuhan untuk tarik data laporan tertentu secara otomatis setiap bulan. Rencananya mau pakai cURL buat interaksi ke API Odoo-nya.

Nah, yang bikin saya agak bingung itu gimana ya cara paling efektif buat filter datanya berdasarkan bulan? Misalnya, saya mau tarik semua transaksi atau sales order yang terjadi di bulan Januari 2024. Apa ada parameter khusus di bagian `domain` atau `payload` cURL yang perlu saya tambahkan untuk spesifikasi bulannya? Apakah ada format tanggal/bulan tertentu yang lebih optimal saat dipakai di `domain`?

Mungkin ada yang sudah pernah punya pengalaman atau script cURL contohnya untuk kasus seperti ini? Kira-kira best practice-nya gimana ya biar lebih efisien dan akurat?

Terima kasih banyak sebelumnya atas pencerahannya!

Balasan (1)

Admin Odoo ForumAdmin & AI Support18 Jun 2026, 00:43
Halo Mas Kurniawan, Sobat Odoo!

Wah, ini pertanyaan yang sering muncul nih di kalangan praktisi Odoo yang lagi eksplorasi API. Kebutuhan untuk tarik data bulanan secara otomatis via API itu memang krusial banget buat integrasi atau pelaporan. Tenang saja, ada cara efektifnya kok untuk filtering berdasarkan bulan di Odoo via API dengan cURL.

Intinya, untuk filter data berdasarkan bulan di Odoo API, kita akan memanfaatkan parameter domain yang ada di payload JSON. Odoo tidak menyediakan parameter khusus 'bulan' secara langsung, tapi kita bisa mencapainya dengan mendefinisikan rentang tanggal (date range) dari awal hingga akhir bulan yang diinginkan.

Begini cara kerjanya:

1. Tentukan Rentang Tanggal Bulanan
Untuk bulan Januari 2024, berarti rentang tanggalnya adalah dari '2024-01-01' sampai '2024-01-31'. Ini adalah format tanggal standar 'YYYY-MM-DD' yang paling optimal dan diterima di Odoo.

2. Susun Domain Filter
Domain di Odoo API adalah daftar dari daftar (list of lists) yang berisi kondisi filter. Untuk kasus Mas Kurniawan, kita butuh dua kondisi: satu untuk tanggal awal (lebih besar dari atau sama dengan) dan satu untuk tanggal akhir (lebih kecil dari atau sama dengan).

Misalnya, jika ingin tarik Sales Order (model sale.order) yang tanggal ordernya (field date_order) di bulan Januari 2024, domainnya akan terlihat seperti ini:


[['date_order', '>=', '2024-01-01'], ['date_order', '<=', '2024-01-31']]


Penting untuk diperhatikan, operator >= (greater than or equal) dan <= (less than or equal) akan memastikan semua data dalam rentang tersebut terambil, termasuk pada tanggal batas.

3. Struktur cURL untuk Panggilan API
Mas Kurniawan akan menggunakan metode execute_kw (execute keyword arguments) untuk membaca data. Di sini kita akan panggil method search_read dari model yang diinginkan (misalnya sale.order).

Berikut adalah contoh struktur cURL-nya (anggap Mas Kurniawan sudah punya sesi autentikasi atau langsung pakai common/login untuk mendapatkan session_id):


curl -X POST
https://URL_ODUU_ANDA/web/dataset/call_kw/
-H 'Content-Type: application/json'
-d '{
"jsonrpc": "2.0",
"method": "call",
"params": {
"model": "sale.order",
"method": "search_read",
"args": [
[['date_order', ">=", "2024-01-01"], ['date_order', "<=", "2024-01-31"]]
],
"kwargs": {
"fields": ["name", "date_order", "partner_id", "amount_total"]
}
},
"id": 1
}'


Penjelasan bagian pentingnya:
URL_ODUU_ANDA: Ganti dengan URL Odoo Mas Kurniawan (misalnya myodoo.com).
model: Ganti dengan model yang ingin diambil datanya (contoh: sale.order untuk Sales Order, account.move untuk Invoice, product.product untuk Produk, dll.). Pastikan nama field tanggalnya (misal: date_order) sesuai dengan model yang dipilih.
method: Gunakan search_read karena ini akan mencari dan langsung membaca data yang cocok dengan domain.
args: Ini adalah list yang berisi domain kita.
kwargs: Ini adalah dictionary untuk parameter tambahan seperti fields (daftar field yang ingin diambil), limit (jumlah maksimal record), offset (mulai dari record ke berapa), dll.

### Best Practice dan Tips Tambahan:

Gunakan Field Tanggal yang Tepat: Pastikan Mas Kurniawan menggunakan nama field tanggal yang benar sesuai dengan model yang dituju. Contoh:
Sales Order: date_order
Invoice: invoice_date atau date (tergantung versi Odoo dan konfigurasi)
Purchase Order: date_order
Stock Picking: date_done (jika sudah selesai) atau scheduled_date
Dinamiskan Tanggal: Daripada meng-hardcode '2024-01-01' dan '2024-01-31' di cURL, lebih baik Mas Kurniawan buat skrip (misalnya pakai Bash, Python, atau bahasa lain) untuk menghitung tanggal awal dan akhir bulan secara dinamis. Ini akan membuat proses otomatisasi bulanan jadi jauh lebih fleksibel.
Pilih Field yang Dibutuhkan: Di bagian "fields": [...], hanya sertakan nama field yang benar-benar Mas Kurniawan butuhkan. Ini akan mengurangi ukuran payload respons dan mempercepat proses.
Paginasi (limit dan offset): Jika Mas Kurniawan memiliki volume data yang sangat besar dalam satu bulan, pertimbangkan untuk menggunakan parameter "limit" dan "offset" di kwargs. Ini untuk menghindari API timeout atau penggunaan memori berlebihan. Mas Kurniawan bisa melakukan beberapa panggilan API untuk mengambil data secara bertahap.
Error Handling: Selalu cek respons dari API Odoo. Jika ada kesalahan, biasanya akan ada detail error di bagian "error" dari respons JSON.

Semoga pencerahan ini membantu Mas Kurniawan dalam menyusun skrip cURL-nya ya. Selamat mencoba dan jangan ragu bertanya lagi jika ada kendala!

Berikan Tanggapan

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