Lewati ke konten

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'"]
  • PUT /v1/store-products/:id adalah upsert. Untuk produk yang dilacak, PUT tidak mengubah stock (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-adjust butuh delta ≠ 0 dan alasan minimal 3 huruf; hanya owner/manajer.
  • Varian: kirim parentId (produk induk) dan variantLabel. 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.

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).