Beranda Docdoo
Odoo Inventory Internals

Multi Routes & Rules
di Odoo Warehouse

Biar gudang tidak terasa seperti labirin kemarahan. Pahami pemicu pergerakan di balik layar yang membuat Odoo menciptakan ratusan tiket Picking dalam hitungan detik.

Multi Routes & Multi Rules di Odoo Warehouse

Biar gudang tidak terasa seperti labirin yang marah-marah

Pernah lihat tim warehouse bilang:
  • “Kenapa barang ini masuk Quality dulu?”
  • “Kok yang ini langsung ke Stock?”
  • “Kenapa waktu SO confirm, tiba-tiba ada transfer baru?”
  • “Ini route siapa? rule yang mana? kok picking-nya beranak pinak?”
Kalau iya, berarti kamu sedang bertemu salah satu topik Odoo Inventory yang paling sering bikin orang mengernyitkan dahi: Routes dan Rules.
Padahal kalau dibongkar dengan cara yang tepat, konsepnya justru cukup masuk akal. Di Odoo, route adalah jalur logistiknya, sedangkan rule adalah instruksi otomatis yang membuat barang bergerak dari satu lokasi ke lokasi lain. Fitur ini dipakai untuk proses seperti default lokasi per produk, alur quality control, supplier return, sampai replenishment antar warehouse.

1) Bayangkan warehouse seperti kota kecil 📦🏙️

Biar gampang, anggap warehouse itu seperti kota.
  • Locations = gedung-gedung di kota (Contoh: WH/Input, WH/Quality Control, WH/Stock, WH/Packing, WH/Output)
  • Route = jalur perjalanan (Contoh: “barang yang datang dari vendor harus lewat Input → Quality → Stock”)
  • Rule = lampu lalu lintas + polisi jalanannya (Contoh: “kalau barang tiba di Input, dorong ke Quality” atau “kalau ada kebutuhan di Output, tarik barang dari Stock”)
Jadi singkatnya:
Route = skenario perjalanan
Rule = aksi otomatis yang menjalankan perjalanan itu

2) Multi-Step Routes itu tombol pembuka dunianya 🔓

Sebelum bicara multi-routes, Odoo memang perlu dibukakan dulu pintunya. Di Inventory Settings, saat Multi-Step Routes diaktifkan, Odoo juga otomatis mengaktifkan Storage Locations. Setelah itu user bisa memakai route bawaan Odoo atau membuat route custom sendiri.

3) Route itu sebenarnya apa?

Secara praktis, route adalah definisi “barang harus lewat jalur mana”. Route di Odoo bisa diterapkan ke:
  • product
  • product category
  • warehouse
  • sales order line
  • shipping method
  • packaging
Ini penting, karena banyak orang salah paham: mereka kira route hanya milik warehouse. Padahal route bisa dipasang di banyak level, dan perilakunya beda-beda tergantung “Applicable On”-nya.

4) Rule itu apa?

Di dalam sebuah route, ada satu atau lebih rules. Pada form route, setiap rule punya minimal tiga hal penting:
  1. Action
  2. Source Location
  3. Destination Location
Kalau route adalah “cerita besar”, maka rule adalah “adegan-adegannya”.
Tanpa rules, route tidak akan bekerja.

5) Dua karakter utama: Pull Rule & Push Rule 🎭

Inilah inti yang paling sering bikin bingung.

A. Pull Rule = “ditarik karena ada kebutuhan”

Pull From dipicu ketika ada kebutuhan barang pada lokasi tertentu. Odoo membuat picking untuk memenuhi kebutuhan di destination location.
Analogi lucunya: Gudang depan teriak: “Eh, saya butuh barang nih!” Lalu sistem menjawab: “Oke, saya tarik dari lokasi sebelumnya.” (Orientasi pada permintaan)

B. Push Rule = “didorong karena barang sudah sampai”

Push To dipicu ketika barang tiba di source location tertentu. Begitu barang sampai di lokasi itu, Odoo membuat picking untuk mendorong barang ke destination location berikutnya.
Analogi lucunya: Begitu pallet nyampai di Input, petugas berkata: “Wah, kamu tidak boleh nongkrong di sini. Lanjut ke Quality sana.” (Orientasi pada kedatangan barang)

6) Cara paling mudah mengingatnya 🧠

Pakai kalimat ini:
  • Pull = ada yang minta
  • Push = ada yang datang
Kalau kamu ingat itu, separuh kebingungan hilang.

Mekanisme Fundamental Pull & Push

Demand Tracker

1. Customer Need / SO / MO

Langkah 2: Pull Rule🧲

Menarik stok mundur ke hulu karena ada dokumen yang sah meminta barang!

Arrival Tracker

1. Goods Arrive at Source

Langkah 2: Push Rule👉

Pelatuk ditembakkan! Mendorong barang maju ke lokasi inspeksi sesaat sesudah truk merapat di gudang.


8) Contoh lucu: gudang seperti wahana permainan 🎢

