# USE CASE: Transaksi LSM Web Portal

Alur Lengkap dari Upload Forecast sampai Generate CSV untuk QAD

Bakmi GM - PT. Sentra Inovasi Solusindo | Last Updated: 27 Januari 2026

### Overview

Tujuan: Menjelaskan alur lengkap transaksi harian di LSM mulai dari persiapan forecast sampai menghasilkan file CSV yang siap dikirim ke QAD untuk proses pengadaan barang.

Aktor yang Terlibat:

- SDP/HO Supply Distribution Planning / Head Office
- SSM Senior Store Manager
- Store Manager Manager Toko
- Staff Store Staff Toko
- PPIC Production Planning & Inventory Control

Timeline: Proses 3 hari (Persiapan → Eksekusi → Export ke QAD)

Total: 4 Fase dengan 18 Steps

1

## FASE 1: PERSIAPAN FORECAST

Minggu Sebelumnya - Persiapan Data Forecast

### Step 1: SDP/HO Download Template Forecast

SDP/HO Menu "Forecasts" → "Download Template"

#### Aksi:

1. SDP/HO login ke LSM Web Portal
2. Masuk ke menu "Master Data" → "Forecasts"
3. Klik tombol "Download Template Excel"
4. Sistem generate file Excel template dengan format:
   - Kolom: Store Code, Store Name, Item Code, Item Name, Date, Forecast Qty, UOM
   - Sheet terpisah untuk setiap store (opsional)

Output: File `Forecast_Template_2026-01.xlsx`

### Step 2: SDP/HO Isi Data Forecast

SDP/HO Microsoft Excel (offline)

#### Aksi:

1. SDP/HO buka file template yang sudah didownload
2. Export data forecast dari sistem internal/QAD
3. Isi data forecast untuk periode yang diinginkan (biasanya 1 bulan)
4. Pastikan data lengkap untuk semua store dan semua item
5. Pastikan format tanggal benar (YYYY-MM-DD)
6. Pastikan qty adalah angka positif

Store Code | Store Name | Item Code | Item Name | Date | Forecast Qty | UOM STR001 | Cabang Senayan | RM001 | Tepung Terigu | 2026-01-20 | 100 | KG STR001 | Cabang Senayan | RM001 | Tepung Terigu | 2026-01-21 | 100 | KG STR001 | Cabang Senayan | RM002 | Minyak Goreng | 2026-01-20 | 50 | LTR STR001 | Cabang Senayan | RM002 | Minyak Goreng | 2026-01-21 | 50 | LTR STR002 | Cabang Kelapa | RM001 | Tepung Terigu | 2026-01-20 | 80 | KG
Output: File `Forecast_Januari_2026.xlsx` (sudah terisi data)

### Step 3: SDP/HO Upload Forecast ke LSM

SDP/HO Menu "Forecasts" → "Upload"

#### Aksi:

1. SDP/HO kembali ke LSM Web Portal
2. Masuk ke menu "Forecasts" → "Upload Forecast"
3. Klik "Choose File" dan pilih file Excel yang sudah diisi
4. Klik "Upload"

#### Proses Sistem:

1. Sistem baca file Excel
2. Validasi format file (cek kolom wajib, format data)
3. Validasi data:
   - Store Code harus exist di master stores
   - Item Code harus exist di master raw materials
   - Date harus valid
   - Qty harus numeric dan > 0
4. Jika ada error, tampilkan list error per row
5. Jika valid, tampilkan preview data (10 baris pertama)

Output: Preview data forecast yang akan diimport

### Step 4: SDP/HO Confirm Import

SDP/HO Halaman Preview Forecast

#### Aksi:

1. SDP/HO review preview data
2. Cek apakah data sudah benar
3. Klik "Confirm Import"

#### Proses Sistem:

1. Sistem mulai import data ke database
2. Untuk setiap row: Cek apakah forecast sudah ada → Update atau Insert
3. Create forecast header dengan status "Draft"
4. Insert semua forecast details
5. Generate forecast number: `FC-STR001-2026-01-001`

