A build-to-order Odoo module that propagates analytic accounts and cost centers onto POS orders and their generated journal entries, so point-of-sale revenue and costs land in the right analytic buckets automatically. Scoped, built, installed, and supported by ECOSIRE. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.
App-Manifest
Auf Ihren Workflow zugeschnitten
A build-to-order Odoo module that propagates analytic accounts and cost centers onto POS orders and their generated journal entries, so point-of-sale revenue and costs land in the right analytic buckets automatically. Scoped, built, installed, and supported by ECOSIRE.
Keine Selbsteinrichtung — eine funktionierende App, die von ECOSIRE erstellt, installiert und betreut wird.
Starten Sie mit einem einmaligen Entwicklungspreis. Den Umfang legen wir beim Kickoff gemeinsam fest.
ECOSIRE erstellt, konfiguriert und installiert sie auf Ihrem Odoo.
Sie gehen in etwa 2–4 Wochen live, mit einem Support-Zeitraum nach dem Launch.
Finance teams that run a busy point of sale hit the same wall every close: POS sessions post thousands of order lines to the accounting journals, but Odoo core has no clean way to stamp an analytic account or cost center onto those postings. Out of the box, pos.order and pos.order.line carry no analytic dimension, and the session-close journal entries that Odoo generates from pos.session inherit whatever the income/expense accounts default to — which is usually nothing analytic at all. The result is that shop-floor, branch, department, or campaign profitability has to be rebuilt by hand in spreadsheets, and your account.analytic.line reporting has a blind spot exactly where a large share of transaction volume flows.
We build a module that closes that gap end to end. On the data side we extend pos.config, pos.order, and pos.order.line with analytic fields (typically an analytic_account_id Many2one to account.analytic.account, and for Odoo 17+ optional support for the analytic_distribution JSON widget so a single line can split across multiple plans/cost centers). Defaults cascade the way a controller expects: a cost center configured on the POS config or the salesperson/point-of-sale flows down to the order, and can be overridden per order or per line. The heavy lifting happens where the accounting is actually created — we override the session-close move generation (_create_account_move / the _prepare_...move_line helpers on pos.session, exact hook names vary by 17.0/18.0/19.0) so that every generated account.move.line carries the resolved analytic distribution. Because Odoo posts the analytic entries from the move lines, your account.analytic.line records and Analytic Accounting reports populate automatically, with no manual re-tagging at month end.
The module is engineered to survive your real environment, not a demo. Analytic resolution is centralized in a compute/helper method with @api.depends so it stays correct when orders are edited, refunded, or split; refunds and returns propagate the same analytic account as the original line so credits net cleanly. We respect Community vs Enterprise differences (Enterprise's analytic plans/distribution UX vs Community's simpler analytic account model) and gate the behavior accordingly. Access is governed through ir.model.access.csv plus record rules where multi-company scoping matters, new fields are surfaced in the backend pos.order form and list views (XML/OWL) and on the relevant QWeb accounting reports, and — where you need it — we can push the selector into the POS front-end screen itself so cashiers or supervisors pick a cost center at the register. Everything is exposed over the standard XML-RPC/JSON-RPC API so external BI or consolidation tools can read the analytic dimension programmatically.
Delivery is build-to-order: you request a quotation, we run a short scoping call to pin down your Odoo version, edition, chart-of-accounts and analytic-plan structure, and whether you need front-end capture or back-office only. We then build against a staging copy of your database, run UAT with you, and deploy with a rollback plan. Typical delivery is 2-4 weeks from confirmed scope. This is not an existing download you install yourself — it is a made-to-order module we develop, install, and support for your specific configuration.
Pricing starts from $249 (indicative, single-company base scope); multi-company deployments, front-end POS capture, multi-plan analytic_distribution splits, and historical data migration of past POS sessions increase the quoted scope. You receive a fixed quote after the scoping call.
Runs several POS locations on one Odoo database and needs per-branch and per-department profitability without exporting session data to spreadsheets. Wants cost centers stamped on every POS journal entry so analytic reports are trustworthy at close.
Implementing Odoo POS for a client whose analytic accounting requirements exceed core. Needs a maintainable, version-matched module with clean hooks and a git handover rather than a brittle in-house patch.
Operates outlets as cost centers and reports margin per site and per campaign. Needs cashiers or supervisors to capture the right analytic dimension at the register and have it flow straight into accounting.
Consolidates multiple companies and wants POS revenue and cost tagged with analytic accounts that external BI tools can read over the API, so point-of-sale volume stops being a reporting blind spot.
| Kriterium | ECOSIRE | Benutzerdefinierter Build | Konkurrent | Odoo Native |
|---|---|---|---|---|
| Analytic accounts on POS journal entries | Built into the session-close move generation; every line tagged | Achievable but you design and maintain the hooks yourself | Often tags orders but may miss session-close move lines | |
| Odoo version fit (17/18/19) | Version-specific build matched to that release's POS hooks | Depends on your developer's familiarity with each release | Depends on when the listing was last updated | |
| Front-end (register) cost-center capture | Optional OWL selector added to scope on request | Possible with extra in-house POS front-end work | Rarely included; usually back-office only | |
| Refund and return handling | Original line's analytic account propagated so credits net | Must be designed and tested by your team | Varies; may leave refunds untagged | |
| Multi-company and access control | ir.model.access.csv plus record rules scoped to your setup | Your responsibility to implement and test | Generic rules, not tuned to your company structure | |
| Fit to your chart of accounts and analytic plans | Configured to your accounts during install | Fully custom but at full custom cost and timeline | Generic; you adapt your data to the module | |
| Ownership and maintainability | Full git repo handover with commit history and tags | You own it, but you also build it from zero | Vendor-controlled; source may be obfuscated | |
| Support and delivery model | Scoped build, UAT on staging, rollback plan, support window | Only what your internal team provisions | Ticket-based; no scoping to your environment |
No. This is a build-to-order module. After you request a quotation we scope your requirements, then build, install, and support the module for your specific Odoo version and configuration. It is not an off-the-shelf apps.odoo.com download.
Typical delivery is 2-4 weeks from confirmed scope. The timeline depends on your Odoo edition, whether you need front-end POS capture, multi-company scoping, and any historical data migration. We give you a firm schedule with the fixed quote after the scoping call.
Pricing starts from $249 (indicative, single-company base scope). We hold a short scoping call to confirm your Odoo version, edition, chart of accounts, and analytic-plan structure, then issue a fixed quote. Multi-company, front-end capture, multi-plan analytic_distribution splits, and data migration increase the quoted scope.
We build version-specific releases for Odoo 17.0, 18.0, and 19.0, and we handle both Community and Enterprise. Enterprise's analytic plans and analytic_distribution UX and Community's single analytic account model are supported with edition-appropriate behavior — we confirm which applies to you during scoping.
Every engagement includes a post-go-live support window for defect fixes and configuration adjustments. Because you receive the full git repository, your team can maintain it too. We can quote a separate maintenance or version-upgrade agreement (for example, when you migrate to a newer Odoo release) after the window ends.
Refunds and returns propagate the original line's analytic account by design, so credits net cleanly. Applying analytic accounts to historical POS sessions is a data-migration task — we can include it in scope, and its volume is one of the drivers that affects the final quote.
Both are possible. Base scope resolves the analytic account from defaults on the POS config and order. If you need cashiers or supervisors to choose a cost center on the POS screen itself, we add an OWL front-end selector — this is an optional scope item confirmed on the scoping call.

A build-to-order Odoo localization that loads Algeria's full wilaya and commune hierarchy with bilingual French and Arabic names, wired into partner addresses and reporting. ECOSIRE builds, installs, and supports it after your quotation.
A build-to-order Odoo module that propagates analytic accounts and cost centers onto POS orders and their generated journal entries, so point-of-sale revenue and costs land in the right analytic buckets automatically. Scoped, built, installed, and supported by ECOSIRE.