KTN-08
| Field | Isi |
|---|---|
| Dokumen ID | KTN-08 |
| Deskripsi | Booking stok: pencatatan reservasi stok dengan alur dokumen mirip Sales Order, tanpa field sales |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Fitur baru; logika mirip SO, rule tanpa sales |
1. Ringkasan
a. In scope
- User melihat daftar Booking Stok (tanggal, nomor dokumen, customer, cabang, status)
- User memfilter daftar berdasarkan nomor dokumen, tanggal, customer, cabang, dan status (draft / belum selesai / selesai)
- User membuat Booking Stok: tanggal, customer, cabang, dan baris barang, disimpan sebagai draft atau final
- User mengubah Booking Stok draft
- User meneruskan Booking Stok final ke penjualan
- User menyelesaikan Booking Stok (membatalkan sisa qty) atau memesan ulang sisa barang lalu menutup booking lama
- User menghapus Booking Stok draft dan mencetak Booking Stok
- Saat Booking Stok final, stok terkait di-booking / direservasi
b. Catatan
- Alur dokumen mengikuti pola Sales Order (draft / final, sisa qty, selesai, lanjut ke penjualan)
- Rule utama pembeda: tidak ada field sales pada Booking Stok
- Tidak ada metode pembayaran di Booking Stok; pembayaran dipilih saat diteruskan ke penjualan
c. Kesimpulan
- [FE] Buat halaman daftar Booking Stok (filter, status, aksi)
- [FE] Buat halaman create / edit draft Booking Stok tanpa field sales
- [FE] Buat halaman detail Booking Stok beserta aksi selesaikan, pesan ulang, hapus draft, cetak, dan buat penjualan atas booking
- [FE] Tambah opsi buat penjualan dari Booking Stok
- [FE] Aktifkan menu Booking Stok di navigasi brand
- [BE] Buat endpoint CRUD invoice Booking Stok
- [BE] Reservasi stok saat Booking Stok final; lepas / potong sesuai penyelesaian atau penjualan
- [BE] Endpoint selesaikan booking, pesan ulang, dan create penjualan dari booking
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan daftar Booking Stok dengan tanggal, nomor dokumen, customer, cabang, dan status |
| FR-02 | User dapat memfilter daftar Booking Stok |
| FR-03 | User dapat membuat Booking Stok dengan baris barang sebagai draft atau final, tanpa field sales |
| FR-04 | User dapat mengubah Booking Stok draft |
| FR-05 | Booking Stok final mereservasi stok sesuai qty baris |
| FR-06 | User dapat meneruskan Booking Stok final berstatus belum selesai ke penjualan |
| FR-07 | User dapat menyelesaikan Booking Stok dengan membatalkan sisa qty |
| FR-08 | User dapat memesan ulang sisa barang ke Booking Stok baru sekaligus menutup booking lama |
| FR-09 | User dapat menghapus Booking Stok draft dan mencetak Booking Stok final |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat daftar Booking Stok |
| UC-02 | Memfilter daftar Booking Stok |
| UC-03 | Membuat Booking Stok |
| UC-04 | Mengubah Booking Stok draft |
| UC-05 | Meneruskan Booking Stok ke penjualan |
| UC-06 | Menyelesaikan Booking Stok |
| UC-07 | Memesan ulang sisa barang dan menutup Booking Stok |
| UC-08 | Menghapus Booking Stok draft |
| UC-09 | Mencetak Booking Stok |
4. Use Case Scenario
UC-01 : Melihat daftar Booking Stok
| Aktor | User dengan hak lihat Booking Stok |
| Deskripsi | User melihat daftar Booking Stok |
| Prekondisi | User sudah login Brand aktif |
| Alur utama | 1. User membuka menu Booking Stok. 2. Sistem menampilkan daftar Booking Stok (tanggal, nomor, customer, cabang, status). 3. User dapat membuka detail dari baris daftar. |
| Alur negatif | - Jika tidak ada data, tampil daftar kosong. - Jika gagal memuat, muncul pesan error. |
| Bisnis rule | - Status: draft = belum final; belum selesai = final masih punya sisa qty; selesai = final sudah ditutup. - Daftar tidak menampilkan kolom sales. |
| Postkondisi | Daftar Booking Stok tampil |
| Trigger | User membuka menu Booking Stok |
| Kode FR | FR-01 |
UC-02 : Memfilter daftar Booking Stok
| Aktor | User dengan hak lihat Booking Stok |
| Deskripsi | User menyaring daftar Booking Stok |
| Prekondisi | Halaman daftar terbuka |
| Alur utama | 1. User mencari nomor dokumen atau membuka Filter. 2. User memilih tanggal, customer, cabang, dan/atau status. 3. Sistem memuat ulang daftar. |
| Alur negatif | - Jika tidak ada data cocok, tampil daftar kosong. |
| Bisnis rule | - Filter tidak memakai sales. |
| Postkondisi | Daftar tampil sesuai filter |
| Trigger | User mengubah filter |
| Kode FR | FR-02 |
UC-03 : Membuat Booking Stok
| Aktor | User dengan hak tambah Booking Stok |
| Deskripsi | User mencatat reservasi stok untuk customer |
| Prekondisi | User sudah login Hak tambah Booking Stok |
| Alur utama | 1. User klik Tambah. 2. User mengisi tanggal, customer, dan cabang (tanpa sales). 3. User menambah baris barang (barang, satuan, qty, harga bila dipakai, keterangan). 4. User klik Simpan Draft atau Simpan Final, lalu konfirmasi untuk final. 5. Sistem membuat Booking Stok berstatus belum selesai. 6. Jika final, sistem mereservasi stok sesuai qty baris. |
| Alur negatif | - Jika form / rincian belum valid, simpan ditolak dan muncul pesan lengkapi data. - Jika stok tidak cukup saat final, booking ditolak. - Jika gagal menyimpan, muncul pesan error. |
| Bisnis rule | - Tidak ada field sales. - Tidak ada metode pembayaran di Booking Stok. - Draft belum mereservasi stok; final mereservasi stok. - Sisa qty awal tiap baris = qty booking. |
| Postkondisi | Booking Stok tersimpan sebagai draft atau final |
| Trigger | User klik Simpan |
| Kode FR | FR-03 FR-05 |
UC-04 : Mengubah Booking Stok draft
| Aktor | User dengan hak tambah Booking Stok |
| Deskripsi | User memperbarui Booking Stok yang masih draft |
| Prekondisi | Booking Stok berstatus draft |
| Alur utama | 1. User memilih Edit. 2. Sistem memuat header dan baris. 3. User mengubah data lalu menyimpan draft atau final. 4. Jika final, sistem mereservasi stok. |
| Alur negatif | - Validasi sama seperti pembuatan. - Edit tidak tersedia untuk dokumen final. |
| Bisnis rule | - Edit hanya untuk draft. - Tetap tanpa field sales. |
| Postkondisi | Booking Stok terbarui |
| Trigger | User klik Edit lalu Simpan |
| Kode FR | FR-04 FR-05 |
UC-05 : Meneruskan Booking Stok ke penjualan
| Aktor | User dengan hak tambah penjualan |
| Deskripsi | User membuat invoice penjualan dari Booking Stok final |
| Prekondisi | Booking Stok final berstatus belum selesai |
| Alur utama | 1. User memilih buat penjualan atas Booking Stok. 2. Sistem membuka form penjualan dengan data booking terisi (customer, cabang, barang, sisa qty). 3. User melengkapi penjualan (termasuk sales bila diperlukan di penjualan) lalu menyimpan. 4. Sistem mengurangi sisa qty booking sesuai qty yang dijual dan melepas / memotong reservasi terkait. |
| Alur negatif | - Menu tidak tampil untuk draft atau booking selesai. - Jika sisa qty tidak cukup, penjualan ditolak. |
| Bisnis rule | - Sales diisi di penjualan bila perlu, bukan di Booking Stok. - Pembayaran dipilih di penjualan, bukan di booking. |
| Postkondisi | Form / invoice penjualan dari booking terbentuk; sisa booking terbarui |
| Trigger | User klik buat penjualan atas Booking Stok |
| Kode FR | FR-06 |
UC-06 : Menyelesaikan Booking Stok
| Aktor | User dengan hak tambah Booking Stok |
| Deskripsi | User menutup booking dan membatalkan sisa qty yang belum terpenuhi |
| Prekondisi | Booking Stok final berstatus belum selesai |
| Alur utama | 1. User memilih Selesaikan Booking Stok. 2. Sistem meminta konfirmasi. 3. User mengonfirmasi. 4. Sistem mengubah status menjadi selesai, mencatat sisa qty sebagai dibatalkan, dan melepas reservasi sisa. |
| Alur negatif | - Jika gagal, status tidak berubah dan muncul pesan error. |
| Bisnis rule | - Sisa qty tiap baris dicatat sebagai qty dibatalkan. - Reservasi sisa dilepas. |
| Postkondisi | Booking Stok berstatus selesai |
| Trigger | User klik Selesaikan |
| Kode FR | FR-07 |
UC-07 : Memesan ulang sisa barang dan menutup Booking Stok
| Aktor | User dengan hak tambah Booking Stok |
| Deskripsi | User memindahkan sisa barang booking lama ke Booking Stok baru |
| Prekondisi | Booking final berstatus belum selesai dengan sisa qty |
| Alur utama | 1. User memilih Pesan Ulang & Tutup. 2. Sistem menampilkan baris beserta sisa qty. 3. User memilih barang yang dipesan ulang. 4. Sistem membuka form Booking Stok baru dengan barang terpilih (tanpa sales). 5. User menyimpan booking baru. 6. Sistem membuat booking baru dan menutup / menyesuaikan booking lama. |
| Alur negatif | - Jika gagal memuat booking lama, proses dihentikan. - Jika simpan gagal, booking baru tidak terbentuk. |
| Bisnis rule | - Tetap tanpa field sales pada booking baru. - Sisa yang dipesan ulang dicatat dibatalkan / dipindah dari booking lama sesuai aturan back order. |
| Postkondisi | Booking baru tersimpan; booking lama tertutup untuk barang terpilih |
| Trigger | User klik Pesan Ulang & Tutup |
| Kode FR | FR-08 |
UC-08 : Menghapus Booking Stok draft
| Aktor | User dengan hak hapus draft Booking Stok |
| Deskripsi | User menghapus Booking Stok draft |
| Prekondisi | Booking Stok berstatus draft |
| Alur utama | 1. User memilih Hapus. 2. Sistem meminta konfirmasi. 3. User mengonfirmasi. 4. Sistem menghapus booking. |
| Alur negatif | - Jika gagal, muncul pesan error. |
| Bisnis rule | - Hapus hanya untuk draft (belum ada reservasi stok final). |
| Postkondisi | Booking Stok terhapus |
| Trigger | User klik Hapus |
| Kode FR | FR-09 |
UC-09 : Mencetak Booking Stok
| Aktor | User dengan hak cetak Booking Stok |
| Deskripsi | User mencetak dokumen Booking Stok |
| Prekondisi | Booking Stok berstatus final |
| Alur utama | 1. User memilih Cetak. 2. Sistem menampilkan dokumen cetak Booking Stok. |
| Alur negatif | - Jika gagal memuat detail, cetak tidak tampil. |
| Bisnis rule | - Cetakan tidak menampilkan sales. |
| Postkondisi | Dokumen Booking Stok tercetak / siap cetak |
| Trigger | User klik Cetak |
| Kode FR | FR-09 |
5. Data Flow Diagram
DFD-01 — Booking Stok mirip SO tanpa sales
6. Sequence Diagram
SD-01 — UC-01 : Melihat daftar Booking Stok
SD-02 — UC-02 : Memfilter daftar Booking Stok
SD-03 — UC-03 : Membuat Booking Stok
SD-04 — UC-04 : Mengubah Booking Stok draft
SD-05 — UC-05 : Meneruskan Booking Stok ke penjualan
SD-06 — UC-06 : Menyelesaikan Booking Stok
SD-07 — UC-07 : Memesan ulang sisa barang dan menutup Booking Stok
SD-08 — UC-08 : Menghapus Booking Stok draft
SD-09 — UC-09 : Mencetak Booking Stok
7. Table Schema
| Table | Field | Status | Deskripsi |
|---|---|---|---|
Invoice_Booking_Stok (header) | customer_id, gudang_id, tanggal, is_tercetak, status, … | new | Header booking; tanpa sales_id |
Booking_Stoks (baris) | barang_id, sku_id, satuan_id, quantity, qty_sisa, qty_terpenuhi, qty_cancelled, … | new | Rincian qty booking dan sisa |
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /invoice-booking-stok | new | List + filter Booking Stok |
GET /invoice-booking-stok/:id | new | Detail header + baris |
POST /invoice-booking-stok | new | Create draft/final; final → reservasi stok; tanpa sales_id |
PUT /invoice-booking-stok/:id | new | Update draft, selesaikan, back order |
DELETE /invoice-booking-stok/:id | new | Hapus draft |
POST /penjualan | changed | Terima referensi booking (invoice_booking_id) dan kurangi sisa / reservasi |