Output: Forecast berhasil diimport dengan status "Draft" - Notifikasi: "Forecast berhasil diimport: 150 records"

### Step 5: SSM Review & Adjust Forecast

SSM Menu "Forecasts" → "View Forecast"

#### Aksi:

1. SSM login ke LSM
2. Masuk ke menu "Forecasts"
3. Pilih forecast yang baru diupload (status: Draft)
4. Review data forecast per store
5. Adjust forecast jika ada event khusus:
   - Promo → increase forecast 20%
   - Hari libur → decrease forecast 30%
   - Event catering → increase forecast untuk item tertentu
6. Klik "Save Changes"

Original Forecast (20 Jan): Tepung Terigu = 100 kg Event: Ada promo bakmi Adjusted Forecast: Tepung Terigu = 120 kg (+20%) Reason: "Promo bakmi 20 Jan"
Output: Forecast sudah disesuaikan, masih status "Draft"

### Step 6: SDP/HO Approve Forecast

SDP/HO Menu "Forecasts" → "Approve"

#### Aksi:

1. SDP/HO review forecast yang sudah di-adjust oleh SSM
2. Pastikan semua data sudah benar
3. Klik "Approve Forecast"

#### Proses Sistem:

1. Update status forecast dari "Draft" → "Confirmed"
2. Lock data forecast (tidak bisa diubah lagi)
3. Forecast siap digunakan untuk perhitungan SPB

Output: Forecast status "Confirmed" dan siap digunakan
2

## FASE 2: STOCK OPNAME HARIAN

Setiap Malam - Input Stok Fisik

### Step 7: Store Manager Set Target Sisa Malam (TSM)

Store Manager Menu "Target Sisa Malam"

#### Aksi:

1. Store Manager login ke LSM
2. Pilih store yang dikelola
3. Masuk ke menu "Master Data" → "Target Sisa Malam"
4. Set TSM untuk setiap item
5. Klik "Save"

Item: Tepung Terigu TSM: 15 kg Alasan: Buffer untuk operasional pagi hari Item: Minyak Goreng TSM: 10 liter Alasan: Buffer untuk breakfast menu Item: Telur TSM: 50 butir Alasan: Buffer untuk menu telur
Output: TSM tersimpan dan akan digunakan untuk perhitungan SPB

### Step 8: Staff Store Buat Stock Opname Baru

Staff Store Menu "Stock Opname" → "Create" Malam hari ~22:00

#### Aksi:

1. Staff Store login ke LSM
2. Pilih store (jika user punya akses ke multiple stores)
3. Masuk ke menu "Transactions" → "Stock Opname"
4. Klik "Create New SO"
5. Pilih tanggal SO (default: hari ini)

#### Proses Sistem:

1. Cek apakah SO untuk tanggal ini sudah ada
2. Jika sudah ada: Buka SO yang sudah ada (jika masih Draft)
3. Jika belum ada: Create SO baru
4. Auto-load semua raw materials yang aktif untuk store ini
5. Generate SO Number: `SO-STR001-20260120-001`

Output: Form SO dengan list semua items, siap untuk input

### Step 9: Staff Store Input Stok Fisik

Staff Store Form Stock Opname

#### Aksi:

Staff Store hitung stok fisik di gudang/kitchen. Untuk setiap item, input:

- Qty Utuh: Jumlah kemasan yang masih utuh/belum dibuka
- Qty Pakai: Jumlah dari kemasan yang sudah dibuka/terpakai

