← back to notes

construction billing has more edge cases than you think

last winter i built a custom odoo 19 module for a construction firm, part-time through zamakan consultancies. the brief sounded contained: bills of quantities, structured billing, subcontract management, project tracking.

the bills of quantities are where the time went. a BOQ is a huge itemized list of everything a project needs, and almost every line can change after the contract is signed. quantities get remeasured on site. rates get renegotiated. a subcontractor takes over part of the scope, and suddenly the same line item lives in two agreements with different rates and different billing schedules.

odoo gives you a lot out of the box, invoicing, accounting, approval chains. the real work is deciding what deserves to be its own model and what should stay a field on something that already exists. i got this wrong before i got it right, and the version that survived was the one tested against a real project's data instead of my assumptions.

the most useful hours of the whole engagement were the ones spent sitting next to the person who actually does the billing. she walked me through her process in an afternoon, and none of it was written down anywhere.

if you're doing ERP work: resist custom code until the standard flow genuinely breaks. every model you add is something the client has to maintain after you're gone.