Stock Reservation Component
Responsibilities
Section titled “Responsibilities”Mengelola alokasi stok untuk kebutuhan outbound atau proses internal agar tidak terjadi double-booking dan over-allocation.
Interfaces/APIs
Section titled “Interfaces/APIs”Inputs
Section titled “Inputs”- Balance ID yang akan direservasi
- Product dan location context
- Reference type dan reference ID dokumen
- Quantity reserved dan UOM
- Status reservasi
Outputs
Section titled “Outputs”- Catatan reservasi aktif yang mengunci stok terhadap dokumen bisnis tertentu hingga proses fulfilment atau pembatalan.
Error Handling
Section titled “Error Handling”- Menolak reservasi saat qty available tidak mencukupi
- Menolak referensi dokumen tidak valid
- Menolak status transisi reservasi yang tidak legal
- Menolak reservasi yang menyebabkan inkonsistensi balance.
Data Structures:
Section titled “Data Structures:”| Field | Data Type | Constraints | Nullable | Description |
|---|---|---|---|---|
| reservation_id | ULID | Primary Key | Tidak | Identifier unik reservasi |
| balance_id | ULID | Foreign Key -> stock_balance.balance_id | Tidak | Relasi ke quant balance |
| product_id | ULID | Foreign Key -> product_product.product_product_id | Tidak | Produk yang direservasi |
| location_id | ULID | Foreign Key -> location.location_id | Tidak | Lokasi pengambilan stok |
| reference_type | VARCHAR(50) | Indexed, Not Null | Tidak | Jenis dokumen pemicu reservasi |
| reference_id | ULID | Indexed, Not Null | Tidak | ID dokumen pemicu reservasi |
| qty_reserved | DECIMAL(15,3) | > 0 | Tidak | Jumlah stok yang dibooking |
| status | ENUM(‘ACTIVE’,‘COMPLETED’,‘CANCELLED’) | Not Null | Tidak | Status lifecycle reservasi |
| reserved_at | TIMESTAMP | Not Null | Tidak | Waktu stok dikunci |
Algorithms/Logic
Section titled “Algorithms/Logic”Menerapkan alokasi stok berbasis ketersediaan quant, mengupdate qty_reserved pada stock balances secara atomik, dan melepaskan reservasi saat completed atau cancelled.
State Management
Section titled “State Management”Menyimpan state reservasi aktif sebagai kontrol ketersediaan stok hingga dokumen referensi selesai diproses.