01
Collection Flow
Pass complete invoice context into the staff delivery screen.
The staff collection flow cannot be trusted if the screen only receives invoiceId. It must always receive invoiceId, retailerId, retailerName, and amountDue.
- Ensure collection submission uses full invoice payload.
- Support both
CASH and UPI.
- Prevent partial navigation state from breaking collection entry.
02
Daily Summary
Show only today's operational numbers.
Daily summary should use proper timestamp filtering for the current day, not all-time aggregates.
- Today's collections only
- Today's invoices only
- Today's pending credit only
03
Ledger Correctness
Remove placeholder arithmetic and rely only on real transactions.
Ledger state must be immutable and transaction-driven. Placeholder logic such as returns = quantity * 100 creates false balances and destroys trust.
- Use real debit / credit entries only
- Maintain immutable ledger event history
- No frontend-computed fake adjustments
04
State Consistency
Track fulfillment and payment states on invoices, not orders.
Orders should stop at order creation and invoice generation. Delivery and payment lifecycle belongs to invoices.
UNASSIGNED
ASSIGNED
DELIVERED
PARTIAL
PAID
05
Simplify Unused Complexity
Keep optional systems optional.
Inventory, CSV import, and logistics partner management should not slow the core operator path if they are not required for daily distributor usage.
- Keep inventory optional
- Hide or de-emphasize unused logistics flows
- Keep CSV import available but not central