Skip to main content
Multi-Branch / Multi-Location Operations Manager for Odoo — A Branch dimension across sales, purchase, stock, POS & accountin — 1/1Illustrative preview

A Branch dimension across sales, purchase, stock, POS & accounting

— branch-scoped access, sequences & reporting, below full multi-company.

What is Multi-Branch / Multi-Location Operations Manager for Odoo?

A Branch dimension across sales, purchase, stock, POS & accounting — branch-scoped access, sequences & reporting, below full multi-company. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

A new res.branch model with branch code, address, contact, linked warehouse and company — the single source of truth for the Branch dimension.
branch_id Many2one added to sale.order, purchase.order, stock.picking, account.move, and pos.order (plus lines where reporting requires it), with sensible computed defaults from the user's branch.
Per-user allowed-branches Many2many on res.users plus a default branch, so a user's activity is pre-filtered to where they actually work.
Branch-scoped data isolation via ir.rule record rules and ir.model.access.csv — branch users see only their branch's documents while managers retain the consolidated view.
Automatic branch propagation with @api.onchange / @api.depends: the branch flows from order → order lines → generated invoice and stock moves without re-keying.
Per-branch document sequences using ir.sequence, so each location numbers its own quotations, sales orders, POs, invoices, and delivery orders (e.g. SO/DXB/2026/0001).
Consolidated and per-branch reporting: because branch is a real field, it appears natively in pivot/graph views, filters, group-bys, and saved searches across Sales, Purchase, Inventory and Accounting.
Branch dimension on journal entries and analytic reporting for a per-branch P&L and balance view alongside the company-level financials.
Inter-branch transfer workflow: request, approve, ship, and receive stock between branches with linked pickings and a full move audit trail.
POS integration: each POS session and order inherits the cashier's branch, keeping retail sales attributable to the correct location.
Branch-aware QWeb report layouts — invoices, delivery slips, and POs print the originating branch's name, address, and details in the header.
Optional branch filter widget / default filter on the main list views so users land on their branch's records first, with one click to see all.
Automated actions (base.automation / server actions) to auto-stamp branch on records created via imports, XML-RPC/JSON-RPC API calls, or portal actions.
Access-matrix configuration screen for admins to map users → branches → allowed operations without editing security files by hand.
Compatible with Odoo 17, 18 and 19 on both Community and Enterprise, adapting field placement to what each edition exposes (e.g. Enterprise-only apps).

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Running several outlets, warehouses, or regional offices inside a single Odoo company usually forces an uncomfortable choice: either spin up a separate legal company per location — inheriting the full weight of inter-company invoicing, consolidation, and duplicated master data — or leave everything in one pool where every salesperson sees every order and every P&L blends into one number. The Multi-Branch / Multi-Location Operations Manager gives you the missing middle layer: a lightweight but pervasive Branch dimension that threads through Sales, Purchase, Inventory, Point of Sale, and Accounting without fragmenting your company into separate Odoo companies.

At the data layer, ECOSIRE adds a branch_id Many2one (to a new res.branch model) onto the operational documents that matter — sale.order, purchase.order, stock.picking, account.move, pos.order, and their lines where reporting needs it. Each user is assigned one or more allowed branches via a Many2many on res.users, and record rules (ir.rule) plus ir.model.access.csv entries enforce that a branch-scoped user only reads and writes documents belonging to their branch — while managers keep the consolidated view. Because it is a genuine field on the models, the Branch flows automatically into pivot views, graph views, filters, and group-bys, so consolidated-versus-per-branch reporting is native rather than bolted on.

We wire branch defaulting the Odoo way: computed defaults derived from the user's branch, @api.onchange/@api.depends propagation from order to lines to the resulting invoice and stock moves, and per-branch document sequences (ir.sequence) so each branch numbers its own quotations, invoices, and delivery orders (e.g. INV/DXB/2026/0001 vs INV/AUH/2026/0001). QWeb report headers pick up the branch address and details, POS sessions inherit the operator's branch, and an inter-branch transfer workflow lets one location request and receive stock from another with a clean audit trail. Everything is delivered as a proper installable module — a versioned __manifest__.py, models, security CSV/XML, views, and reports — tested and installed on your Odoo 17, 18, or 19 (Community or Enterprise) by our engineers.

This is a build-to-order engagement, not an instant apps.odoo.com download. After purchase, an ECOSIRE Odoo engineer confirms your exact scope (which apps carry the Branch dimension, your access matrix, your sequence scheme), builds and hardens the module against your version and edition, installs it in staging, migrates your existing records with a branch backfill, and hands over the source. Typical lead time is one working week depending on how many flows and the depth of the access model.

What you get

  • Installable Odoo module (source code) — __manifest__.py, Python models, security (ir.model.access.csv + record-rule XML), views, and QWeb reports — for your target version(s): 17, 18, and/or 19.
  • Scope-and-design document: the confirmed list of apps carrying the Branch dimension, your branch/access matrix, and the per-branch sequence scheme, signed off before build.
  • Staging installation and configuration on your Odoo instance, including res.branch records, per-user branch assignments, and sequence setup.
  • Data migration / backfill script that stamps branch_id onto your existing historical sales, purchase, stock, and accounting records where applicable.
  • Admin & end-user documentation: how branches, access rules, sequences, and inter-branch transfers work, plus a short how-to for adding new branches later.
  • A live handover / training session for your admins and key users, recorded for future reference.
  • Post-go-live support window (bug fixes and adjustments) plus a written summary of upgrade considerations for future Odoo version jumps.