Item 1: Tepung Terigu Kemasan: Karton (1 karton = 10 kg) Stok Fisik: - 2 karton utuh (belum dibuka) - 1 karton sudah dibuka, sisa 5 kg Input ke Sistem: - Qty Utuh: 2 (karton) - Qty Pakai: 5 (kg) --- Item 2: Minyak Goreng Kemasan: Jerigen (1 jerigen = 5 liter) Stok Fisik: - 3 jerigen utuh - 1 jerigen sudah dibuka, sisa 2 liter Input ke Sistem: - Qty Utuh: 3 (jerigen) - Qty Pakai: 2 (liter) --- Item 3: Telur Kemasan: Tray (1 tray = 30 butir) Stok Fisik: - 5 tray utuh - 1 tray sudah dibuka, sisa 10 butir Input ke Sistem: - Qty Utuh: 5 (tray) - Qty Pakai: 10 (butir)

#### Proses Sistem (Auto-save setiap field):

1. Saat input Qty Utuh:
   - Ambil conversion factor dari master item conversions
   - Hitung: Qty Converted = Qty Utuh × Conversion Factor
   - Contoh: 2 karton × 10 kg = 20 kg
2. Saat input Qty Pakai:
   - Hitung: LSM Aktual = Qty Converted + Qty Pakai
   - Contoh: 20 kg + 5 kg = 25 kg
3. Hitung DOI (Days of Inventory):
   - Ambil forecast 7 hari ke depan (H+1 sampai H+7)
   - Hitung rata-rata forecast per hari
   - Formula: DOI = LSM Aktual / Average Forecast
   - Contoh: 25 kg / 10 kg/hari = 2.5 hari
   - Artinya: Stok cukup untuk 2.5 hari ke depan
4. Simpan ke database (auto-save)
5. Log perubahan untuk audit trail

#### Kolom Adjustment (Opsional):

Untuk item tertentu yang memiliki flag `inv_matrix_flag = 1`, tersedia kolom adjustment:

- Adj Ekstra: Adjustment untuk item ekstra (contoh: bonus dari supplier)
- Adj Restan: Adjustment untuk item restan (item yang belum diterima dari order sebelumnya)
- Adj Ringkas: Adjustment untuk item ringkas (item yang dikurangi karena rusak/expired)
- Adj Selisih: Adjustment untuk selisih stok (perbedaan antara sistem vs fisik)

Catatan: Adjustment ini akan mempengaruhi perhitungan LSM Aktual (Laporan Stok Malam Aktual)

#### Formula Lengkap:

Qty Converted = Qty Utuh × Conversion Factor
LSM Aktual = Qty Converted + Qty Pakai + Item Olahan
DOI = LSM Aktual / Average Forecast (7 hari)
Contoh Perhitungan Lengkap:
Qty Utuh: 2 karton × 10 kg = 20 kg (Qty Converted)
Qty Pakai: 5 kg
Item Olahan: 0 kg (jarang digunakan)
LSM Aktual (Ending Stock): 20 + 5 + 0 = 25 kg
Average Forecast: 10 kg/hari
DOI: 25 / 10 = 2.50 hari
Catatan Penting:
- LSM Aktual adalah Ending Stock (stok akhir malam)
- Item Olahan jarang digunakan (biasanya = 0)
- Adjustment (Ekstra/Restan/Ringkas/Selisih) TIDAK termasuk dalam LSM Aktual
- Adjustment hanya untuk tracking/audit, tidak mempengaruhi perhitungan DOI
Output: Semua items sudah terinput dengan LSM Aktual (ending stock), DOI, dan adjustment (jika ada) terhitung otomatis

### Step 10: Staff Store Submit Stock Opname

Staff Store Form Stock Opname

#### Aksi:

1. Staff Store review semua data yang sudah diinput
2. Pastikan semua item sudah diisi
3. Klik "Submit SO"

#### Proses Sistem:

1. Validasi: Semua item wajib sudah diisi
2. Update status SO dari "Draft" → "Submitted"
3. Lock data SO (tidak bisa diubah lagi)
4. Update current stock di tabel `t_current_stocks`
5. Create stock movement records

Output: SO status "Submitted", Data locked, Notifikasi: "Stock Opname berhasil disubmit"
3

## FASE 3: GENERATE SPB

Pagi Hari Berikutnya - Perhitungan Kebutuhan

