DODIL BLOG
DocsLog inSign up

Modules / Hire

Equipment hire

Know what is out, what is due back, what it has earned so far, and who has not paid — for a business that hires equipment out by the day or the week.

People ask for it as: “what's out and what's coming back”, “who hasn't paid”, “we run it off a whiteboard”, “hire out our kit”, “the yard”

Who uses it

RoleDoesSees
The ownereverything — books, returns, bills, records payments, writes off, sets rates and termseverything
Yard staffbooks equipment out, extends, takes returns, adds a builder who turns upthe board, hires, fleet and customers — never money
The systemworks out days out, charge so far, what is unbilled, what is overdue, who owes whateverything, through its own service account

What it has to do

Reference user stories. Each has a test written into it — the given / when / then — which becomes an automated check once it is built. Expect to keep some, change some and drop some.

Things people do

  • HIRE-01As the yard, I want to book equipment out to a builder, so that the whiteboard has a replacement.

    Given a builder, a start date, a due-back date, and items — a digger by fleet number, 40 scaffold boards by quantity · when I save the hire · then the items show as out; a serialised item already out is refused, naming the hire it is on; bulk stock is refused beyond what we own minus what is out; each line copies the day and week rate from the rate card at booking

    Yard staff · screen: New hire · reference: not built

  • HIRE-02As the yard, I want to see what is out right now, so that I know where the fleet is.

    Given open hires · when I open the board · then every open hire shows the builder, the site, the items, the date out, the date due and days out so far, ordered by due date

    Yard staff · screen: Board · reference: not built

  • HIRE-03As the owner, I want to see what is coming back this week and what is late, so that I can chase and plan the next booking.

    Given one hire due Tuesday and another that was due last Friday and is still out · when I open the board · then Tuesday's is under "due this week" and Friday's under "overdue" with days late — worked out from today's date, never stored

    The owner · screen: Board · reference: not built

  • HIRE-04As the yard, I want to record a return, so that the item can go out again and the hire can be billed.

    Given an open hire with a digger and 40 boards · when I record the return, with the quantity back and any missing or damaged count · then those items are available again from that date, a partial return leaves the rest out, and the hire closes when every line is back

    Yard staff · screen: Hire · reference: not built

  • HIRE-05As the yard, I want to extend a hire when the builder rings to keep it longer, so that the board shows the real date.

    Given a hire due Friday · when I set the due date to next Wednesday · then the board updates and the change is recorded with who made it and when

    Yard staff · screen: Hire · reference: not built

  • HIRE-06As the owner, I want to raise a bill for a hire, so that short jobs are billed on return and long ones are billed monthly.

    Given a hire with days not yet billed · when I raise a bill · then it covers each line from the day after its last bill (or its start) to today or its return date, both ends counted; the amount is fixed on the bill; the due date follows the terms; a hire with nothing unbilled is refused

    The owner · screen: Hire · reference: not built

  • HIRE-07As the owner, I want a message I can send the builder with the bill, so that billing stays a text and a bank transfer.

    Given a raised bill · when I copy the text · then I get the builder's name, what was on hire and for how long, the amount, the bank details and the due date, ready to paste — and the send is recorded

    The owner · screen: Hire · reference: not built

    Usually different per customer: some businesses want a real invoice here instead — that is the invoicing module, not this one

  • HIRE-08As the owner, I want to see who owes me money and for how long, so that I know who to ring this morning.

    Given bills with unpaid balances · when I open the unpaid list · then each builder shows their total outstanding, their oldest unpaid bill and days past due; a bill that is settled drops off

    The owner · screen: Unpaid · reference: not built

  • HIRE-09As the owner, I want to record a payment, so that a builder who settles three bills with one transfer is handled properly.

    Given a transfer of 1,200 against three unpaid bills · when I record it and spread it, oldest first · then each bill's balance falls by its share, any leftover stays as credit on the builder, and paying more than a bill's balance is refused

    The owner · screen: Unpaid · reference: not built

  • HIRE-10As the owner, I want a list of my equipment, so that every hire is booked against something real.

    Given the fleet · when I add a machine by fleet number, or a bulk line with the quantity owned · then it becomes available to book, and taking it out of service hides it from booking without losing its history

    The owner · screen: Fleet · reference: not built

  • HIRE-11As the yard, I want a list of the builders we deal with, so that every hire and payment hangs off the same one.

    Given a new builder on the phone · when I add them with a name and a mobile · then they exist once — adding the same mobile again reuses the record, through the shared customer list

    Yard staff · screen: Customers · reference: not built

  • HIRE-12As the owner, I want rates and terms where I can edit them, so that a price change never needs a developer.

    Given the rate card · when I change the day rate for a machine type · then new hires take the new rate and hires already out keep the rate they were booked at

    The owner · screen: Settings · reference: not built

  • HIRE-13As the owner, I want to write off a balance that will never be paid, so that it stops showing on the unpaid list.

    Given a bill with a small leftover balance · when I write it off with a reason · then the balance clears, the write-off is recorded with who and when, and the bill drops off the list

    The owner · screen: Unpaid · reference: not built

  • HIRE-14As the owner, I want to see which long hires are due a bill, so that scaffolding out for months never goes unbilled.

    Given a hire out 35 days with no bill, and one billed 10 days ago · when I open the to-bill list · then the first is listed with its unbilled days and charge so far, the second is not, and anything returned but not fully billed is always listed

    The owner · screen: Unpaid · reference: not built

