Bagi bisnis yang menjual produk bergaransi — mulai dari distributor peralatan instrumentasi, elektronik, hingga alat berat — pertanyaan pelanggan yang paling sering muncul justru sederhana: "Garansi barang saya masih berlaku atau tidak?"
Masalahnya, banyak bisnis di Indonesia masih menjawab pertanyaan ini dengan cara yang sama: buka file Excel, cari nomor invoice, hitung manual dari tanggal pengiriman. Prosesnya lambat, rawan salah hitung, dan tidak bisa diakses tim customer service secara real-time.
Di IntegraERP, kami membangun solusi ini langsung di dalam sistem Odoo yang sudah dipakai tim sales dan gudang sehari-hari — tanpa aplikasi tambahan, tanpa proses manual.
Masalah yang Sering Ditemui Bisnis SME
Dari pengalaman implementasi di beberapa klien distributor dan retail, ada tiga masalah berulang terkait garansi:
- Tanggal mulai garansi tidak konsisten. Sebagian bisnis menghitung dari tanggal invoice, sebagian dari tanggal pengiriman barang — dan keduanya sering tidak sama karena proses logistik.
- Produk dengan serial number butuh tracking per unit, bukan per pesanan. Satu sales order bisa berisi 10 unit barang dengan 10 tanggal garansi berbeda jika ada pengiriman parsial.
- Tim sales dan customer service tidak punya akses cepat untuk mengecek status garansi tanpa membuka laporan terpisah atau bertanya ke tim akunting.
Solusi: Warranty Tracking Terintegrasi di Odoo
Kami membangun tiga komponen yang saling terhubung untuk menjawab masalah ini:
1. Laporan Warranty Otomatis (Warranty Report)
Sebuah report khusus yang menarik data langsung dari Sales Order, Invoice, Delivery, dan Serial/Lot Number yang tercatat di sistem — tanpa perlu input ulang data apa pun oleh user.
Logika perhitungan garansinya dibuat mengikuti kondisi nyata di lapangan:
- Jika produk memiliki serial number, tanggal expired garansi mengikuti tanggal yang tercatat di serial number tersebut (lebih presisi per unit barang).
- Jika tidak ada serial number, sistem menghitung otomatis dari tanggal invoice + periode garansi produk (dalam bulan).
- Status garansi otomatis terklasifikasi menjadi empat kategori: Active, Expired, No Expiry, dan No Invoice (untuk kasus barang sudah dikirim tapi invoice belum terbit).
Report ini bisa difilter berdasarkan pelanggan, nomor sales order, atau serial number — dan di-group berdasarkan status atau customer untuk kebutuhan monitoring tim customer service.
2. Smart Button Langsung di Sales Order
Alih-alih tim sales harus pindah ke menu report terpisah, kami menambahkan smart button "Warranty" langsung di halaman Sales Order — pola UI yang sama dengan smart button bawaan Odoo seperti "Invoiced" atau "Delivered".
Tombol ini:
- Otomatis tersembunyi jika sales order tersebut tidak memiliki produk bergaransi, menjaga tampilan tetap bersih untuk order yang tidak relevan.
- Menampilkan jumlah record garansi terkait order tersebut secara langsung di angka besar pada tombol.
- Saat diklik, langsung membuka daftar detail garansi untuk order tersebut — lengkap dengan status, serial number, dan tanggal expired.
3. Data yang Selalu Real-Time
Karena seluruh logika ini dibangun sebagai SQL view yang menarik data langsung dari tabel transaksi (sales order, delivery, invoice, stock lot), laporan ini tidak butuh proses sinkronisasi atau input manual tambahan. Begitu invoice diposting atau barang dikirim, status garansi otomatis ter-update.
Manfaat untuk Bisnis
Fitur sederhana ini memberikan dampak langsung pada operasional:
- Customer service bisa langsung menjawab pertanyaan pelanggan soal status garansi tanpa menunggu tim lain.
- Tim sales punya visibilitas langsung dari halaman order yang sedang mereka kerjakan.
- Manajemen punya data agregat kapan saja untuk melihat berapa banyak unit yang masih dalam masa garansi aktif — berguna untuk proyeksi biaya after-sales service.
Studi Kasus: Distributor Instrumentasi dengan Multi-Warehouse
Fitur ini pertama kali kami kembangkan untuk klien di industri distribusi instrumentasi dan fiber optic, dengan kebutuhan spesifik: produk dijual dalam satuan meter/roll/drum, sebagian dengan serial number per unit, dan proses invoice yang tidak selalu bersamaan dengan pengiriman barang. Custom module ini menjadi bagian dari implementasi Odoo 19 yang lebih luas, mencakup juga penomoran invoice ganda (PPN/Non-PPN) dan kontrol akses berbasis field untuk data sensitif seperti harga pokok.
Untuk yang Penasaran dengan Sisi Teknisnya (Functional & Developer)
Bagi rekan-rekan yang familiar dengan Odoo, berikut gambaran arsitektur di balik fitur ini:
Laporan dibangun sebagai SQL View (_auto = False), bukan model tabel biasa. Artinya tidak ada data yang disimpan ulang atau di-duplikasi — laporan ini murni hasil JOIN real-time dari tabel sale_order, sale_order_line, stock_move, stock_move_line, stock_picking, stock_lot, dan account_move. Konsekuensinya: performa query tetap ringan karena Postgres yang menangani agregasi, dan data selalu konsisten dengan transaksi asli — tidak ada risiko laporan "telat sync".
Beberapa detail implementasi yang mungkin relevan untuk tim developer lain yang ingin membangun fitur serupa:
- Perhitungan tanggal expired garansi menggunakan CASE WHEN untuk membedakan produk dengan serial/lot tracking (ambil dari stock_lot.warranty_expiry_date) vs. produk tanpa tracking (hitung dari invoice_date + interval bulan), dengan fallback status 'No Invoice' untuk barang yang sudah dikirim tapi belum di-invoice.
- Smart button di form Sales Order memakai pola standar Odoo: compute field Boolean untuk kontrol invisible, dan compute field Integer dengan widget="statinfo" untuk menampilkan angka — sama persis dengan pola smart button bawaan seperti "Invoiced" atau "Delivered", supaya konsisten secara UX.
- Filter dan group-by di search view mengikuti sedikit perubahan syntax pada Odoo 19 dibanding versi sebelumnya — beberapa struktur <group> untuk grouping filter perlu disesuaikan dari cara penulisan di Odoo 17/18.
Pendekatan ini sengaja dipilih supaya module tetap ringan untuk di-maintain dan tidak menambah beban database dengan cron job atau computed stored field yang perlu dijadwalkan ulang.
Satu detail penting: status Active/Expired ini tidak dihitung sekali lalu disimpan, melainkan dievaluasi ulang setiap kali laporan dibuka, dengan membandingkan tanggal expired terhadap NOW() (waktu saat query dijalankan):
sql
CASE
WHEN lot.warranty_expiry_date < NOW() THEN 'Expired'
ELSE 'Active'
END
Artinya, sebuah produk yang hari ini masih berstatus Active akan otomatis berubah menjadi Expired begitu tanggal garansinya lewat — tanpa perlu cron job, tanpa perlu proses batch harian, dan tanpa risiko status "basi" karena lupa di-refresh. Setiap kali user membuka report ini, statusnya selalu mencerminkan kondisi hari itu juga.
Cocok untuk Perusahaan Seperti Apa?
Fitur warranty tracking seperti ini paling relevan untuk bisnis dengan karakteristik berikut:
- Menjual produk fisik bergaransi, baik garansi dari prinsipal/pabrikan maupun garansi toko sendiri — misalnya elektronik, alat instrumentasi, peralatan industri, IT hardware, atau alat berat.
- Melacak barang per unit dengan serial number/lot, bukan hanya per jenis produk — umum di distributor, reseller resmi, atau perusahaan yang menangani barang dengan nilai satuan tinggi.
- Punya proses invoice dan pengiriman yang tidak selalu bersamaan — misalnya karena termin pembayaran, retensi, atau pengiriman parsial — sehingga perhitungan garansi manual jadi rawan salah.
- Memiliki tim after-sales/service yang perlu menjawab klaim garansi pelanggan dengan cepat, tanpa bolak-balik ke tim akunting atau gudang untuk verifikasi.
- Sudah menggunakan atau berencana migrasi ke Odoo, dan ingin fitur seperti ini menyatu langsung ke alur kerja sales-delivery-invoice yang sudah berjalan, bukan sistem terpisah yang perlu di-maintain sendiri.
Sebaliknya, untuk bisnis jasa murni tanpa produk fisik bergaransi, atau bisnis dengan volume transaksi sangat kecil yang masih nyaman dikelola manual, kompleksitas fitur ini mungkin belum diperlukan dalam waktu dekat.
Screenshot :
- Produk master dengan tambahan informasi Warranty

2. SO dengan Smart Ribbon Warranty

3. Daftar semua produk yang bergaransi dan ada masa waktunya

Kesimpulan
Garansi produk bukan sekadar catatan administratif — ini adalah bagian dari pengalaman pelanggan yang bisa jadi nilai jual tersendiri jika dikelola dengan baik. Dengan custom module warranty tracking yang terintegrasi langsung ke alur kerja Odoo yang sudah ada, bisnis tidak perlu sistem tambahan atau proses manual untuk memberikan jawaban cepat dan akurat kepada pelanggan.
Tertarik menerapkan solusi serupa untuk bisnis Anda? Tim IntegraERP siap membantu analisis kebutuhan dan implementasi custom module yang sesuai dengan proses bisnis Anda.