### Step 11: Store Manager Generate SPB dari SO

Store Manager Menu "Stock Opname" → "Generate SPB" Pagi hari ~07:00

#### Aksi:

1. Store Manager login ke LSM
2. Masuk ke menu "Stock Opname"
3. Pilih SO yang sudah disubmit kemarin malam
4. Klik "Generate SPB"

#### Proses Sistem:

1. Cek apakah SPB Regular untuk SO ini sudah ada
2. Jika sudah ada: Tampilkan error "SPB Regular sudah dibuat"
3. Jika belum ada: Lanjut proses generate
4. Untuk setiap item di SO:
   - Ambil forecast qty untuk hari ini dari tabel forecasts
   - Ambil LSM Aktual dari SO (lsm_aktual)
   - Ambil TSM dari tabel target_sisa_malam
   - Hitung: Suggested Qty = (Forecast - LSM Aktual) + TSM
5. Create SPB header: Generate SPB Number `SPB-STR001-20260120-001`, Status: "Draft", Request Type: "Regular"
6. Create SPB details untuk setiap item dengan suggested_qty dan final_qty

#### Contoh Perhitungan:

Item: Tepung Terigu Forecast (20 Jan): 100 kg LSM Aktual (dari SO 19 Jan): 25 kg TSM: 15 kg
Suggested Qty = (100 - 25) + 15 = 90 kg
Output: SPB Draft dengan suggested qty untuk semua items

### Step 12: Store Manager Review & Adjust SPB

Store Manager Form SPB

#### Aksi:

1. Store Manager review suggested qty dari sistem
2. Cek apakah ada kebutuhan khusus (event catering, promo, stok masih banyak)
3. Input adjustment jika perlu
4. Sistem tampilkan alert jika ada variance besar (Forecast Alert, DOI Alert)
5. Klik "Save" untuk simpan adjustment

Item: Tepung Terigu Suggested Qty: 90 kg Adjustment: +10 kg Reason: "Ada order catering untuk 21 Jan" Final Qty: 100 kg
Output: SPB dengan final qty yang sudah disesuaikan

### Step 13: Store Manager Submit SPB

Store Manager Form SPB

#### Aksi:

1. Store Manager review final qty semua items
2. Pastikan semua sudah benar
3. Klik "Submit SPB"

#### Proses Sistem:

1. Validasi: Final qty tidak boleh negatif
2. Update status SPB dari "Draft" → "Submitted"
3. Generate timestamp submitted_at
4. Kirim notifikasi ke PPIC untuk approval

Output: SPB status "Submitted", Notifikasi ke PPIC

### Step 14: PPIC Approve SPB

PPIC Menu "Item Requests" → "Pending Approval"

#### Aksi:

1. PPIC login ke LSM
2. Masuk ke menu "Item Requests"
3. Filter: Status = "Submitted"
4. Review SPB yang masuk (cek final qty reasonable, cek DOI status)
5. Klik "Approve"

#### Proses Sistem:

1. Update status SPB dari "Submitted" → "Approved"
2. Generate timestamp approved_at
3. SPB siap untuk generate CSV

Output: SPB status "Approved"
4

## FASE 4: GENERATE CSV UNTUK QAD

Export Data ke Sistem ERP

### Step 15: PPIC Generate CSV dari SPB

PPIC Menu "Item Requests" → "Generate CSV"

#### Aksi:

1. PPIC pilih SPB yang sudah approved
2. Klik "Generate CSV"

#### Proses Sistem:

Langkah 1: Group Items by Tipe Dokumen

Group DO (Delivery Order): - Tepung Terigu (tipe_dokumen = 'DO') → 100 kg - Bakmi Frozen (tipe_dokumen = 'DO') → 50 kg Group PO (Purchase Order): - Sayur Segar (tipe_dokumen = 'PO') → 30 kg - Daging Ayam (tipe_dokumen = 'PO') → 20 kg Group PR (Purchase Request): - Peralatan Baru (tipe_dokumen = 'PR') → 2 pcs

