Signing sealed bottles out to a table is a custody record, not a stock movement: the bottle is still the bar's until the till sells it or it comes back to the shelf, and the register says whose hands it was in.
Why a sign-out moves nothing
A sealed bottle carried to VIP 3 has not left the bar's stock. It leaves in exactly one of two ways: the till rings a bottle sale and the sales import explodes it out of the bar, or it comes back sealed and is on the shelf at the next count.
So a sign-out writes nothing to the stock ledger, ever. Posting an issue when the bottle left the shelf would deplete a sold bottle twice, once at sign-out and once when the sale explodes, and posting a receipt when it came back would invent stock nobody bought. Both mistakes land on the one number this product exists to get right.
What a sign-out is instead is a custody register: a row saying who is holding how many bottles, from which shelf, at which table, and what happened to them afterwards. Its code looks like BSO-000045.
The register is under Bar Suite → Bottle service. Reading it needs view_inventory or sign_out_bottles; signing out and closing need sign_out_bottles. Like the rest of the Bar Suite it needs the BAR module, which is part of the Enterprise plan.
Signing bottles out
Sign out bottles asks for the bar, the bottle, how many, who is carrying them, and optionally the table and a note.
- Whole sealed bottles, at least one. A fraction is refused: "A sign-out is for whole sealed bottles, at least one, and never a fraction. A part bottle is weighed at the count, not carried to a table."
- The custodian's name is required, and it is a name rather than an account, because most waiters have no account. That name is the whole control here. There is no approval step, and a shortfall with nobody attached to it is just a loss. If the custodian does have an account you can attach it, and it has to be an active member of the company.
- The table is optional ("VIP 3"), and it is what makes the row findable in the room.
- The value is snapshotted at the bar's weighted average cost at the moment the bottles left, exactly as a waste line's is. An item that has never been valued at that bar shows a dash rather than a zero, because "we cannot say what this was worth" is not the same as "nothing".
- The shift is worked out by the server, never sent by the app. If a shift is open at that bar the sign-out belongs to it; if none is open, the row simply has no shift, which is ordinary rather than a defect. Letting the person handing a bottle over pick the shift would let a bottle be attributed to the shift before or after the one that actually lost it.
A retired item cannot be signed out, unlike a waste note: clearing the last of a discontinued line is normal, whereas carrying a discontinued bottle to a table means somebody picked the wrong row from a list. An item that is not stock-tracked is refused too, since there is no shelf for it to come back to.
Closing a sign-out
Closing is one action with three figures, because they are one answer: how many came back sealed, how many were sold, and the remainder, which is unaccounted to the named custodian. You do not type the remainder; the server works it out and states it back in words, so a register can never sit half closed with two bottles returned and nothing said about the third.
Alongside the sold figure there is a check number from the till. It is optional, and deliberately so: the roll is on the till, the person closing the register at 3am is often working from memory, and refusing the close would leave the bottles open, which blocks the shelf being counted. Instead the close comes back with a caveat saying there is nothing on the till to match those bottles against, and you add the reference when you find it.
Two refusals:
- More cannot come back than went out. "BSO-000045 signed out 4, and 3 back plus 2 sold is 5. More cannot come back than went out, if extra bottles were found on the shelf, they belong to the count, not to this register."
- A sign-out is accounted for once. Closing a closed row is refused with what it already says, and the fix is a note rather than a second close.
Sold bottles leave the shelf through the till's own sales file, not through this register. Recording them here as well would take them off twice, which is the same error the whole design exists to avoid.
The rule at shift close
A shift cannot close, or be handed over, while a sign-out at its bar is open. The refusal names the codes, the custodians and the tables, because "close the open sign-outs first" is something you have to go and investigate and a list is something you can act on from where you are standing.
The reason is the closing count. It is about to walk a shelf that three bottles are missing from, and those three bottles are on table 5. A shift closed over an open sign-out produces a variance that accuses the bar of a loss which is really a custody in progress, and accuses whoever the shift names rather than whoever is holding the bottles. So every bottle is back on the shelf, sold against a check, or unaccounted to a name before the shelf is walked. See Bar Shifts.
What the count's reviewer sees
The counting sheet never shows custody. A counter counts what is physically on the shelf, and nothing on that sheet tells them what to expect, custody included.
The review view does. Under an item's name it says, for example, "3 in custody when this was counted: 3 with Amina (VIP 3) on BSO-000045", as at the moment the shelf was walked. It reads history rather than the live register, so a bottle that was on a table during the count and came back an hour later still explains why the count found one fewer.
The expected quantity is not adjusted for it. The bottle is still the bar's stock and the ledger is right about it; folding custody into the count's own arithmetic would put a phantom there. What it changes is what the variance means: "three short" and "three short, and three were on table 5 with Amina" are different findings, and only one of them is worth a conversation.
The high-value alert
Above a threshold set per company, a sign-out tells the outlet's managers. It is visibility, not a gate: a club cannot hold a bottle at the pass while somebody wakes up to approve it, and the control that works at 1am is the name on the row.
The threshold is Company Settings → Inventory Policy, in the card called The bar: "Tell the managers about a sign-out worth (KES)", default 20,000, roughly a premium bottle at Nairobi bar prices. Zero tells them about every bottle signed out to a table.
Who is told: everyone who can accept a stock count at that branch, except the person who signed the bottles out. A sign-out whose value could not be worked out tells nobody, because a missing figure is not a small one, and treating it as zero would silence exactly the first sign-outs a new tenant makes. Those rows are still perfectly legible everywhere else: in the register, on the shift report, and on the counting review, each showing a dash rather than a figure.
The register
Two tabs: Out now (bottles somebody is holding, oldest first, because the one nobody closed is the point) and Accounted for (closed sign-outs, most valuable first). Filters for outlet, bar, shift and custodian; the custodian filter matches on part of a name, because nobody types "Amina Wanjiru" into a box at 2am.
Each row shows the code, how many of what, the custodian and table, the bar, the shift it belongs to (or "No shift open"), how long it has been out, the status, the back / sold / missing figures once it is closed, and the value at cost. An open row shows a dash for those three figures rather than zeros, because nothing has been declared yet.
Who can do what
| Grant | What it allows | Seeded to |
|---|---|---|
sign_out_bottles | Sign bottles out, close a sign-out | Bar Manager, Outlet Manager, Storekeeper, Admin |
view_inventory | Read the register | Bar Manager, Outlet Manager, Storekeeper, Chef / Kitchen Lead, Finance / Accounts, Procurement Officer, Auditor, Admin |
The Bar Manager is the role this was written for: the person handing a sealed bottle to a waiter at midnight, and the person who has to close every sign-out at their shelf before the closing count can be taken. The Storekeeper holds it for the venue with no bar manager on that night, and the Outlet Manager for the case that matters more, closing the sign-out somebody left open. See Roles & Permissions.
On the phone
The mobile Bottle Service screen (under More, behind sign_out_bottles and the BAR module) does both halves of the job, because they are one job to the person doing them.
Signing out is built for thirty seconds at a counter with a customer waiting: pick the bar, pick the bottle, type how many, and tap the custodian's name, which is offered as a chip because the same six or seven people carry bottles every night. It works offline and queues in the outbox, since the moment a bottle is handed over is the only moment anybody knows who took it, and that moment happens in the basement bar where signal is worst.
Below the form is the list of what is still out at that outlet, with the close form on each row: came back sealed, sold, check number. A sign-out still sitting in this phone's queue cannot be closed yet, because the close names a document the server has to hold, and the list says so rather than offering a button that would certainly be refused.
FAQ
A waiter took four bottles and only two came back. What happens to the missing two? They are recorded as unaccounted to that waiter on the sign-out, and they show as a loss on that bar at the next count, with the name against them. The register does not write off the stock; the count does, and the register is what says who to ask about it.
Why does the ledger not show the bottle leaving and coming back? Because it never left. The shelf is short while the bottle is on the table, and the count is what notices that. Posting a movement out and back would double-deplete the bottle that gets sold, which is the exact error this design was written to avoid.
Can I sign out half a bottle? No. A sign-out is whole sealed bottles. A part bottle is weighed at the count, which is what the scale reading on the count sheet is for.
We closed a sign-out with the wrong figures. A sign-out is accounted for once, so it cannot be closed again. Add a note to it, and correct the stock through the count, which is the document that actually decides what is on the shelf.
Do I have to run shifts to use this? No. A sign-out with no open shift at its bar simply has no shift on it, and the register works the same. What you lose is the attribution: the shift report is where a shortfall gets a person's name and a night's trading around it.
Nobody was told about a KES 40,000 bottle going out. Either the threshold is set higher than that, or that item has never been valued at that bar, in which case the sign-out has no value at all and the alert declines to guess. Receive the item on a priced delivery at that bar and future sign-outs will value normally.