General-Retail Pack

In build. The lightest pack there is: a quick-sale screen and on-hand stock by warehouse and product, with no batch, fitment, or weighed-goods overhead. For a shop that wants a till and a stock figure, and nothing more.

In this module
  • Quick-sale screen
  • On-hand stock without batches
  • The same ledger and audit trail
  • Move up to a bigger pack later

Not every shop needs batches, fitment, or scales. This pack is deliberately the smallest surface we ship: a till, and a number that tells you what is left.

What it will switch on

  • A quick-sale screen with no batch or fitment overhead
  • On-hand stock by warehouse and product

It is in build. The quick-sale flow is not activatable until it posts the invoice, the stock movement, the ledger entry, and the cash line together — a till that only prints a receipt is not a till we are willing to ship.

The ledger, the audit trail, and the permission matrix underneath are the same ones every other pack uses. Moving up to a bigger pack later is a setting, not a migration.

Module shape

How General-Retail Pack fits the rest of the system

Bounded

The module owns its tables and its service interface. Other modules reach in only through services and async events — never SQL.

Test-vector verified

Every domain rule has two implementations — Dart and Java — and a single shared test vector. CI fails on any divergence.

Audit-logged

Every command writes an entry to the append-only audit log with a chain hash. The daily verifier proves the log has not been tampered with.