BFBambooForge Labs

Laundry & Dry Cleaning Management

Laundry and dry cleaning: a tag on every garment, a care label the machine respects, a bag that cannot go home short, and a clear compensation rule.

Buy on the Odoo Apps StoreOpen the live demoIndustries€174Community & Enterprise

Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0. Technical name bambooforge_laundry.

Odoo 16.0Odoo 17.0Odoo 18.0Odoo 19.0
Full walkthrough on a live Odoo 19.0 database, with subtitles. It ends with what this app deliberately does not do.

Laundry & Dry Cleaning Management

Built around the four arguments every shop has at the counter.

"That mark was already there"

  • Every garment is inspected at intake with the customer standing there, and what was found is written on the garment record.

  • A ticket cannot go into the shop while any garment on it is uninspected, and an uninspected garment cannot go into a machine.

  • The customer's declared value is asked for at the counter, not after the garment is ruined. It is the ceiling on any compensation.

"You washed a dry-clean-only coat"

  • The care label is a rule. A garment cannot be booked for a service its label does not allow - dry-clean-only takes dry cleaning, pressing or a repair, and nothing else.

  • A garment cannot go into a machine that does the wrong process. A washer takes wash work; the dry-cleaning machine takes dry-cleaning work.

  • Garments go into a load through Add garments on the load, which offers only what may legally go in that machine - and the same refusals hold on every other route in, including writing the load onto the garment by hand or swapping the machine under a full drum.

  • Once a garment is in a load its service, care label, colour and inspection stop moving, so the record and the drum cannot end up saying different things.

  • A whites load refuses a dark garment and a darks load refuses a white one, before the drum turns rather than after a shirt comes out pink.

  • An overloaded machine is flagged: a drum past its capacity does not clean, and the garments come back grey.

"I gave you five shirts"

  • Every garment is a record with a tag, unique in the shop.

  • A bag cannot be handed over while anything on the ticket is unfinished - counted again at the door, off the garments themselves. The count in is the count out.

  • Garments are added and removed at the counter, while the bag is still being booked in. Once it is in the shop nothing is added to the ticket and nothing is deleted from it.

  • A missing garment has to be written off explicitly as lost, which takes it off the bill and puts a claim behind it. Nothing disappears quietly.

  • A garment moves through its buttons - inspected, ready, written off - so what happened to it is a record rather than an edit, and a garment that has gone home is not editable at all. A correction is a note.

"You said you'd look after me"

  • The compensation policy is arithmetic: a multiple of the cleaning charge, capped, and never above the value the customer declared.

  • The figures it is worked out from are frozen when the bag goes into the shop: the price, the declared value and the marks stop being editable, and the claim keeps its own copy of them. A compensation base that can be raised after the garment is lost is a compensation base nobody can defend.

  • An offer above the policy needs a manager - to offer it, to write it, and to settle it - and is recorded as above the policy either way.

  • One garment, one claim. A second live claim on the same shirt is refused, and a claim for a lost garment needs the garment written off first.

  • A claim carries the machine load the garment was in, which is usually the answer to how it happened.

Money and collection

  • Nothing leaves unpaid. The balance is read again at the door and settled at the counter before the bag goes out of it.

  • What the counter actually took is recorded as a figure, not as a tick. Storage that runs up after the money was taken is still owed, and the balance says so.

  • Unless the customer is on account - a hotel, a restaurant, a gym - in which case the bag leaves on a signature and the work is invoiced. Who is on account is the manager's decision, and the ticket keeps the answer it was booked under.

  • Who took the bag is written down, with how many garments went with them. It is not always the customer, and it is the one thing nobody records.

  • A deposit taken at drop-off comes off the balance. A deposit bigger than the bill, or a bag cancelled after money was taken, is flagged as a refund rather than left as a negative.

  • The invoice is raised once the bag has gone home, so the storage that ran up while it sat there is on it.

Uncollected bags

  • A daily job picks up bags finished more than the free storage period ago: the customer is written to once, the date is recorded, and storage is charged from that date - not from a date the shop never wrote to anybody about.

  • Every company is swept with its own free period, and the call lands on the person who booked the bag in rather than on the job scheduler.

  • Storage is worked out when it is asked for, so a bag that has been on the rail for six weeks shows six weeks of storage without anybody having to touch the ticket first.

  • That date is what a disposal has to be able to show later. A shop that cannot produce it is disposing of somebody else's property.

Roles

  • Counter and shop floor - books bags in, inspects garments, runs machines, hands bags over, opens claims. Cannot change the price list, delete a ticket, put a customer on account, or offer or settle a claim above the policy.

  • Shop manager - sets services, machines and the compensation policy, decides who is an account customer, invoices them, and settles what is above the policy.

Installation

Community only. Depends on base, base_setup, mail, product and account.

Set up services first (process, turnaround, price), then machines with their real capacity, then the four numbers under Settings: free storage days, storage per day, the compensation multiple and the cap. Mark your trade customers as account customers on their contact record before their first bag.

Support

support@bambooforge.dev

Screens

Claim - bambooforge_laundry
Claim
Counter - bambooforge_laundry
Counter
Load - bambooforge_laundry
Load
Ticket - bambooforge_laundry
Ticket