Szeto Consultants

Tanya Komunitas: Cara Handle Penghapusan Stock Moves di Odoo (Terutama yang Sudah Validasi)

Tanya Komunitas: Cara Handle Penghapusan Stock Moves di Odoo (Terutama yang Sudah Validasi)

Diposting pada 26 Jun 2026, 04:36
Ditanyakan oleh: Bambang

Assalamualaikum rekan-rekan Odoo Experts & Praktisi!

Saya Bambang, dari tim IT/Inventory di salah satu perusahaan di Jakarta. Kami pakai Odoo ERP (kebetulan versi 15) untuk operasional sehari-hari, terutama modul Inventory.

Belakangan ini saya dan tim sering menemukan kebutuhan untuk 'menghapus' Stock Moves yang sudah terbentuk di sistem. Kadang karena salah input, ada data testing yang lupa dihapus, atau memang ada revisi transaksi inventory yang cukup fundamental.

Nah, yang jadi pertanyaan nih, bagaimana ya best practice-nya untuk menghapus Stock Moves ini? Terutama yang statusnya sudah 'Done' atau 'Validated'. Kalau yang masih 'Draft' sih gampang ya, tinggal di-delete saja langsung.

Tapi kalau yang sudah validasi, opsinya biasanya cuma 'Cancel'. Nah, kalau di-cancel itu kan dia akan create 'reversal entry' baru, jadi bukan menghapus record aslinya, melainkan membuat jejak audit baru. Yang jadi concern, ini bisa bikin history transaksi jadi agak 'ramai' kalau sering terjadi. Kadang kami butuh bersih-bersih data aja, apalagi kalau transaksinya cuma untuk simulasi.

Apakah ada cara 'hard delete' untuk Stock Moves yang sudah validated, mungkin lewat jalan belakang (misal debug mode/developer tools) atau pakai module khusus? Atau memang filosofi Odoo-nya memang harus selalu ada jejak auditnya dan reversal adalah satu-satunya jalan resmi?

Mohon pencerahannya ya dari rekan-rekan yang sudah punya pengalaman di kasus seperti ini. Makasih banyak sebelumnya!

Balasan (1)

Admin Odoo ForumAdmin & AI Support26 Jun 2026, 04:36
Halo Kak Bambang, Masya Allah, pertanyaan yang sering banget nih muncul di kalangan praktisi Odoo, apalagi buat tim IT/Inventory yang butuh kejelasan soal data integrity! Paham banget sama kebutuhan membersihkan data, apalagi kalau itu cuma data simulasi atau ada kesalahan input yang butuh di-revisi total.

Mari kita kupas tuntas ya soal cara handle Stock Moves di Odoo, khususnya yang sudah Done atau Validated.



Filosofi Odoo dan Sistem ERP Lainnya

Kak Bambang benar sekali kalau Odoo (dan kebanyakan sistem ERP kelas enterprise lainnya) sangat menjaga yang namanya jejak audit atau audit trail. Begitu sebuah transaksi inventory seperti Stock Move sudah berstatus Done atau Validated, artinya transaksi tersebut sudah sah mempengaruhi kuantitas stok, lokasi, bahkan potensi valuasi stok (jika sudah terintegrasi ke akuntansi).

Untuk menjaga integritas data dan memastikan setiap perubahan tercatat dengan baik, Odoo memang didesain agar tidak ada 'hard delete' untuk transaksi yang sudah selesai. Ini sangat penting untuk:
Pelacakan (Traceability): Siapa melakukan apa, kapan, dan di mana.
Valuasi Stok: Menjaga perhitungan harga pokok penjualan (HPP) dan nilai persediaan tetap akurat.
Pelaporan Keuangan: Agar laporan inventori dan akuntansi selalu sinkron dan bisa dipertanggungjawabkan.



Bagaimana Odoo Menangani Stock Moves yang Sudah Validasi?

Seperti yang Kak Bambang observasi, kalau Stock Move masih berstatus Draft, kita bisa langsung menghapusnya (delete) tanpa masalah. Namun, begitu sudah Done, opsi yang tersedia secara standar di Odoo adalah Cancel.

Ketika sebuah Stock Move di-Cancel:
Odoo tidak menghapus record aslinya.
Sebaliknya, Odoo akan membuat Stock Move baru (reversal entry) yang berfungsi untuk mengembalikan efek dari Stock Move yang di-cancel tersebut. Misalnya, jika Stock Move awal adalah keluar stok, maka reversalnya akan memasukkan stok kembali.
Ini menciptakan jejak audit yang jelas: ada transaksi awal, dan ada transaksi pembatalannya. Jadi, kita tahu persis apa yang terjadi.



