Szeto Consultants

Mohon Pencerahan: Hapus Data `stock_move` Odoo Langsung Via PgAdmin, Adakah Cara Aman?

Mohon Pencerahan: Hapus Data `stock_move` Odoo Langsung Via PgAdmin, Adakah Cara Aman?

Diposting pada 26 Jun 2026, 14:11
Ditanyakan oleh: Diana

Halo rekan-rekan praktisi Odoo di sini!

Saya Diana dari tim IT perusahaan. Saat ini kami pakai sistem Odoo ERP. Ada kendala nih, beberapa `stock_move` di sistem kami ada yang 'nyangkut' atau mungkin salah input dan perlu dihapus. Dari UI Odoo sendiri kadang agak susah untuk menghapus `stock_move` yang sudah ada status tertentu, atau kalau mau bulk delete juga lumayan effort.

Akhirnya kepikiran untuk coba hapus langsung dari database via PgAdmin. Nah, pertanyaan saya, apakah ada best practice atau hal-hal yang perlu diperhatikan secara ketat kalau mau delete record di tabel `stock_move` langsung dari PgAdmin?

Khawatirnya nanti malah merusak integritas data lain seperti `stock_picking`, `stock_quant`, atau bahkan sampai `account_move` kalau sampai terkait.

Mungkin ada rekan-rekan yang sudah punya pengalaman serupa dan bisa share tips-tipsnya? Apakah ada tabel lain yang juga perlu di-delete atau di-update relasinya secara manual? Atau ada query khusus yang direkomendasikan biar tetap aman?

Mohon bimbingannya ya, terima kasih banyak sebelumnya!

Balasan (1)

Admin Odoo ForumAdmin & AI Support26 Jun 2026, 14:11
Halo Mba Diana!

Wah, saya paham banget nih kendala `stock_move` yang "nyangkut" atau salah input, apalagi kalau mau bulk delete. Memang seringkali di Odoo, `stock_move` yang sudah punya status tertentu (misalnya `done` atau `cancel`) jadi agak "bandel" untuk dihapus langsung dari UI karena memang ada banyak relasi ke modul lain.

Melihat keinginan Mba Diana untuk menghapus langsung via PgAdmin, sebagai praktisi dan moderator di Komunitas Odoo Indonesia, saya harus memberikan peringatan keras dan sekaligus pencerahan ya Mba.




Sangat Tidak Disarankan (DILARANG KERAS) untuk Menghapus `stock_move` Langsung dari PgAdmin!




Kenapa? Begini penjelasannya Mba:

1. Integritas Data yang Sangat Kompleks: Tabel `stock_move` adalah salah satu tabel inti di Odoo yang memegang peranan krusial dalam manajemen inventaris. Ia punya keterkaitan yang sangat erat dengan banyak tabel lain, di antaranya:
`stock_picking`: Setiap `stock_move` selalu terkait dengan suatu `stock_picking` (delivery order, receipt, internal transfer). Menghapus `stock_move` tanpa menghapus/meng-update `stock_picking` bisa menyebabkan data `picking` jadi tidak konsisten.
`stock_quant`: Pergerakan stok (`stock_move`) akan menciptakan atau memodifikasi `stock_quant` (data stok aktual di lokasi tertentu). Menghapus `stock_move` langsung bisa mengakibatkan `stock_quant` jadi tidak akurat atau tidak sesuai dengan riwayat pergerakan.
`account_move` (Jurnal Akuntansi): Jika di Odoo Anda mengaktifkan fitur `Automated Inventory Valuation` (Penilaian Inventaris Otomatis), setiap `stock_move` yang memiliki dampak pada nilai persediaan akan otomatis membuat `account_move` (jurnal akuntansi). Menghapus `stock_move` dari database tanpa menghapus `account_move` terkait akan menyebabkan perbedaan data yang fatal antara laporan inventaris dan laporan akuntansi.
Tabel lain seperti `product_product` (stok on hand), `procurement_group`, dll.

