feat(ADM-018): completed feature
This commit is contained in:
39
work/artifacts/F-017/documenter.md
Normal file
39
work/artifacts/F-017/documenter.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Documenter — F-017 Pricing module
|
||||
|
||||
## Summary
|
||||
Documented F-017 pricing behavior in this evidence artifact. Project README updates are not applied during document stage because the active repository guard restricts `project/` product edits to build/implementer state.
|
||||
|
||||
## Public API notes
|
||||
|
||||
Pricing owns server-side price and VAT truth for product variants. Callers provide variant identity and quantity only; client-supplied prices, tax amounts, discounts, subtotals, or totals are not trusted.
|
||||
|
||||
| Route | Access | Result |
|
||||
| --------------------------------- | ---------- | ------------------------------------------- |
|
||||
| GET /pricing/variants/:variantId | public | `200` current server-side variant price |
|
||||
| PUT /pricing/variants/:variantId | admin only | `200` updated price and history row written |
|
||||
| POST /pricing/calculate | public | `200` calculated net subtotal, VAT and total |
|
||||
|
||||
## Error codes
|
||||
- `PRICING_PRICE_NOT_FOUND` — HTTP 404
|
||||
- `INVALID_PRICE` — HTTP 422
|
||||
|
||||
## Money and VAT rules
|
||||
- Money is represented as integer cents only.
|
||||
- Currency is fixed to `EUR`.
|
||||
- Stored price is `netUnitAmountCents` before VAT.
|
||||
- VAT rates:
|
||||
- `general` = 21% (`2100` basis points)
|
||||
- `reduced` = 10% (`1000` basis points)
|
||||
- Calculation: `netSubtotal = netUnitAmountCents * quantity`; `vatAmount = round(netSubtotal * vatBps / 10000)`; `total = netSubtotal + vatAmount`.
|
||||
|
||||
## Audit/history
|
||||
- Current price lives in `pricing_variant_prices`.
|
||||
- Every create/update writes an append-only row to `pricing_price_history` with previous and new values.
|
||||
- Variant ids are opaque UUIDs; pricing does not import catalog internals or join catalog tables.
|
||||
|
||||
## Evidence
|
||||
- `work/artifacts/F-017/architect.md`
|
||||
- `work/artifacts/F-017/implementer.md`
|
||||
- `work/artifacts/F-017/reviewer.json`
|
||||
- `work/artifacts/F-017/security.json`
|
||||
- `work/artifacts/F-017/qa.json`
|
||||
Reference in New Issue
Block a user