Added support for discounts in the POS checkout process, allowing operators to apply either a fixed amount or a percentage off the gross total. Updated the state management to include discount details and modified the receipt and cart rendering to display pre- and post-discount values. Enhanced the checkout API to handle discount inputs and ensure proper calculations. Updated relevant tests to cover new discount logic. |
||
|---|---|---|
| .. | ||
| approver-supervisor.md | ||
| collection-driver.md | ||
| order-operator.md | ||
| quote-operator.md | ||
| README.md | ||
WFDASH Standard Operating Procedures (SOPs)
These documents define the what, how, and how-measured for every operator role in the Westcott Fasteners business. Each role has its own SOP file covering:
- Daily / Weekly Checklist — concrete actions with cadence
- Step-by-Step Procedures — how to do each recurring task
- Decision Tree — what to do when X happens
- KPIs — the scorecard, with how each metric is measured
The source of truth is the markdown in this folder. The WFDASH app
renders them at /sops for in-app reference.
Roles
| Role | File | What they own |
|---|---|---|
| Quote Operator | quote-operator.md |
Sprint queue, line-item pricing, sending quotes, follow-ups |
| Order Operator | order-operator.md |
Order lifecycle, purchase orders, delivery, invoicing handoff |
| Collection Driver | collection-driver.md |
Mobile app, supplier pickups, deliveries, surplus/shorts |
| Approver / Supervisor | approver-supervisor.md |
Approvals queue, pricing policy, escalations, dashboards |
How to read these
- Each SOP is role-scoped. Don't read another role's SOP unless you're cross-training. They overlap on shared handoffs — those overlaps are intentional and called out in the relevant procedures.
- The Daily Checklist is the minimum bar. If you only have 10 minutes, do the checklist.
- The Decision Tree is a fallback. When you encounter the situation and you don't know what to do, find the branch. The tree is not exhaustive — when in doubt, escalate (see each role's escalation path).
- KPIs are not aspirational. They are how your performance is measured in the weekly review. If a KPI is unclear, raise it — don't ignore it.
How to suggest changes
- Open a PR against the relevant file.
- PR title:
sop(<role>): <change>(e.g.sop(quote-operator): add partial-approval procedure). - Tag the approver / supervisor in the review.
- After merge, the
/sopspage in the app updates on the next deploy.
If you can't write the change yourself, drop the suggestion in
#sop-feedback and someone will turn it into a PR.
Conventions used in these documents
- Routes are written as
/path/to/page(e.g./sprint,/orders/123). - Buttons / actions are in bold (e.g. Claim).
- Status values are in
code(e.g.approval_pending,collection_pool). - Collection / field names are in
code(e.g.order_items.item_status). - SLA times are in working days (Mon–Fri, SAST). Weekends don't
count. The
isOlderThanWorkingDays()helper in the dashboard uses the same convention. - Currency is ZAR (excl. VAT) unless otherwise noted.
When a section is missing or wrong
These SOPs are derived from APP_CAPABILITIES.md, the
item_status lifecycle, the quote/order state machines, and the
order-workflow-rules. If the system has changed and the SOP hasn't:
- It's a doc bug. File a PR or ping the supervisor.
- The SOP is not authoritative over the system. The system is authoritative. If they disagree, follow the system and fix the SOP.