Who this is for

Retail / franchise operations manager

Runs multiple stores or outlets on one Odoo instance and needs each location's sales, POS takings, and stock kept separate for accountability — but wants a single roll-up dashboard without maintaining a separate company per shop.

Multi-warehouse distribution / trading owner

Operates several warehouses or regional depots, needs branch-scoped delivery orders, per-branch PO numbering, and clean inter-branch stock transfers, while still consolidating purchasing and inventory value at the company level.

Finance controller / CFO of a multi-site SME

Wants a per-branch P&L and branch-tagged journal entries and invoice sequences for internal reporting and audit, without the overhead of inter-company eliminations that full Odoo multi-company would impose.

Odoo administrator / internal IT lead

Responsible for user access and data governance; needs record-rule-enforced branch isolation so staff only see their own branch's documents, configured through a maintainable module rather than ad-hoc filters and manual permissions.

How Multi-Branch / Multi-Location Operations Manager for Odoo Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Branch dimension across sales, purchase, stock, POS & accountingIncludedPossible but you build every model extension and integration point yourselfVaries — often covers only a subset of appsNot included
Branch-scoped access enforced by record rules (ir.rule)IncludedOnly if you design and test the security correctlySometimes; depth and correctness vary by authorPartial support
Per-branch document sequences (ir.sequence)IncludedYou wire ir.sequence per journal/document manuallySometimes includedNot included
Consolidated + per-branch reporting out of the boxIncludedDepends on how you model the fieldPartial — usually per-app, not unifiedNot included
Inter-branch stock transfer workflowIncludedBuilt from scratch on stock.pickingRarely includedPartial support
Keeps a single company (no inter-company overhead)IncludedYour call, but you own the design riskUsually yesNot included
Built, installed & tested on your exact Odoo 17/18/19 + editionIncludedOnly if you have in-house Odoo engineersNot includedNot included
Historical data backfilled with branch on existing recordsIncludedYou write and run the migrationNot includedNot included
Source code handover + upgrade notes + support windowIncludedYou already own itCode yes, tailored support/upgrade usually noNot included

Frequently Asked Questions about Multi-Branch / Multi-Location Operations Manager

How long does delivery take, and what happens after I buy?

This is a build-to-order engagement, not an instant download. Typical lead time is one working week depending on how many apps carry the Branch dimension and how deep your access model is. After purchase, an ECOSIRE Odoo engineer confirms scope (models to extend, your branch/access matrix, sequence scheme), builds and tests the module against your exact version and edition, installs it in staging, backfills your existing records, and then hands over the source and moves it to production with you.

How is this different from Odoo's built-in multi-company feature?

Multi-company splits your data into separate legal companies and brings inter-company invoicing, consolidation, and duplicated master data. This module keeps everything in one company and adds a lightweight Branch dimension instead — a res.branch model, a branch_id field on your operational documents, record-rule-based access isolation, and per-branch sequences and reporting. You get location-level accountability and roll-ups without the overhead of eliminations and cross-company setup.

What support and updates do I get, and does it survive Odoo upgrades?

Every build includes a post-go-live support window for bug fixes and adjustments. Because the module is delivered as clean, versioned source with a proper __manifest__.py, it upgrades with your Odoo like any addon — we hand over written upgrade notes, and when you move to a new major version (e.g. 18 → 19) we can port and re-test it as a follow-on engagement. You own the code, so you're never locked to us.

Which Odoo versions and editions are supported?

Odoo 17, 18, and 19, on both Community and Enterprise. We adapt field placement and integration points to what your edition exposes — for example, Enterprise-only apps or accounting features — and confirm the exact target during scoping so the module installs cleanly on your instance.

Will branch-scoped users be truly prevented from seeing other branches' data?

Yes. Isolation is enforced at the ORM level via ir.rule record rules combined with ir.model.access.csv, not just hidden columns or UI filters. A branch-scoped user reads and writes only records for their assigned branch(es); managers and admins keep the consolidated view. Because it's server-side, the rules also apply to XML-RPC/JSON-RPC API access, imports, and automated actions.

Can the Branch dimension flow into my reports and printed documents automatically?

Yes. Branch is a real field on the documents, so it appears natively in pivot views, graph views, filters, and group-bys — you can build consolidated or per-branch views of sales, purchases, stock, and P&L without extra tooling. QWeb report layouts (invoices, delivery slips, POs) are extended so each printout shows the originating branch's name and address in the header.

Request a quote

Multi-Branch / Multi-Location Operations Manager

A Branch dimension across sales, purchase, stock, POS & accounting — branch-scoped access, sequences & reporting, below full multi-company.

  • A new res.branch model with branch code, address, contact, linked warehouse and company — the single source of truth for the Branch dimension.
  • branch_id Many2one added to sale.order, purchase.order, stock.picking, account.move, and pos.order (plus lines where reporting requires it), with sensible computed defaults from the user's branch.
  • Per-user allowed-branches Many2many on res.users plus a default branch, so a user's activity is pre-filtered to where they actually work.
  • Branch-scoped data isolation via ir.rule record rules and ir.model.access.csv — branch users see only their branch's documents while managers retain the consolidated view.

Request a Quotation

Tell us about your Multi-Branch / Multi-Location Operations Manager requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.