Sales
Open the Right Register Before Creating Sales
When Cash Register is enabled, a cashier may need to open or resume the current branch register before a sale can be completed.
- Menu path
- Home -> New Sale, Manage -> Cash Register
- Verified from
- Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence
frontend/static/script/js/modules/js/sales.js ensureOpenRegisterBeforeSave and saleRegisterId, frontend/static/script/js/modules/js/users.js login cash register decision, frontend/static/script/js/modules/js/registers.js promptOpen confirmOpen renderOverview, api/src/controllers/branches.controller.js userRegisterBranchSelect, api/src/repositories/register.repository.js registeraddInsert
When Posnic Asks for a Register
The sale screen checks the current branch and cash-register state before a sale is saved. This keeps the bill connected to the right till session when the shop uses drawer control.
| Situation | Sale behavior | Operator action |
|---|---|---|
| Cash Register feature is off | Sales work without register ceremony. | Continue checkout and reconcile payments through reports. |
| Feature is on but branch has no register rows | Sales can continue without a selectable register, but the branch is not ready for drawer control. | Add register names in Edit Branch before relying on close reports. |
| Feature is on and branch has closed registers | Cashier must open the correct register before completing sale. | Open Manage -> Cash Register or respond to the register prompt. |
| Same cashier already has an open session | Posnic can resume the existing own session. | Confirm the register name and continue. |
| Another user has the register open | The register is locked to that user/session and the API returns REGISTER_SESSION_LOCKED. | Use another register or ask a manager to review/close the session. |
| Branch was changed | Old register ids are cleared and the new branch is checked. | Open or resume a register for the new branch before selling. |
Cashier Steps Before First Sale
- Confirm the current branch or outlet in the app header or Branches / Outlet page.
- Open Manage -> Cash Register when the shop uses drawer control.
- Find the physical register you are standing at, such as Main Counter.
- If the row is Closed, click Open.
- Count the cash already in the drawer.
- Enter that amount as Opening Float.
- Click Open Register.
- Return to Home -> New Sale and create the customer's sale.
- If the row says Open - your session, continue only if it is your physical drawer.
- If the row says open by another user, stop and ask a manager.
What Gets Stored on the Sale
When a register session is open, the sale payload can carry the cash register id, register id and register name. That is what later lets register close and reports connect sales to the till session.
- Do not share one login across multiple drawers.
- Do not keep selling after physically moving to another branch or register without switching/opening the correct session.
- If the feature is off, the sale register id is intentionally blank so old local register data does not block checkout.
- If the branch has no registers, the app treats that as a setup gap rather than a drawer choice.
- Register close relies on payment methods, refunds, cash in/out and counted amounts after sales are created.
After a Branch Change
Changing branch updates the current branch and then checks that branch's register list. The app clears old register session values when no open session belongs to the new branch.
- Switch to the intended branch.
- Read the success message and register prompt if shown.
- Open Manage -> Cash Register.
- Confirm the register list belongs to the new branch name.
- Open or resume the correct register.
- Only then start the next New Sale.
Troubleshooting at Checkout
| What cashier sees | Likely reason | Fix |
|---|---|---|
| Prompt to select/open register | Cash Register is enabled and no session is open. | Open the physical register with the counted float. |
| No register choices | The branch has no register names. | Manager edits branch and adds register rows. |
| Register already in use | Another cashier/device has an open session. | Use another drawer or manager close/review. |
| Sale belonged to wrong branch | Current branch was wrong before opening New Sale. | Stop, switch branch, recreate only with owner-approved correction process. |
| Register totals do not match later | Sale was saved with wrong payment method or cash movement was not recorded. | Review Sales History, Payment Reports and Cash Register close. |