Secret Recipe Bangladesh — Odoo 19 ERP
Multi-company ERP for a restaurant & bakery chain
01 — Overview
Secret Recipe operates as a group of companies: a head office (Pepperoni Ltd), a central Production Unit running bakery, icing & decoration, and hot-meal production, and several outlet stores across Dhaka. I led the Odoo 19 Enterprise implementation that makes stock, sales, and accounting flow between these companies at cost price — automatically and auditable — while keeping every outlet's POS fast and compliant with local tax reporting. Deployed and versioned on Odoo.sh with a Git-based dev → staging → production pipeline.
One ERP connecting a central production kitchen, a head office, and multiple flagship outlets across Dhaka — from POS counter to manufacturing to inter-company accounting. Built on Odoo 19 Enterprise.
02 — Objectives & Challenges
- Payment Traceability: Capture a payment reference number for every non-cash POS payment (mobile banking, cards, online gateways) so every transaction is reconcilable.
- Inter-Company Automation: Lock HQ → outlet stock transfers to the seller's cost price, auto-generate inter-company purchase/sales orders, and sync delivery-receipt quantities between companies.
- Manufacturing Setup: Three production work centers (Bakery, Icing & Decoration, Hot Meal) under the Production Unit with automatic BOM operation assignment.
- Accounting Reliability: Automated fixes for POS product income/expense accounts, partner receivable/payable defaults, tax return journals, and protection against tax-report crashes on missing tax tags.
- DevOps Discipline: Versioned module migrations (1.2.x series) with install-test hardening across Odoo.sh development, staging, and production branches.
03 — Deep Dive
POS Enhancements — pos_secret_hq
The POS is where the business touches the customer, so reliability there was non-negotiable. The custom pos_secret_hq module captures a payment reference number for every non-cash payment method — mobile banking, cards, and online gateways — making daily reconciliation and audits straightforward.
Credit-customer filtering was added to the POS customer list, receipts were rebranded with the new logo, and pro forma bills now show BILL UNPAID before payment and BILL PAID only after validation — removing ambiguity at the counter entirely.
04 — Deep Dive
Inter-Company Automation — secret_hq_intercompany
The secret_hq_intercompany module automates the group's internal supply chain: stock transfers between HQ and outlets are locked to the seller's cost price, inter-company purchase and sales orders are auto-generated, and delivery-receipt quantities sync automatically between companies.
The result: the central kitchen supplies all outlets automatically at cost — no manual re-entry, no price disputes, and a fully auditable paper trail between the Production Unit, head office, and every outlet store.
05 — Deep Dive
Manufacturing & Accounting Reliability
Three production work centers — Bakery, Icing & Decoration, and Hot Meal — were configured under the Production Unit company with automatic BOM operation assignment, plus duplicate/cleanup migrations to keep multi-company data clean. Users only ever see what belongs to their company.
On the accounting side, automated fixes were shipped for POS product income/expense accounts, partner receivable/payable defaults, and tax return journals — including protection against Tax Report crashes on missing tax tags. All of this ships through a Git-based dev → staging → production pipeline on Odoo.sh with versioned 1.2.x migrations and install-test hardening, keeping every branch in a stable, test-passing state.
06 — Measurable Impact
Before → After
Inter-Company Transfers
Manual re-entry & price disputes
Automated at cost price
Daily Reconciliation
Untraceable non-cash payments
Every payment reference-numbered
Multi-Company Data
Cross-company clutter
Users see only their company
Release Stability
Risky manual updates
Test-passing dev → staging → prod
Interested in working together?
Let's discuss how I can help architect your next project.