Langkah 2: Generate CSV DO (Delivery Order)

Format CSV DO: Order No | Ship From | Ship To | Order Date | Due Date | Remarks | Item Number | Item Name | Qty Ordered | UoM | Transport ID | Keterangan Contoh Data: DMDG021R,101,178,2026-01-20,2026-01-21,07:00/Staff,RM001,Tepung Terigu,100,KG,INTGMS,Regular Order DMDG021R,101,178,2026-01-20,2026-01-21,07:00/Staff,FRZ5021,Bakmi Frozen,50,KG,INTGMS,Regular Order

Langkah 3: Generate CSV PO (Purchase Order)

Format CSV PO: Purchase Order | Supplier | Order Date | Due Date | Remarks | Site | Currency | Credit Terms | Line | Item Number | Item Name | Qty Ordered | UoM | Unit Cost | Taxable | Tax Class | Tax In | Keterangan Contoh Data: PRMG02YR,SUP001,2026-01-20,2026-01-21,07:00/Staff,0A111,IDR,,1,RM010,Sayur Segar,30,KG,,,,,Regular Order PRMG02YR,SUP001,2026-01-20,2026-01-21,07:00/Staff,0A111,IDR,,2,RM011,Daging Ayam,20,KG,,,,,Regular Order

Langkah 4: Generate CSV PR (Purchase Request)

Format CSV PR (jika ada): PR Number | Requester | Request Date | Item Number | Item Name | Qty Requested | UoM | Reason | Keterangan

Langkah 5: Save CSV Files

Sistem save file CSV ke folder: storage/app/exports/csv/ Nama file: - SPB-STR001-20260120-001_DO.csv - SPB-STR001-20260120-001_PO.csv - SPB-STR001-20260120-001_PR.csv (jika ada)

Langkah 6: Update SPB Status

Update field di SPB: - csv_generated_at: 2026-01-20 08:00:00 - csv_generated_by: user_id PPIC - status: tetap "Approved"
Output: File CSV DO: `SPB-STR001-20260120-001_DO.csv`, File CSV PO: `SPB-STR001-20260120-001_PO.csv`, Notifikasi: "CSV berhasil di-generate"

### Step 16: PPIC Download CSV

PPIC Menu "Item Requests" → "Download CSV"

#### Aksi:

1. PPIC klik "Download CSV"
2. Sistem tampilkan list file CSV yang tersedia:
   - SPB-STR001-20260120-001_DO.csv (2.5 KB)
   - SPB-STR001-20260120-001_PO.csv (1.8 KB)
3. PPIC download semua file CSV

Output: File CSV terdownload ke komputer PPIC

### Step 17: PPIC Upload CSV ke QAD

PPIC Sistem QAD (di luar LSM)

#### Aksi:

1. PPIC login ke sistem QAD
2. Masuk ke menu import DO/PO
3. Upload file CSV DO ke QAD
4. Upload file CSV PO ke QAD
5. QAD validasi dan proses file

#### Proses di QAD:

Untuk CSV DO:

1. QAD baca file CSV DO
2. Create Delivery Order di QAD
3. Assign ke warehouse untuk picking
4. Schedule pengiriman ke store
5. Update status: "DO Created"

Untuk CSV PO:

1. QAD baca file CSV PO
2. Create Purchase Order di QAD
3. Kirim PO ke supplier
4. Schedule penerimaan barang
5. Update status: "PO Created"

Output: DO/PO created di QAD, Proses pengadaan/pengiriman dimulai

### Step 18: PPIC Update Status di LSM

PPIC Menu "Item Requests" → "Mark as Sent"

#### Aksi:

1. PPIC kembali ke LSM
2. Pilih SPB yang CSV-nya sudah diupload ke QAD
3. Klik "Mark as Sent to QAD"

#### Proses Sistem:

1. Update status SPB: "Approved" → "Sent to QAD"
2. Update timestamp: sent_to_qad_at
3. Log activity

