The advances notebook
One page per driver, a pen, and the company’s only copy of the balance. The day the notebook is lost, the debt is negotiated from memory.
Three thousand dirhams handed to a driver before Tangier–Murcia is neither a charge nor an expense: it is a balance. The module keeps that balance as a ledger — one row per movement, never modified — and turns the receipts brought back into traceable reimbursements, with a state at every step.
One page per driver, a pen, and the company’s only copy of the balance. The day the notebook is lost, the debt is negotiated from memory.
Tolls, diesel, ferry, customs, parking: you reimburse what can be found, and the driver always finds more than the company does.
The driver comes back with euros and dirhams. The notebook has one column, so someone converts at a rate from memory — and the balance stops being an exact debt.
The amount is pre-filled from the scale — so much per day, so much per kilometre — the operator keeps the last word, and the «travel expenses» slip prints for signature. The ledger row is written only when the cash is handed over.
The detail that matters. An advance’s state is not a field somebody updates: it is derived from the dates. An advance prepared but not paid out moves no balance, because the money is still in the box.
Submitted, received, approved, reimbursed. Every step is timestamped and carries its author; a refusal must say why. The queue shows the photo of the receipt next to the decision to be made.
The detail that matters. The reimbursement writes the ledger row in the same transaction as the state change: there can be no reimbursed money without a movement, and no movement without an approved receipt.
A driver’s balance is the sum of their rows, computed on read. There is no «balance» column that could be corrected by hand on a Friday evening.
The detail that matters. The prohibition lives in the database, not in the code: the application physically has no right to modify a ledger row, and a test tries to do exactly that on every build to prove the refusal holds.
A driver running to Spain has a dirham balance and a euro balance, shown side by side. The product does not convert: an invented rate would turn an exact debt into an approximation.
The detail that matters. It is the same rule as in the margin, where dirhams and euros are shown as two sums with no total. Adding two currencies produces a wrong figure that looks right — the worst kind of figure.
Supplement, deduction, adjustment: every correction explains itself — the note is mandatory — and leaves its trace. Change given back on an advance is a row, not an eraser.
The detail that matters. The same doctrine as the invoice: you do not cross out, you write the opposite. A notebook you can erase is not proof — and proof is exactly what is at stake the day a driver leaves disputing their balance.
| Driver | Balance | Advances this month | Justified | Last movement |
|---|---|---|---|---|
| H. El Amrani | − 1 250 MAD | 3 000 | 1 750 | yesterday · toll reimbursement |
| Y. Benali | 0 MAD | 2 500 | 2 500 | 04/09 · advance returned |
| M. Ouali | − 400 MAD · − 60 EUR | 2 000 | 1 600 | 03/09 · diesel, Algeciras |
| K. Tazi | + 320 MAD | — | — | 01/09 · supplement |
No row can be modified or deleted, not even by a programming mistake: the write permission is withdrawn at the database level. What was paid out stays paid out, and is corrected by an opposite row.
Paying out an advance and reimbursing a receipt are unique by construction: a double click, a retry after a dropped connection or two operators on the same file do not send the money out twice.
An advance is a movement of treasury, not a cost. The cost is the approved receipt and the invoice behind it. Otherwise the same toll would be counted twice in the profitability of the mission.
The photo does not live in someone’s phone gallery: it is attached to the movement, and reopens three months later from the driver’s card.
Receipt entry by the driver, photo included, from their phone arrives with the driver app; payroll will later write into the same ledger with its own row types. The balance will remain exactly the same sum, made of the same movements.
The module works on its own. With the Fuel module, a fill-up paid in cash by the driver and the card transaction are reconciled instead of counting twice; with payroll, salary rows will land in the same ledger.
Yes, completely. Everything is entered at the office: the advance prints for signature, receipts are photographed on return and attached to the expense. The driver app will add a source of entry; it will not replace this one, and nothing you have already entered will change shape.
Through the same rows: an advance return for what they hand back, a reimbursement for what they advanced, a deduction where needed — each dated, explained and signed by its author. The balance reaches zero because the movements say so, never because someone typed zero.
Create the account, tick your modules, add the trucks — the first mission leaves today.