Skip to main content

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)​

  1. 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.
  2. Cart — add lines; adjust quantity and a per-line discount. A sale-level discount field covers the whole bill (gated by the sales:discount permission in roles). The Hold button parks an unfinished cart — customer went to get more parts — while you serve the next one.
  3. 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.
  4. Automatic tax — the product's category tax rate applies per line. No counter math.
  5. 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.
  6. 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.