Things that happen on their own

  • HIRE-20on read (derived)The system works out days out, the charge so far, what is unbilled, what is overdue and who owes what whenever anyone looks, so that nothing is stale and no overnight job can be missed.

    Given a hire out since the 1st at 80 a day and 400 a week, not yet returned · when it is opened on the 10th · then it shows 10 days out (both ends counted) and 480 — one week plus three days, because three days at 80 is less than another week — and opening it twice gives the same answer

    · reference: not built

Things that cross into other modules

  • HIRE-30when a builder is addedThe builder is created or reused in the shared customer list, so that invoicing later means the same builder.

    Given business-partner is installed · when the yard adds a builder · then a partner exists, created or reused on the mobile number, and hire never writes the partner table itself

    · owned by business-partner · reference: not built

How things move

hire

out → returned

  • none → out by owner or yard · when a builder, at least one line, a start and due date, and the items available · items unavailable from the start date; rates copied onto the lines
  • out → out by owner or yard · when the new due date is not before the start · extension recorded with who and when
  • out → returned by owner or yard · when the return date is not before the start; bulk quantity back is not more than the quantity out · items free again; the hire closes when every line is back

bill

raised → paid

  • none → raised by owner · when at least one unbilled day on the hire · period, amount and due date fixed; the text can be copied
  • raised → paid by system · when balance reaches zero · drops off the unpaid list

What it keeps

ThingMeaningIdentified byShared?
equipmentone machine, or a stock line of identical itemsequipment_code (the fleet number, "D-03", or the stock code, "BOARD-2.4")module-owned
ratewhat a type of equipment costs per day and per weekequipment_typemodule-owned (configuration)
hireone booking, to one builder, from one datehire_no (H-<year>-<n>, from a high-water-mark row — there are no sequences here)module-owned
hire lineone item, or a quantity of stock, on a hirehire_noequipment_codemodule-owned
billa charge for a period of a hirehire_nobill_nomodule-owned
paymentmoney received from a builderpayment_id (derived from the date, the builder and the bank reference, so a re-entry is not a second payment)module-owned
allocationhow much of a payment or write-off settles which billsource_kindsource_idhire_nobill_nomodule-owned
settingsterms, bank details, the monthly-billing threshold and the message wordingkeymodule-owned (configuration)

A hire business that later wants proper invoices, statements or tax needs the same builder in both places. Reference the shared partner from the first booking.

Questions that shape your version

Read these out and let the customer correct one — people rarely recall a policy on demand and can always react to one. Standard is a named authority you can look up and hold us to. Commonly seen is exactly that: arrangements we have met, with no survey behind them. A customer doing none of them is not doing it wrong.

  1. Do you hire by the day, the week, or both — and do both ends count as days?
    tool and plant hire
    day rate with a cheaper weekly rate, and both collection and return days charged
    event hire
    a flat rate per booking rather than per day
    warning
    whether the return day is charged is the single most argued line on a hire bill
  2. Is anything hired in bulk, where you count what comes back?
  3. Do you bill when it comes back, or along the way for long hires?
  4. Do you need proper invoices with tax, or is a message with the amount enough?
  5. Does anyone but you handle money?
  6. Do you take deposits or charge for damage?
    consumer hire
    a card deposit taken up front and released on return
    trade hire
    no deposit for account customers; damage billed after inspection

What you can change yourself

These are settings, not code: someone in your team changes them on a screen, without a developer and without a release.

Where the platform limits what we can promise

Hire numbers come from a high-water-mark row, and concurrent inserts of the same key are currently all acknowledged with one row surviving. one writer issues hire and bill numbers, and the number is re-read after saving

For builders

Known gaps in the reference

© 2026 DODILHomeDocsConsole