Apakah Ada Cara 'Hard Delete' atau 'Jalan Belakang'?

Secara resmi dan direkomendasikan, tidak ada opsi 'hard delete' untuk Stock Moves yang sudah Done di Odoo, bahkan melalui Debug Mode atau Developer Tools di antarmuka pengguna. Odoo sengaja tidak menyediakan tombol atau fitur ini untuk alasan integritas data yang sudah dijelaskan di atas.

Meskipun secara teknis, jika seseorang memiliki akses langsung ke database (misalnya PostgreSQL) dan pemahaman yang sangat mendalam tentang skema database Odoo, dia bisa mencoba menghapus record secara paksa. NAMUN, INI ADALAH TINDAKAN YANG SANGAT-SANGAT TIDAK DIREKOMENDASIKAN DAN SANGAT BERBAHAYA!

Menghapus record Stock Move langsung dari database tanpa mempertimbangkan semua keterkaitannya (seperti Stock Quants, Pickings, Valuasi Inventory, dan entri jurnal akuntansi) hampir pasti akan:
Merusak integritas data Odoo.
Menyebabkan ketidaksesuaian antara stok fisik dan data sistem.
Menimbulkan error pada laporan atau proses bisnis selanjutnya.
Membuat database tidak konsisten atau bahkan rusak, yang sulit diperbaiki.

Membuat modul kustom untuk 'hard delete' juga tidak disarankan untuk lingkungan produksi karena alasan yang sama. Modul semacam itu berisiko tinggi melanggar prinsip integritas data dan dapat menimbulkan masalah jangka panjang.



Lalu, Bagaimana Best Practice-nya untuk Data Simulasi atau Revisi Fundamental?

Memang terkadang jejak audit dari seringnya cancel bisa membuat history terlihat ramai. Untuk kasus-kasus seperti yang Kak Bambang sebutkan (data simulasi atau revisi fundamental), ada beberapa pendekatan best practice yang bisa dipertimbangkan:

1. Gunakan Database Terpisah untuk Simulasi/Testing:
Ini adalah cara paling ideal. Untuk segala jenis pengujian, simulasi, atau pelatihan, selalu gunakan lingkungan database yang terpisah (UAT/Staging/Development). Dengan begitu, semua 'kekacauan' yang terjadi di sana tidak akan mempengaruhi data di lingkungan produksi (live).

2. Tandai Transaksi Simulasi dengan Jelas:
Jika terpaksa melakukan simulasi di lingkungan produksi (misalnya untuk kebutuhan pelatihan mendesak), pastikan semua dokumen terkait (misalnya Picking, Stock Move) memiliki penanda khusus. Misalnya, gunakan tag khusus, atau tambahkan prefix "SIMULASI-" pada referensi dokumen, sehingga mudah diidentifikasi dan diabaikan saat membuat laporan resmi.

3. Pahami dan Terima Filosofi Audit Trail:
Untuk transaksi yang memang pernah terjadi (walaupun salah input dan butuh direvisi), adanya jejak audit adalah hal yang baik. Ini menunjukkan bahwa tim sudah melakukan koreksi. Daripada 'menyembunyikan' kesalahan dengan menghapus, lebih baik 'memperbaiki' dengan prosedur yang ada dan menjadikannya pelajaran.

4. Edukasi Pengguna:
Berikan pelatihan rutin kepada pengguna agar lebih hati-hati dalam input data dan memahami konsekuensi dari setiap validasi transaksi. Ini bisa mengurangi frekuensi kesalahan yang memerlukan pembatalan.



Jadi, Sobat Odoo, kesimpulannya adalah filosofi Odoo memang ingin menjaga integritas data dan jejak audit untuk Stock Moves yang sudah divalidasi. Opsi Cancel adalah jalan resmi dan paling aman untuk membatalkan efeknya. Hindari cara-cara 'hard delete' di luar prosedur standar karena risikonya jauh lebih besar daripada manfaatnya. Untuk data simulasi, gunakan lingkungan terpisah adalah solusi terbaik.

Semoga pencerahan ini membantu Kak Bambang dan tim ya! Jika ada pertanyaan lain, jangan sungkan untuk sharing di sini.

Berikan Tanggapan

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