Add a screen to set prices per branch
Branch price overrides were already applied at the till, in cash sales and in M-Pesa, but nothing could set them. - Products -> Branch prices (/admin/prices): pick a branch and set its price for any product; setting it back to the default removes the override, and "Use default" resets it. Branch managers see their own branch's prices read-only. - /api/branch-prices: GET (owner: any branch; manager: own), PUT and DELETE (owner only). Branch and product must belong to the business; prices must be above zero; who changed a price is recorded. - Branch pricing is a plan feature, as the Growth plan already advertised: Growth and Enterprise, plus any business on its free trial. A paid Starter business keeps any prices set during its trial and can reset them, but cannot set new ones. - The catalogue view on the Products page always shows default prices; the till's view shows what the branch charges. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+17
-3
@@ -76,7 +76,7 @@ the decisions taken along the way, and what is still open.
|
||||
sales from the old version are sent on the next sync.
|
||||
|
||||
## Testing
|
||||
- `npm test` runs 50 API tests against an in-memory MongoDB, covering role
|
||||
- `npm test` runs 56 API tests against an in-memory MongoDB, covering role
|
||||
enforcement, tenant isolation for sales, stock and transfers, suspension,
|
||||
the sync protocol (including a 120-sale backlog replayed twice), and the
|
||||
business day.
|
||||
@@ -115,9 +115,23 @@ and checks every balance and total it predicts.
|
||||
2. ZERRO is trialling, so it can now add Branch B without a plan change.
|
||||
3. Create the manager and cashier logins with invite links from Staff.
|
||||
|
||||
## Branch prices
|
||||
|
||||
Owners set a different price per branch on **Products -> Branch prices**
|
||||
(`/admin/prices`, API `/api/branch-prices`). Setting a price back to the
|
||||
default removes the override. Branch managers see their own branch's
|
||||
prices read-only.
|
||||
|
||||
- It is a Growth/Enterprise feature (as the plan list already advertised),
|
||||
also available during the free trial. After a trial on Starter, existing
|
||||
branch prices keep applying and can be reset, but not changed.
|
||||
- The till, cash sales and M-Pesa all read the branch price. A phone picks
|
||||
up a change the next time it loads products; a sale it records offline in
|
||||
the meantime is kept at the server's price and flagged as a price
|
||||
mismatch.
|
||||
- The Products page always shows default prices.
|
||||
|
||||
## Still open
|
||||
- **Setting branch prices.** Branch price overrides are applied everywhere,
|
||||
but there is no screen or API to set them yet.
|
||||
- **Global email and phone uniqueness.** One person cannot work for two
|
||||
businesses, and signup reveals whether an address is already registered.
|
||||
- **Isolation by convention.** Tenant filters are still written per route.
|
||||
|
||||
Reference in New Issue
Block a user