Sales & POS
Routes: /sales (hub), /sales/pos, /sales/sales, /sales/invoices,
/sales/returns.
The counter module replaces hand-written memos, wrong totals, and dues kept in somebody's head. Any counter staff can learn the POS in ten minutes — while the owner still gets invoices, returns, and a real ledger entry for every taka.
Sales hub
/sales shows four live KPI cards: total sales, POS terminal
status, pending invoices, and open returns. One glance
tells you if the counter is healthy.
POS Terminal (/sales/pos)
- Catalog search & scan — type in the search box and the catalog filters as you type. In Exact match mode, pressing Enter adds by exact SKU or barcode — ready for a cheap USB/Bluetooth barcode scanner. Product tiles show name, SKU, live stock count, and price.
- Cart — add lines; adjust quantity and a per-line
discount. A sale-level discount field covers the whole bill
(gated by the
sales:discountpermission in roles). The Hold button parks an unfinished cart — customer went to get more parts — while you serve the next one. - Customer attach (optional) — walk-in is the default; search by name or masked contact so a cashier can find someone without seeing the full phone number.
- Automatic tax — the product's category tax rate applies per line. No counter math.
- Review & Charge:
- The payment method dropdown is powered by your own Payment Accounts — cash register, bank, bKash/Nagad wallets.
- Cash mode has an "Amount received" field with quick cash buttons (exact amount and common notes) so change is never miscalculated.
- Credit mode — skip the payment method and press "Record as due". This creates an account sale : the full amount sits on the customer's balance and is settled later from the sale detail page.
- Sale complete — bill number, "Paid in full", and buttons for New Sale, Print receipt, View invoice, View sale.
Every completed sale issues an invoice, records a receipt against the chosen payment account, decrements stock, and posts a double-entry journal — the ledger updates with zero extra clicks.
Sales list (/sales/sales)
- Filter by status (Draft / Confirmed / Cancelled) and type: POS (counter), Account , or Job (parts consumed on a workshop job).
- Columns: bill no, type, date, total, due, status — dues are visible right in the list.
- Paginated (10 / 20 / 50 rows). Settle a due sale from its detail page.
Invoices (/sales/invoices)
- Statuses: Draft / Issued / Paid / Credited (credited = credit note issued).
- Sources: Sale, Job, Combined — a combined invoice merges labor
- parts on one customer bill.
- Columns: invoice no, source, customer, date, total, paid, balance, due date, status.
- Invoices print on your branded template with your QR payment cards.
Returns (/sales/returns)
- Workflow with approval: Pending → Approved / Rejected. Each return records a reason, the refund, and whether the item is restocked back into inventory.
- Returns are created against a confirmed sale from the sale detail page.
- The dashboard tracks "Open returns", and revenue is computed from sales and returns — refunds are netted honestly.
Next: Workshop Operations.
