Skip to content

Receiving

Receiving is the moment an order stops being a promise and becomes stock. You can do it in one click, or crate by crate as the boxes turn up.

On the order page:

  • Receive all books every line’s open remainder in one go. It shows up once the order has been marked as ordered, since a draft has nothing on its way yet.
  • Each open line also has its own Receive button, for the crate that arrived while the rest is still on a truck.

Receive all asks before it books anything, and the question carries the numbers: how many open lines it will receive in full, and where they land. It writes stock and moves average cost, so it is worth a second of reading.

With more than one location, an order carries a Deliver to; Receive all lands every line there, and the line dialog lets one crate go straight to the fridge.

Or hand the paperwork over: Read the paperwork takes the delivery note, the invoice or a photo of either and proposes quantities, lot codes and best-before dates line by line. You keep what you trust.

On a phone the lines become cards, and each open one carries Receive as a full-width button. The wide table would have put it behind a sideways scroll, which is no way to treat somebody holding a crate. The dialog slides up from the bottom and stays above the keyboard.

Receiving a line on a phone: the dialog slides up from the bottom of the screen

Quantity received comes prefilled with what is still open on the line, in the unit the line was ordered in. Receiving the default is the one-tap flow; the field exists for the day the box is short.

The receive dialog: quantity received, the day it arrived, the lot and the best-before

  • Receiving less keeps the rest open. The line stays on the order, the order stays Partial, and the next Receive on that line prefills what is left.
  • Receiving more is allowed. A vendor topping up a crate is real, so the dialog notes it and books it; the line then reads as over.
  • An equipment line takes whole numbers only, each one minting an owned unit.

Under it: the day it arrived (today, unless you are logging it late), the lot code off the label, a best-before, and where it landed. Lot and best-before stay correctable afterwards through the delivery’s Correct action; quantity and cost go through an undo instead.

The invoice says a different price. That link opens one field, prefilled with the line’s price. A changed price rewrites the whole line before this receipt is costed, and the line then carries a note reading “Price changed at receipt: €1.00 → €1.20.” Receipts already booked keep the price they were booked at, and the note says so.

The invoice price field, opened under the receive dialog’s quantity

The quantity cell becomes a progress statement once anything has arrived: “12 of 20 kg”. The status says Partly received until the open quantity reaches zero, then Received. A line with more than one arrival shows the count under the status, and the lot column lists one lot per arrival.

The money says the same thing. A line’s total is what the line is for, because the rest is still expected and you will pay for it; under it, while part of the line is outstanding, sits what has actually arrived: “€40.00” with “€8.00 received” beneath. Once the line is done the two are the same figure and only one shows. The totals under the table carry the same note for the order as a whole.

An order in progress: one line 12 of 20 kg, one closed short, two with nothing in yet

Some remainders never come. Close the rest, in the line’s ⋮ menu, records that: it states the quantity it closes and takes an optional reason (“Out of season until March”). The line then reads “12 of 20 kg · 8 kg closed short”, the open quantity is zero, and the order can reach Received honestly instead of sitting at Partial forever.

Close the rest: the quantity it closes, and a field for the reason

Reopen the rest undoes it and gives the quantity back, with the line’s original total restored to the cent.

When the whole delivery came up short, the order’s ⋮ menu has its own Close the rest: every line still owing something closes at once, under one reason, and the order lands on Received. Use it rather than working down the lines. Each line closed on its own re-spreads the order’s fees and re-costs every booked delivery, so five lines meant five amendments in the ingredient’s ledger for one decision; closing the order does it once.

It is not the same as canceling. Canceling gives up on an order and records that as your doing; closing the rest records that the vendor came up short. The order only offers it once part of the delivery has arrived, because with nothing received, giving up is a cancel.

The closed quantity is what a vendor’s track record counts as a short shipment.

Three things happen for an ingredient or packaging line:

  1. A delivery movement is written to the stock ledger, dated the day the goods arrived, so the quantity is on hand immediately. See stock, deliveries and losses. Receiving 12 kg then 8 kg lands as two deliveries, which is what physically happened.
  2. The ingredient’s weighted average cost is updated with the line’s effective cost, fees included. See fees and landed cost.
  3. On the line’s first arrival, the price is snapshotted as a vendor offer marked “from a delivery”, so your price history builds itself as you buy. Later arrivals add stock without minting a second price row: one price was agreed, so one price is recorded. An invoice that says otherwise is a real new price, and does mint one.

Equipment lines behave differently: each unit received joins your equipment as an owned unit, at its landed cost, dated the day it arrived.

An order’s fees spread across its lines by paid value, and each unit carries its line’s share divided by what the line actually bought: the ordered quantity while the line is open, what arrived once it is closed short or over-received.

That means the Effective cost column is provisional while anything is open: it divides by what was ordered, so it is the cost you will pay if the rest arrives. The ⓘ beside the column heading says so. Closing the rest settles it on what actually came.

Whenever that moves, every delivery already booked against the order is re-costed, the average cost is replayed, and a line appears under the delivery row in the ingredient’s ledger: “Cost restated €1.20 → €1.27: fees re-spread after the line closed short.”

That happens when a line closes short or is reopened, when a receipt is undone, when a line comes in over, when a line is repriced at receipt, when a line is added to or removed from an order that already has deliveries, and when you edit the fees after the goods arrived. That last one is the common case: the invoice with the real delivery fee usually lands after the crates do, and the fees stay editable on a received order for exactly that reason.

Undo works per arrival, not per line. Undo a receipt in the line’s ⋮ menu lists what came in, and each row offers the same two choices:

  • Keep the delivery, detach it: the movement stays in the ledger; only this order’s claim on it goes. Use it when the goods really arrived but belong to a different record.
  • Revert this receipt: the movement is deleted and the average cost is recalculated, as if that delivery never happened.

Either way, that quantity reopens on the line and the order’s status walks back with it. A line received in one go behaves exactly as it always did: one arrival in the list, the same two choices.

The receipts on one line, each offering revert or detach

On a line you closed short, undo waits behind Reopen the rest. The close was a decision about what was still open after that arrival; take the arrival away first and the line would be closed while still owing something nobody decided about. Reopen, undo, then close again.

Giving up on the whole order is a different move: Cancel order closes what is still open and leaves every delivery, and its stock, alone. See purchase orders.

When any line came up short, came over, or was repriced at receipt, the order header gains one quiet line: “Short on 2 lines · over on 1 · invoice differs by €12.40.” An order where everything matched says nothing.