Starter packages — precomputed sellable qty
Brand: am.co.za / AM.CO.ZA. Generated 2026-09-07 03:02 SAST. Stock stamp: {'refreshed_sast': '2026-09-05 22:25 SAST', 'files': {'johannesburg': {'sku_count': 1928, 'last_modified': 'Sat, 05 Sep 2026 20:16:36 GMT'}, 'cape-town': {'sku_count': 350, 'last_modified': 'Sat, 05 Sep 2026 20:13:40 GMT'}, 'durban': {'sku_count': 217, 'last_modified': 'Sat, 05 Sep 2026 20:19:29 GMT'}}}.
Joined from am.im product JSON stock.ordered/compulsory + stock/latest.json Available.
Rules: stock/HOW-TO.md. Machine JSON: packages-available.json.
Not prices. Do not invent restock days. Catalog questions ≠ this stock path — use category packs for machine lists.
| SKU | JHB | CT | DBN | Total | Limiting (JHB) | Notes |
|---|---|---|---|---|---|---|
H-DTF/A3/XP600 |
0 | 0 | 0 | 0 | H-DTF/OVEN/A3 |
limit H-DTF/OVEN/A3 {"incomplete":1,"demo":2} |
H-DTF/A3P/XP600 |
1 | 0 | 0 | 1 | EPSON-XP600/SEALED |
— |
H-DTF/A3S/XP600 |
0 | 0 | 0 | 0 | H-DTF/OVEN/A3 |
limit H-DTF/OVEN/A3 {"incomplete":1,"demo":2} |
H-DTF/A3T/XP600 |
0 | 0 | 0 | 0 | H-DTF/OVEN/A3 |
limit H-DTF/OVEN/A3 {"incomplete":1,"demo":2} |
H-DTF/300/XP600 |
0 | 0 | 0 | 0 | F-DTF/300 |
limit F-DTF/300 {"demo":1} |
H-DTF/303/XP600 |
0 | 0 | 0 | 0 | F-DTF/300 |
limit F-DTF/300 {"demo":1} |
H-DTF/306/XP600 |
0 | 0 | 0 | 0 | F-DTF/300 |
limit F-DTF/300 {"demo":1} |
H-DTF/601/XP600 |
0 | 0 | 0 | 0 | H-DTF/POWDER/600 |
limit H-DTF/POWDER/600 {"demo":1} |
H-DTF/606/XP600 |
0 | 0 | 0 | 0 | H-DTF/POWDER/600 |
limit H-DTF/POWDER/600 {"demo":1} |
F-UVDTF/300 |
28 | 2 | 2 | 32 | F-UVDTF/300 |
— |
F-UVDTF/303/XP600 |
0 | 2 | 2 | 4 | EPSON-XP600/SEALED |
— |
F-UVDTF/306/XP600 |
0 | 2 | 2 | 4 | EPSON-XP600/SEALED |
— |
F-UVDTF/600 |
17 | 0 | 1 | 18 | F-UVDTF/600 |
— |
F-UVDTF/603/XP600 |
0 | 0 | 0 | 0 | EPSON-XP600/SEALED |
limit EPSON-XP600/SEALED {"demo":22} |
V4-H720 |
5 | 5 | 0 | 10 | V4-H720 |
— |
V4-H727 |
5 | 5 | 0 | 10 | V4-H720 |
— |
V4-S720 |
0 | 3 | 0 | 3 | V4-S720 |
— |
V4-S727 |
0 | 3 | 0 | 3 | V4-S720 |
— |
V4-B720 |
16 | 2 | 2 | 20 | V4-B720 |
— |
H-PRESS/4050 |
76 | 0 | 1 | 77 | H-PRESS/4050 |
— |
H-PRESS/2938 |
206 | 10 | 3 | 219 | H-PRESS/2938 |
— |
H-PRESS/MT5 |
40 | 4 | 0 | 44 | H-PRESS/MT5 |
— |
H-PRESS/MT8 |
64 | 0 | 0 | 64 | H-PRESS/MT8 |
— |
H-HOBBY/M5 |
138 | 1 | 1 | 140 | H-HOBBY/M5 |
— |
H-PRESS/4060D |
76 | 1 | 3 | 80 | H-PRESS/4060D |
— |
H-PRESS/MUG320 |
814 | 10 | 0 | 824 | H-PRESS/MUG320 |
— |
How combo qty is computed
- Read
https://am.im/product/{slug}.json(slug= SKU lowercased, non-letters → dash). - For each compulsory part that is managed physical and not a high-Spillrank rider:
floor(Available_at_branch / compulsory). - Package sellable at branch = min of those floors.
- Virtual/unmanaged (training codes, InkRIP, VinylCut, FlexiPRINT, T-BASIC/PE) are skipped.
AM-WIPE/5(Spillrank 254) never blocks a package.- If total Available = 0, read
status.jsonfor InTransit / InComplete / Demo.
Limiting parts when sellable Total = 0 (data)
Per HOW-TO the min() is honest. HELPING also says a missing required part does not hard-kill the conversation — say majority may be here / Demo / Incomplete; do not invent days.
| Package | Limiting (JHB) | Limiting Available JHB | Limiting status |
|---|---|---|---|
H-DTF/A3/XP600 |
H-DTF/OVEN/A3 |
0 | {"incomplete":1,"demo":2} |
H-DTF/A3S/XP600 |
H-DTF/OVEN/A3 |
0 | {"incomplete":1,"demo":2} |
H-DTF/A3T/XP600 |
H-DTF/OVEN/A3 |
0 | {"incomplete":1,"demo":2} |
H-DTF/300/XP600 |
F-DTF/300 |
0 | {"demo":1} |
H-DTF/303/XP600 |
F-DTF/300 |
0 | {"demo":1} |
H-DTF/306/XP600 |
F-DTF/300 |
0 | {"demo":1} |
H-DTF/601/XP600 |
H-DTF/POWDER/600 |
0 | {"demo":1} |
H-DTF/606/XP600 |
H-DTF/POWDER/600 |
0 | {"demo":1} |
F-UVDTF/603/XP600 |
EPSON-XP600/SEALED |
1 | {"demo":22} |
Navigate
- Scenario router: INDEX.md (AIs) · index.html (browsers)
- Master path: roadmap.md · roadmap.html
- KB entry: START_HERE.md