Skip to content

ERP for bespoke furniture - quote to profit on every unique order

One ERP for the whole cycle of a made-to-order furniture workshop - from a room-by-room quotation, through manufacturing each unique piece, to the real cost and profit of every order. When every piece is designed for one client and there is no reusable bill of materials, this guide shows how cost control works in practice.

The numbers below come from a real demo order (client "сем. Оскар", order S00147), not a polished slide. Everything runs on Odoo 18 Community + OCA: PLANA Pulse adds a thin layer only where it is needed (localised documents, reports), so the data and the logic stay entirely yours - an open, universal stack with no vendor lock-in.

The quotation - room by room, not a BOM dumped in the description

  • Structured by room. Section lines (1. Hallway, 2. Kitchen, 3. Services) group the pieces; each piece is one line with its dimensions and a clean material summary underneath.
  • Exclusions as notes. A Note line carries the caveats - e.g. "Quote excludes electrical appliances, plumbing, mixer tap and sink." - instead of being buried in a description.
  • Clean total. The demo order totals EUR 15,643 excl. VAT: Kitchen EUR 11,343, Hallway shoe cabinet EUR 2,620, plus design and installation hours.
  • Revisions built in. Re-quoting produces Q-…-1, Q-…-2 with the history preserved (OCA sale_order_revision); the branded PDF comes from the core PDF Quote Builder.

Modules: core sale_management (sections, notes, templates, sale_pdf_quote_builder), OCA sale_order_revision, sale_quotation_number.

Furniture quotation with room sections and a note line - order S00147

Confirm - the order becomes a project

On confirmation the order gets its own project and analytic account - the single bucket every cost of this job will land in. Each manufactured line spawns a manufacturing order linked to the project. There is no reusable BOM to maintain: components live on the order's own manufacturing order (you can save them back as a project BOM at any time).

Modules: core project_mrp, sale_project.

Manufacturing - real material and real time

  • Operations across your real stages. Each piece flows through your work centres - Проектиране, Рязане, Фурноване, Кантиране, Раздупчване, Сглобяване, Шлайф/Боя, Транспорт и монтаж - each operation timed and costed at the centre's hourly rate.
  • Stock goes down for real. When the manufacturing order is marked done, components are consumed and stock decrements (the demo's orders consume 36 BLUM hinges, leaving 18 on hand) - no manual inventory corrections.
  • Planned vs real cost per piece. The MO overview shows the estimated cost against the actual materials and minutes.

Modules: core mrp, mrp_account; OCA mrp_production_note, mrp_attachment_mgmt (attach the shop drawing).

Manufacturing order for a bespoke kitchen - operations across the work centres

Design & installation time

Design and installation hours are logged as timesheets on the order's project. Each hour posts a cost at the employee's rate - in the demo, 16 h of design + 24 h of installation - so labour is in the job P&L without any manual cost sheet.

Modules: core hr_timesheet, sale_timesheet, sale_project.

The payoff - profit per order, live

Open the order's Project → Profitability:

EUR
Revenue (to invoice)13,963
Manufacturing Orders (materials + machine/labour)−2,544.60
Non-billable (design + installation timesheets)−1,370.00
Margin≈ 10,048, live

This replaces the manual cost sheet: the moment materials are consumed and hours are logged, the order's real profit updates itself - the number that holds up in front of both the customer and the owner.

Modules: core project_mrp_account (auto-posts MO + labour cost to the project analytic account).

Purchasing - disciplined, not by feel

Reordering rules on boards and hardware feed the Replenishment report so you buy what is actually short; job-specific purchases carry the order's analytic account (OCA purchase_analytic), and the shop floor raises purchase requests (OCA purchase_request) for controlled buying.

Invoicing & accounting - the books stay in one place

Invoice from the order (down payment + final), register payment, reconcile the bank. Bulgarian VAT ledgers and the SAF-T export are produced from the same books - tax reporting comes out of the system, not re-keyed monthly from outside. All amounts in EUR.

Out of scope (by design)

Panel/cut-list optimisation and CAD (2020, Imos) integration are not part of core/OCA and stay outside the ERP for now; attach drawings to the manufacturing order instead. This keeps the implementation 100% standard and upgrade-safe.

Last updated:

© PLANA Digital Ltd.