 ## 1. Tujuan Sistem (Intinya Apa)

Aplikasi ini dibuat untuk:

* Mencatat **stok bahan baku restoran setiap akhir hari**
* Menghitung **kebutuhan order otomatis**
* Menghasilkan **dokumen SPB / DO**
* Mengirim data ke **ERP (QAD)**

---

## 2. Aktor & Hak Akses

### 1️ Store (User Operasional)

* Input stok malam (LSM)
* Review & submit SPB
* Buat SPB tambahan

### 2️ SDP / HO

* Maintain master data
* Upload forecast
* Monitoring data

### 3️ PPIC

* Validasi SPB
* Monitoring DO
* Integrasi ERP

### 4️ Viewer (Costing, Manager, dll)

* Read-only laporan

---

## 3. Alur Sistem (High Level Flow)

```
Forecast Upload
      ↓
Input Stok Malam (LSM)
      ↓
Hitung Ending Stock & DOI
      ↓
Generate Usulan SPB
      ↓
User Review / Adjustment
      ↓
Submit SPB
      ↓
Create DO + Push ke ERP
```

---

## 4. Modul Utama yang Harus Dibangun

### A. Authentication & Authorization

* Login berbasis **UserID**
* Role-based access (Store, SDP, PPIC, Viewer)
* User hanya bisa akses **store miliknya**

---

### B. Master Data Module

Master utama:

* User
* Store
* Item
* Menu
* Jadwal Kirim
* Reason Adjustment
* Range DOI
* Holiday

---

### C. Forecast Module

* Upload forecast (Excel → DB)
* Forecast per item per store
* Digunakan sebagai **input perhitungan SPB**

---

### D. Laporan Stok Malam (LSM)

#### Input:

Per item:

* Sisa Utuh (integer)
* Sisa Pakai (decimal)

#### System Hitung:

```text
Ending Stock =
(Sisa Utuh × Konversi Pakai)
+ Sisa Pakai
+ Item Olahan (jika ada)
```

```text
DOI =
Ending Stock / Avg Forecast 7 hari ke depan
```

#### Rules:

* Input hanya **hari H**
* Auto-save
* Semua perubahan disimpan di **audit log**

---

### E. SPB (Surat Permintaan Barang)

#### Generate otomatis dari LSM:

* Hitung kebutuhan berdasarkan:

  * Ending Stock
  * Forecast
  * Jadwal kirim
  * MOQ & ROP

#### User bisa:

* Save (draft)
* Adjust qty
* Submit (data dikunci)

#### Setelah submit:

* Generate DO
* Push ke ERP (CSV / API)

---

### F. SPB Tambahan

* Dibuat terpisah
* Bisa setelah SPB regular
* Reason adjustment **mandatory**
* Alur hampir sama dengan SPB regular

---

### G. Reporting Module

Jenis laporan:

* Report LSM per store
* Summary semua store
* DOI report
* Adjusted item report

Output:

* Table web
* Export Excel

---

## 5. Business Rules Penting (Wajib Diperhatikan)

* ❗ LSM hanya bisa diinput **hari berjalan**
* ❗ Edit maksimal **H+1 jam 11:00**
* ❗ Setelah SPB submit → **tidak bisa edit**
* ❗ Adjustment wajib alasan
* ❗ Semua perubahan disimpan (audit log)

---

## 6. Teknologi (Contoh Stack – Bisa Disesuaikan)

* Backend: Laravel stable
* DB: PostgreSQL stable
* Frontend: recomended, dengan harapan responsive, cepat dan modern
* Auth: JWT / Session
* Export: Excel (CSV)
* ERP Integration: File-based / API

---

## 7. Yang Belum Final (TBD)

boleh asumsi dengan standar yang anda ketahui:
* Format numbering SPB
* Detail shipment supplier
* Detail item olahan
* Sales Type
* Integrasi ERP detail

---

## 8. Definisi Done (Supaya Satu Persepsi)

Fitur dianggap selesai jika:

* Store bisa input LSM tanpa Excel
* SPB otomatis terbentuk
* DO terkirim ke ERP
* Data bisa dimonitor HO
* Audit log tersedia
* Laporan bisa ditarik