Output: SPB status "Sent to QAD"

### Catatan: Penerimaan Barang

Penerimaan barang TIDAK dilakukan di sistem LSM.

Setelah CSV dikirim ke QAD (Step 18), proses selanjutnya dilakukan di luar sistem LSM:

- QAD: Proses DO/PO, schedule pengiriman
- Warehouse/Supplier: Kirim barang ke store
- Store: Terima barang secara fisik (di luar sistem LSM)

Sistem LSM fokus pada: Stock Opname → Generate SPB → Export CSV ke QAD

### RINGKASAN ALUR DATA

1. FORECAST (Excel)
↓ Upload
2. FORECAST (Database LSM)
↓ Digunakan untuk hitung SPB
3. STOCK OPNAME (Input Stok Fisik)
↓ LSM Aktual (Ending Stock)
4. SPB (Perhitungan Kebutuhan)
Formula: (Forecast - LSM Aktual) + TSM = Suggested Qty
+ Adjustment = Final Qty
↓ Final Qty
5. CSV (DO/PO/PR)
Group by tipe_dokumen
Qty = Final Qty dari SPB
↓ Upload
6. QAD (ERP System)
Process DO/PO → Kirim Barang ke Store
⚠️ Catatan: Penerimaan barang dilakukan di luar sistem LSM

## CHECKLIST VALIDASI

Validasi di Setiap Step

### Upload Forecast

- ✓ Store Code exist di master
- ✓ Item Code exist di master
- ✓ Date format valid
- ✓ Qty > 0

### Stock Opname

- ✓ Tanggal SO = hari ini (tidak boleh backdate)
- ✓ Semua item sudah diisi
- ✓ Qty Utuh dan Qty Pakai valid
- ✓ Conversion factor exist

### Generate SPB

- ✓ SO sudah submitted
- ✓ Forecast exist untuk tanggal target
- ✓ TSM sudah di-set
- ✓ Belum ada SPB Regular untuk SO ini

### Generate CSV

- ✓ SPB sudah approved
- ✓ Tipe dokumen sudah di-set di master item
- ✓ Final qty > 0
- ✓ Format CSV sesuai requirement QAD

## KEY POINTS

Poin-Poin Penting yang Harus Diingat

1. Forecast adalah proyeksi, bukan target pasti
2. SO adalah stok aktual di akhir hari
3. SPB adalah kebutuhan pemesanan berdasarkan forecast dan SO
4. CSV adalah instruksi ke QAD untuk proses pengadaan
5. Final Qty di SPB adalah qty yang akan dipesan (bukan SO qty!)
6. Tipe Dokumen menentukan format CSV (DO/PO/PR)
7. Semua proses terintegrasi dari forecast sampai penerimaan barang

## CATATAN PENTING

Aturan Bisnis dan Formula Kunci

### Aturan Bisnis

- Input SO hanya boleh hari H (tidak boleh backdate)
- Edit window SO: sampai jam 11:00 H+1
- SPB Regular: 1 per SO
- SPB Tambahan: Unlimited
- CSV auto-delete setelah 7 hari

### Formula Kunci

LSM Aktual = (Qty Utuh × Conversion) + Qty Pakai
Suggested Qty = (Forecast - LSM Aktual) + TSM
Final Qty = Suggested Qty + Adjusted Qty
CSV Qty = Final Qty dari SPB

### Tipe Dokumen

- DO: Item dari warehouse internal (lead time 1-2 hari)
- PO: Item dari supplier eksternal (lead time 2-3 hari)
- PR: Item perlu approval khusus (lead time 5-7 hari)

### END OF USE CASE

Dokumen ini menjelaskan alur lengkap transaksi harian di LSM Web Portal
dari persiapan forecast sampai menghasilkan CSV untuk QAD.

LSM Web Portal - Bakmi GM | PT. Sentra Inovasi Solusindo
Last Updated: 27 Januari 2026