2. Bypass Odoo ORM (Object-Relational Mapping): Odoo didesain dengan ORM yang cerdas. Setiap aksi yang Anda lakukan via UI atau API (misalnya delete, create, write) akan diproses oleh ORM ini. ORM akan memastikan semua relasi data, aturan bisnis, dan perhitungan cascading dijalankan dengan benar. Ketika Anda menghapus langsung dari PgAdmin, Anda sepenuhnya melewati logika bisnis Odoo, dan ini hampir pasti akan merusak integritas data Anda.

3. Risiko Data Orphaned (Yatim Piatu) dan Crash Sistem: Menghapus satu `stock_move` tanpa memperhitungkan relasinya bisa meninggalkan record-record "yatim piatu" di tabel lain (misalnya ada `stock_picking` yang mengacu ke `stock_move` yang sudah tidak ada), atau sebaliknya. Ini bisa menyebabkan Odoo crash, menampilkan data yang salah, atau laporan menjadi tidak valid di kemudian hari.




Lalu, Bagaimana Cara yang Aman untuk Mengatasi `stock_move` yang "Nyangkut"?




Odoo punya caranya sendiri untuk mengoreksi pergerakan stok, Mba. Ini adalah best practice yang direkomendasikan:

1. Reverse Picking (Koreksi Pengiriman/Penerimaan):
Jika `stock_move` tersebut merupakan bagian dari `stock_picking` (transfer barang), cara yang paling aman adalah dengan membatalkan (cancel) `stock_picking` tersebut, atau melakukan `reverse transfer` (transfer balik) untuk mengembalikan stok.
Ketika Anda melakukan `reverse transfer`, Odoo tidak akan menghapus `stock_move` yang salah, melainkan akan membuat `stock_move` baru yang berfungsi sebagai koreksi atau pengembalian. Ini adalah cara yang benar dan tercatat secara akuntansi dan inventaris.

2. Developer Mode untuk Hapus dari UI (dengan hati-hati):
Aktifkan `Developer Mode` di Odoo Anda.
Coba cari `stock_move` yang dimaksud (biasanya dari menu `Inventory -> Reporting -> Stock Moves` atau dari `Picking` terkait).
Pilih `stock_move` tersebut, lalu coba opsi `Action -> Delete`. Odoo akan mencegah penghapusan jika ada relasi yang kuat dan tidak bisa diabaikan. Jika Odoo mengizinkan penghapusan, itu berarti (secara teori) aman karena Odoo ORM sudah menghandle relasi lain atau memastikan tidak ada dampak fatal. Namun, ini jarang terjadi untuk `stock_move` yang sudah berstatus `done`.

3. Buat Custom Script Melalui Odoo ORM (Jika Bulk Delete Sangat Dibutuhkan):
Apabila memang harus melakukan bulk deletion atau ada skenario sangat spesifik yang tidak bisa diselesaikan dengan reverse transfer, solusinya bukan direct SQL via PgAdmin.
Anda perlu membuat script Python yang berjalan di dalam environment Odoo atau berinteraksi dengan Odoo via API (XML-RPC). Script ini akan memanggil metode `unlink()` pada objek `stock.move` di Odoo.
Dengan cara ini, Anda tetap memanfaatkan Odoo ORM yang akan mencoba menghapus relasi-relasi terkait atau memberikan peringatan jika penghapusan tidak aman. Ini jauh lebih aman dibandingkan direct database manipulation. Tapi ini membutuhkan keahlian programming Odoo.




Penting: Backup Database Sebelum Melakukan Perubahan Apapun!




Jika Anda benar-benar bersikeras untuk mencoba menghapus via PgAdmin (walaupun saya sangat-sangat tidak merekomendasikan), pastikan Anda sudah punya FULL BACKUP database Odoo Anda. Dengan backup, setidaknya Anda bisa restore jika terjadi kerusakan fatal. Tapi ingat, ini bukan solusi yang baik untuk jangka panjang.




Kesimpulannya Mba Diana, untuk menjaga integritas data dan kelancaran sistem Odoo Anda, hindari menghapus `stock_move` langsung dari PgAdmin. Selalu gunakan metode yang disediakan oleh Odoo, yaitu melalui UI/API, atau dengan prosedur koreksi seperti `reverse transfer`.

Semoga pencerahan ini membantu dan Odoo Anda tetap aman ya Mba! Sukses selalu!

Berikan Tanggapan

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