f865837b27
The initial test report (run before the pilot-readiness changes) raised seven findings and a retest plan. This closes the ones still open. - F-01: a business on its free trial may run 2 active branches whatever its tier, so an owner can try transfers and per-branch stock. Only active branches count towards any limit. - F-06: owners can rename branches and deactivate/reactivate them from the Branches page. A branch can only be deactivated once it holds no stock and no active staff; its history stays in every report, and it leaves every picker. - F-04: the Products page lists deactivated products under a toggle with Reactivate. Deactivating warns about stock still on hand, which stays on the Stock page so it can be transferred or counted out. - F-05: products carry a unit (L, ml, kg, g, pcs, tray, pack) instead of everything being litres. - CAT-12: product prices must be above zero and names are unique per business, ignoring case. - F-03: a reversed report period is refused by the page and the API, and the page labels which period the cards show. Report dates are Nairobi business days. - F-07: cost of goods sold is units sold x average buying price. Stock bought in the period is reported separately, with a cash surplus line, so unsold stock no longer shows as a loss. - STA-04: staff and new branch managers can be invited with a one-time, 7-day link; the person sets their own password. Managers can issue a new link for their own cashiers. - OFF-02 / POS-02: the till shows each product's stock and deducts every sale immediately, online or offline; it warns before selling more than the recorded stock, and has a Clear sale button. - npm run backfill:stock turns purchases recorded before the stock ledger into stock, so existing tenants (and the report's ZERRO fixtures) start from what they bought. tests/retest-plan.test.ts runs the report's completion and retest plan and checks every balance and total it predicts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
1.1 KiB
JSON
44 lines
1.1 KiB
JSON
{
|
|
"name": "aquaflow-web",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"build": "next build",
|
|
"start": "next start",
|
|
"lint": "next lint",
|
|
"seed": "tsx scripts/seed.ts",
|
|
"migrate:multitenant": "tsx scripts/migrate-multitenant.ts",
|
|
"test": "vitest run",
|
|
"typecheck": "tsc --noEmit",
|
|
"backfill:stock": "tsx scripts/backfill-stock-from-purchases.ts"
|
|
},
|
|
"dependencies": {
|
|
"axios": "^1.7.7",
|
|
"bcryptjs": "^2.4.3",
|
|
"date-fns": "^3.6.0",
|
|
"idb": "^8.0.0",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"mongoose": "^8.6.0",
|
|
"next": "^14.2.35",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"zod": "^3.23.8"
|
|
},
|
|
"devDependencies": {
|
|
"@types/bcryptjs": "^2.4.6",
|
|
"@types/jsonwebtoken": "^9.0.6",
|
|
"@types/node": "^20.14.9",
|
|
"@types/react": "^18.3.3",
|
|
"@types/react-dom": "^18.3.0",
|
|
"autoprefixer": "^10.4.19",
|
|
"dotenv": "^16.4.5",
|
|
"mongodb-memory-server": "^10.1.4",
|
|
"postcss": "^8.4.39",
|
|
"tailwindcss": "^3.4.4",
|
|
"tsx": "^4.19.0",
|
|
"typescript": "^5.5.3",
|
|
"vitest": "^2.1.9"
|
|
}
|
|
}
|