Owner
Every module, including users and financial statements.

How it works
These are the flows in the live demo — not a slide. Quotes do not consume stock. QC-hold cannot ship. A down GSP blocks the consignment.

Discrete production
The shop floor does not put finished goods into stock because a button turned green. Receipt waits on a QC pass. A second receipt is a no-op — stock is not doubled.
Quotes do not consume stock or drive MRP. Only confirmed (and later) orders count as demand.
Gross/net suggestions to purchase, produce or subcontract. The run never creates a PO or work order — you raise those from the other screens.
Planned → queued → in progress → QC. Issue raw material against the BOM separately from receipt.
Only a pass unlocks receive-to-stock. Fail or rework leaves FG out of unrestricted inventory.

Procure-to-pay
Purchases post to purchases, not COGS. Quality-controlled receipts sit on QC-hold and cannot dispatch until incoming inspection passes.
Draft, then submit. GRN is blocked until the PO is submitted. Over-receipt is rejected unless the PO says otherwise.
Stock in at weighted-average cost. Optional lot, expiry and bin. Landed cost (freight, duty) allocates so paise sum exactly.
Quality-controlled qty stays on hold. Pass moves hold → unrestricted with sourced movements that net to zero at the facility. Fail stays on hold; you can open an NCR.
AP invoice and AP payment. Duplicate payment reference is rejected. Finance posts AP; sales & ops run vendors, PO and GRN.

Dispatch & e-way
Confirm is the legal step. If the GSP is down, the shipment stays blocked. An e-way bill number is never typed in to keep the UI green.
Available qty excludes QC-hold, scrap, job-worker locations and expired process lots. Quantity cannot exceed remaining-to-dispatch.
Lines for different customers become separate dispatches. Confirm posts stock out and can raise the GST tax invoice — one per consignee, idempotent.
Required when consignment value crosses intra- vs inter-state rules. Status blocked means do not ship.
The planner stitches confirmed dispatches onto one vehicle. Stops without a geo pin are listed, not dropped silently.

AR, cash, portal
The original invoice rows are never edited. Cash, UPI, bank or the customer portal all post as new sourced journals. We never store a card or UPI credential.
HSN, place of supply, CGST/SGST or IGST. Gap-free numbers per GSTIN × financial year. Dispatch confirm can raise the same invoice.
Amount in exact rupees, mode, optional UTR. Outstanding becomes partial or paid. Duplicate gateway references must not double-post.
Each is a new document and a new journal. Cancel posts a reversing entry. The original is append-only.
The token is the only access control — one customer’s invoices. Pay goes through the gateway. Stubs never capture a fake payment id.
Personas
Every module, including users and financial statements.
Invoices, payments, cash, e-way, GSTR-1, IRN, statements, AP. Not production, inventory, or dispatch.
Orders, stock, production, job-work, quality, MRP, dispatch, procurement. Cannot cancel invoices, record payments, or post cash.
Assigned delivery runs on the driver app. The API still rejects anything else.
Pick a persona after sign-in. Finance never runs production; sales & ops never post the books.