Skenario penerimaan barang tiga tahap (Three-step receipt): Barang diterima dulu di Input, dipindah ke Quality, lalu setelah lolos inspeksi baru masuk Stock. Barang belum tersedia untuk proses lanjutan sampai keluar dari Quality.
Start
🚚

Vendor

Area 1
Push 1
📥

Input

Area 2
Push 2
🔍

Quality

Area 3
Finish

Stock

Area 4

9) Contoh outgoing: pick, pack, ship 📦➡️🚚

Untuk pengiriman, Odoo juga punya route advance seperti pick-pack-ship. Pada area outbound, makanya pada flow outbound, orang sering merasa logic-nya lebih “ditarik oleh kebutuhan order”.
Start
📦

Stock

Tarik dr Rak

Pull 1
🛒

Picking

Kumpul di Troli

Pull 2
🏷️

Packing

Bungkus Label

Pull 3
🚪

Output

Di Pintu Kirim

Demand
👤

Customer

Sampai Tujuan


10) Jadi apa itu “multi routes”?

Istilah multi routes terasa saat satu warehouse punya beberapa skenario pergerakan barang secara bersamaan:
🍎
QC WajibSkenario AVendor → Input → Quality → Stock
📦
Barang StandarSkenario BVendor → Input → Stock
✈️
DropshipSkenario CSupplier → Customer Langsung
🏢
ReplenishmentSkenario DWH Pusat → WH Cabang
multi routes = banyak skenario perjalanan dalam ekosistem gudang yang sama

11) Dan apa itu “multi rule”?

Multi rule berarti dalam satu jalur bisa ada banyak aturan otomatis. Satu route boleh punya banyak rule, dan satu warehouse boleh punya banyak route. Kombinasi inilah yang sering membuat sistem terasa rumit, padahal Odoo sekadar mematuhi alur yang kita desain.

12) Perbedaan paling penting: route di level mana?

  • Warehouse: Semua transfer yang memenuhi kondisi di warehouse tersebut.
  • Product Category: Semua produk di bawah kategori itu mengikuti jalur yang sama.
  • Product: Ditetapkan spesifik per produk.
  • Sales Order Line: Fleksibilitas tinggi di mana User bisa mengubah rute dari Sales Order secara langsung.

13) Pola pikir mendesain Route

  1. Dari mana? (Vendor, Warehouse lain, Produksi, Return)
  2. Mampir ke mana? (Input, Quality, Storage, Packing, Output)
  3. Pemicunya apa? (Kedatangan, Demand, SO, MO)
  4. Ruang lingkupnya? (Semua barang, kategori tertentu, pas SO line terpilih saja)

16) Cara membaca masalah saat picking “beranak-pinak”

Kalau di Odoo muncul beberapa transfer dan tim mulai panik, jangan menuduh sistem "bug". Cek urutan logikanya di diagram berikut:
1

Transaksi Terjadi

Sales / Receipt / Manufacturing Trigger

2

Route Applied?

Apakah ada rute yg mengikat Product/Category/Warehouse ini?

3

Which Rule Fired First?

Rule Push/Pull mana yg jalurnya cocok?

4

Source & Destination

Ke mana lokasi fisik barang terikat?

5

Generated Picking

Odoo seketika melahirkan surat jalan (Picking).

Pertanyaan debugging yang paling berguna:
  1. Route apa yang kepakai?
  2. Route itu applicable di level mana?
  3. Rule mana yang menembak duluan?
  4. Source location dan destination location-nya apa?
  5. Apakah trigger-nya karena demand atau karena barang datang?

17) Cheat Sheet Super Singkat

🗺️Route

Di Odoo, route adalah sekumpulan rule push/pull untuk memindahkan produk antar lokasi penyimpanan, baik internal maupun eksternal.

Hover to unlock
🚦Rule

Rule menentukan kapan dan bagaimana produk harus pindah. Odoo selalu butuh trigger action (Pull/Push), Source, dan Destination Location.

Hover to unlock
🧲Pull

Orientasi Permintaan: Dipicu ketika ada demand pada suatu lokasi. Sistem otomatis menarik stok mundur ke hulu untuk memenuhi order tersebut.

Hover to unlock
👉Push

Orientasi Kedatangan: Dipicu ketika barang fisiknya sudah sampai ke suatu lokasi, sistem langsung menembak dan mendorongnya ke lokasi inspeksi berikutnya.

Hover to unlock
🔀Multi Routes

Satu gudang yang memiliki banyak opsi logistik, misal: Barang A bisa Dropship, sedangan Barang B wajib Quality Control.

Hover to unlock
⚙️Multi Rules

Dalam 1 rute tunggal ada beberapa fase tembakan surat jalan (picking). Misal: dari vendor terpecah jadi Input > QC > Stock.

Hover to unlock

Lanjut ke Skala Raksasa? 🔥

Pelajari bagaimana kami mengimplementasikan ratusan rule rute internal ini untuk bermanuver di beban 100 Juta Baris.

Baca 100M Blueprint