Produk, stok, varian
Tab Produk untuk kasir, dan modul Produk & stok di backoffice untuk owner/manajer.
flowchart TD
A["Tambah / ubah produk"] --> B["PUT /v1/store-products/:id"]
B --> C{"Lacak stok?"}
C -- "tidak" --> D["Stok tidak berubah saat jual"]
C -- "ya" --> E["Stok awal = movement 'initial'"]
E --> F["Jual: stok turun, movement 'sale'"]
F --> G["Void: stok naik, movement 'void'"]
F --> H{"Stok <= ambang?"}
H -- "ya" --> I["Muncul di Stok menipis<br/>GET /v1/store-products/low-stock"]
G --> J["Penyesuaian manual"]
I --> J
J["stock-adjust: delta + alasan<br/>(owner/manajer)"] --> E2["Movement 'adjustment'"]
Aturan
Section titled “Aturan”PUT /v1/store-products/:idadalah upsert. Untuk produk yang dilacak,PUTtidak mengubahstock(hanya penjualan, void, dan penyesuaian yang mengubahnya).- Penjualan tidak diblokir saat stok 0; stok boleh negatif agar kasir tidak terhambat hitungan yang meleset.
POST /v1/store-products/:id/stock-adjustbutuhdelta≠ 0 dan alasan minimal 3 huruf; hanya owner/manajer.- Varian: kirim
parentId(produk induk) danvariantLabel. Induk tidak boleh punya induk. - Kategori adalah teks bebas; filter dengan
GET /v1/store-products?category=.... - Riwayat pergerakan:
GET /v1/store-products/:id/stock-movements.
Pencocokan ke katalog
Section titled “Pencocokan ke katalog”Tombol Cocokkan di tab Produk memanggil POST /v1/matches/products lalu POST /v1/mappings untuk menautkan produk toko ke produk katalog bersama (per tenant, tidak mengubah katalog).