Products
SKUs (finished goods) and their type classification.
Tables owned
| Table | Purpose |
|---|---|
org.skus | Finished-goods SKU records (code, name, type, items-per-unit, oz-per-item, QBO ID, notes, active flag). |
org.sku_types | SKU classifications. |
Operations
Writes — SKUs
createSku(conn, input)→Sku.input:{ code, name, typeId?, itemsPerUnit?, ozPerItem?, qboId?, notes? }.updateSku(conn, skuId, patch)→Sku. Partial update.setSkuActive(conn, skuId, isActive)→Sku. Archive / reactivate.deleteSku(conn, skuId)→void. Hard-delete. L3 enforces "not referenced by orders or BOMs".
Writes — SKU types
createSkuType(conn, { name })→SkuType.updateSkuType(conn, typeId, patch)→SkuType. Rename.deleteSkuType(conn, typeId)→void. L3 enforces "no SKU uses it".
Reads
listSkus(conn, filters?)→Sku[]. Filters:{ typeId?, isActive? }.getSkuById(conn, skuId)→Sku | null.getSkusByIds(conn, skuIds)→Sku[]. Batch hydration.listSkuTypes(conn)→SkuType[].getSkuTypeById(conn, typeId)→SkuType | null.isSkuTypeInUse(conn, typeId)→{ inUse: boolean, skuCount: number }. Gates deletion.