KTN-15
| Field | Isi |
|---|---|
| Dokumen ID | KTN-15 |
| Deskripsi | Expired date saat barang keluar |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Pemilihan lot keluar (FIFO expired date / kustom) pada penjualan, penjualan kasir, dan mutasi gudang |
1. Ringkasan
a. In scope
- Saat barang keluar, user memilih metode pemotongan lot: FIFO expired date atau kustom
- Metode FIFO expired date memotong lot dengan
expired_datepaling baru terlebih dahulu - Metode kustom: user memilih
Barang_Masuk_Rincimana yang dipakai - Berlaku pada penjualan dan penjualan kasir
- Mutasi gudang tidak memakai pilihan FIFO; tiap baris barang yang dipilih, user wajib memilih
Barang_Masuk_Rinciterkait - Baris
Penjualansmenyimpan field yang menunjukBarang_Masuk_Rincisumber barang keluar
b. Catatan
c. Kesimpulan
- [FE] Pada penjualan dan penjualan kasir, tambah pilihan metode keluar: FIFO expired date atau kustom
- [FE] Pada metode kustom, user memilih
Barang_Masuk_Rinciper baris / pemotongan - [FE] Pada mutasi gudang, wajib pilih
Barang_Masuk_Rinciper baris (tanpa opsi FIFO) - [FE] Kirim
barang_masuk_rinci_idpada barisPenjualans/ payload mutasi - [BE] FIFO expired date: alokasi potong stok dari lot
expired_datepaling baru - [BE] Simpan tautan
barang_masuk_rinci_idpadaPenjualans - [BE] Mutasi gudang menerima
barang_masuk_rinci_idwajib per baris
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Penjualan dan penjualan kasir menyediakan pilihan metode keluar: FIFO expired date atau kustom |
| FR-02 | FIFO expired date memotong lot dengan expired_date paling baru terlebih dahulu |
| FR-03 | Metode kustom mewajibkan pemilihan Barang_Masuk_Rinci |
| FR-04 | Penjualans menyimpan field penunjuk Barang_Masuk_Rinci sumber keluar |
| FR-05 | Mutasi gudang mewajibkan pemilihan Barang_Masuk_Rinci per baris tanpa opsi FIFO |
| FR-06 | Sistem menolak keluar jika lot terpilih tidak mencukupi / tidak valid |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Mengeluarkan barang pada penjualan dengan FIFO expired date |
| UC-02 | Mengeluarkan barang pada penjualan dengan metode kustom |
| UC-03 | Mengeluarkan barang pada penjualan kasir |
| UC-04 | Mengeluarkan barang pada mutasi gudang dengan pilih lot |
4. Use Case Scenario
UC-01 : Mengeluarkan barang pada penjualan dengan FIFO expired date
| Aktor | User penjualan |
| Deskripsi | User menyimpan penjualan; sistem memotong lot berdasar FIFO expired date |
| Prekondisi | Stok lot Barang_Masuk_Rinci tersediaHak buat penjualan |
| Alur utama | 1. User membuka form penjualan dan menambah baris barang. 2. User memilih metode FIFO expired date. 3. User menyimpan penjualan. 4. Sistem mengalokasikan potong stok dari lot dengan expired_date paling baru terlebih dahulu.5. Sistem menyimpan barang_masuk_rinci_id pada baris Penjualans (pecah baris bila lebih dari satu lot). |
| Alur negatif | - Jika stok lot tidak mencukupi, simpan ditolak. - Jika tidak ada lot valid, muncul pesan error. |
| Bisnis rule | - Urutan potong: expired_date paling baru dulu.- Setiap potongan lot tercatat lewat barang_masuk_rinci_id di Penjualans. |
| Postkondisi | Penjualan tersimpan; stok lot terpotong; tautan lot tercatat |
| Trigger | User simpan penjualan dengan metode FIFO expired date |
| Kode FR | FR-01 FR-02 FR-04 FR-06 |
UC-02 : Mengeluarkan barang pada penjualan dengan metode kustom
| Aktor | User penjualan |
| Deskripsi | User memilih sendiri lot Barang_Masuk_Rinci yang akan dipotong |
| Prekondisi | Lot tersedia untuk SKU / gudang terkait |
| Alur utama | 1. User menambah baris penjualan. 2. User memilih metode kustom. 3. User memilih Barang_Masuk_Rinci untuk baris tersebut.4. User menyimpan penjualan. 5. Sistem memotong lot terpilih dan menyimpan barang_masuk_rinci_id di Penjualans. |
| Alur negatif | - Jika user belum memilih lot, simpan ditolak. - Jika qty melebihi sisa lot, simpan ditolak. |
| Bisnis rule | - Satu baris penjualan menunjuk lot yang dipilih user. - Jika perlu lebih dari satu lot, user / sistem memecah baris per lot. |
| Postkondisi | Penjualan tersimpan dengan lot kustom |
| Trigger | User simpan penjualan metode kustom |
| Kode FR | FR-01 FR-03 FR-04 FR-06 |
UC-03 : Mengeluarkan barang pada penjualan kasir
| Aktor | Kasir |
| Deskripsi | Penjualan kasir memakai metode FIFO expired date atau kustom sama seperti penjualan |
| Prekondisi | Mode kasir aktif Stok tersedia |
| Alur utama | 1. Kasir menambah barang di penjualan kasir. 2. Kasir / sistem memakai metode keluar FIFO expired date atau kustom. 3. Kasir menyelesaikan pembayaran / simpan. 4. Sistem memotong lot sesuai metode dan menyimpan barang_masuk_rinci_id di Penjualans. |
| Alur negatif | - Stok tidak cukup → transaksi ditolak. - Metode kustom tanpa lot → ditolak. |
| Bisnis rule | - Aturan FIFO / kustom sama dengan penjualan biasa. - Field tautan lot tetap di Penjualans. |
| Postkondisi | Penjualan kasir tersimpan dengan tautan lot |
| Trigger | Kasir menyelesaikan transaksi |
| Kode FR | FR-01 FR-02 FR-03 FR-04 FR-06 |
UC-04 : Mengeluarkan barang pada mutasi gudang dengan pilih lot
| Aktor | User gudang |
| Deskripsi | Pada mutasi gudang, user wajib memilih Barang_Masuk_Rinci per baris barang |
| Prekondisi | Gudang asal punya lot Hak buat mutasi gudang |
| Alur utama | 1. User membuka form mutasi gudang. 2. User menambah baris barang. 3. Untuk tiap baris, user memilih Barang_Masuk_Rinci sumber.4. User menyimpan mutasi. 5. Sistem memotong lot terpilih di gudang asal. |
| Alur negatif | - Jika ada baris tanpa pilihan lot, simpan ditolak. - Jika sisa lot tidak cukup, simpan ditolak. |
| Bisnis rule | - Mutasi gudang tidak memakai opsi FIFO expired date. - Pemilihan lot wajib per baris. |
| Postkondisi | Mutasi tersimpan; lot asal terpotong sesuai pilihan |
| Trigger | User simpan mutasi gudang |
| Kode FR | FR-05 FR-06 |
5. Data Flow Diagram
DFD-01 — Expired date saat barang keluar
6. Sequence Diagram
SD-01 — UC-01 : Mengeluarkan barang pada penjualan dengan FIFO expired date
SD-02 — UC-02 : Mengeluarkan barang pada penjualan dengan metode kustom
SD-03 — UC-03 : Mengeluarkan barang pada penjualan kasir
SD-04 — UC-04 : Mengeluarkan barang pada mutasi gudang dengan pilih lot
7. Table Schema
| Table | Field | Status | Deskripsi |
|---|---|---|---|
Penjualans | barang_masuk_rinci_id | new | Menunjuk lot Barang_Masuk_Rinci yang dipotong untuk baris penjualan |
Mutasi_Gudangs / baris mutasi | barang_masuk_rinci_id | new | Lot sumber wajib dipilih user per baris mutasi |
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
POST /penjualan | changed | Terima metode_keluar + barang_masuk_rinci_id; FIFO expired date alokasi lot expired_date paling baru |
POST /invoice-penjualan | changed | Sama untuk penjualan kasir |
POST /mutasi-gudang | changed | Wajib barang_masuk_rinci_id per baris; tanpa FIFO |
GET /barang-masuk | existing | Sumber daftar lot + expired_date + sisa qty |