A build-to-order Odoo module that adds analytic account and analytic tag fields to stock pickings and their moves, so inventory operations post to the right cost center, project, or dimension. ECOSIRE scopes, builds, installs, and supports it — this is a productized service, not an instant download. 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
Built around your workflow
A build-to-order Odoo module that adds analytic account and analytic tag fields to stock pickings and their moves, so inventory operations post to the right cost center, project, or dimension. ECOSIRE scopes, builds, installs, and supports it — this is a productized service, not an instant download.
No DIY setup — a working app, built, installed and supported by ECOSIRE.
Start with a one-time build price. We scope it with you at kickoff.
ECOSIRE builds, configures and installs it on your Odoo.
You go live in about 2–4 weeks, with a post-launch support window.
Odoo native ties analytic accounting almost entirely to financial and sales/purchase documents — invoices, vendor bills, timesheets, and expenses. Warehouse operations sit outside that loop: a stock.picking and its stock.move lines carry no analytic dimension, so when goods physically move between projects, cost centers, branches, or funding sources, there is no clean way to attribute that movement. Teams end up reconstructing the analytic split in spreadsheets after month-end, or forcing everything through manual journal entries that drift from the actual picking data. The gap widens in Odoo 17/18/19, where analytic is modeled as a multi-dimensional account.analytic.line structure (plan-based distributions rather than the legacy single-tag field), and stock simply does not participate.
This build-to-order module adds first-class analytic dimensions to the picking flow. We extend stock.picking and stock.move with an analytic_account_id (Many2one to account.analytic.account) and an analytic-tag / analytic-distribution field aligned to your Odoo version — a Many2many to the legacy account.analytic.tag on 17.0 where you still use tags, or a JSON analytic_distribution widget bound to your analytic plans on 18.0/19.0. Header-level values propagate to move lines via @api.onchange and a @api.depends compute, while still allowing per-line overrides for mixed pickings. Where you need the values to reach the general ledger, we hook _get_stock_valuation_layers / the account-move creation path so that valuation and inventory journal entries carry the analytic account and tags through to account.analytic.line, giving you real analytic reporting on stock movements instead of an after-the-fact estimate.
Technically, the work is a clean, upgrade-safe module: a dedicated __manifest__.py depending on stock and analytic (plus stock_account when GL propagation is in scope), model extensions via _inherit, view inheritance (XML xpath into the picking and operations forms, and OWL/list views for the move lines), and access control through ir.model.access.csv plus record rules so warehouse users can set dimensions without touching accounting configuration. Default analytic accounts can be derived from the source/destination stock.location, the operation type, or the linked project via automated actions, and every field is exposed over the XML-RPC / JSON-RPC API so external systems and integrations read and write the same dimensions. We add QWeb report touches (analytic columns on the picking / delivery slip) and optional pivot/group-by views so operations and finance share one source of truth. It is delivered against Community or Enterprise, with the Enterprise-only features (studio-style customizations, advanced analytic dashboards) respected rather than reimplemented.
Delivery is build-to-order: we start with a short scoping call to confirm your Odoo version, edition, which documents must carry analytics, whether GL propagation and multi-company are in play, and how default dimensions should be derived. You approve a fixed-scope quotation, we build on a staging clone of your database, run UAT with you, and deploy with a rollback plan. Typical delivery is 2–4 weeks from confirmed scope. Pricing starts from $249 (indicative, single-company base scope); multi-company setups, GL/valuation propagation, custom default-derivation logic, and migration of historical picking data increase the quoted scope.
Runs Odoo with inventory allocated across concurrent projects or job sites. Needs every transfer of materials to post to the right analytic account so project profitability reflects real stock consumption, not spreadsheet reconstructions.
Owns the analytic plan structure and month-end close. Wants warehouse movements to carry analytic dimensions all the way into account.analytic.line so cost-center reporting reconciles to actual picking activity without manual journal entries.
Confirms dozens of pickings a day and cannot become an accounting expert. Needs analytic account and tag fields available directly on the picking, defaulted intelligently and validated, so dimensions get captured at the point of movement.
Manages the Odoo instance and connected systems. Needs the analytic fields exposed over XML-RPC/JSON-RPC and an upgrade-safe module so external tools can read/write them and core Odoo updates do not break the customization.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Analytic on stock pickings | Purpose-built fields on pickings and moves, version-correct | Achievable but you design it from scratch | May exist but often single-version and rigid | |
| Odoo 17/18/19 analytic model | Implements tags or analytic_distribution per your version | Depends on your team's version knowledge | Frequently built for one version only | |
| GL / valuation propagation | Optional hook into account.analytic.line, scoped and tested | Possible but easy to get wrong at the valuation layer | Rarely covers the valuation path | |
| Fit to your process | Defaults, validation, and derivation matched to your workflow | Fully tailored but at full development cost | Generic behavior you must adapt to | |
| Upgrade safety | Isolated _inherit module, survives point updates | Only as safe as your team makes it | Varies; abandoned modules break on upgrade | |
| Support & accountability | Post-go-live support window and named delivery team | Tied to whoever built it staying available | Marketplace support quality is inconsistent | |
| Delivery model | Build-to-order: scope, staging build, UAT, rollback plan | Self-managed project with your own resources | Instant download, then you integrate and debug it | |
| Total cost of ownership | Indicative from $249, fixed quote after scoping | Highest — full dev, testing, and maintenance in-house | Low sticker price, hidden fit and upgrade costs |
No. This is a build-to-order module that ECOSIRE scopes, builds, installs, and supports specifically for your Odoo version and edition. You are commissioning a productized development service, not downloading finished software from an app marketplace.
Typical delivery is 2–4 weeks from confirmed scope. Timing depends on your Odoo version, whether GL/valuation propagation and multi-company are in scope, and any historical-data migration. We agree the timeline in writing before work begins.
Pricing starts from $249 as an indicative figure for a single-company base scope. We hold a short scoping call, then issue a fixed-price quotation for your exact requirements. Drivers like multi-company, GL propagation, custom default-derivation logic, and data migration adjust that quote. You approve the fixed quote before we build.
We build for Odoo 17.0, 18.0, and 19.0, on Community or Enterprise. Because analytic accounting changed from single tags to plan-based analytic distributions across these versions, we implement the correct field model for your specific version rather than forcing a one-size approach.
Every build includes a post-go-live support window for defect fixes and configuration adjustments. Because the module is written as an upgrade-safe _inherit extension with its own manifest, standard Odoo point updates will not overwrite it. Major version upgrades (for example moving to a new Odoo release) can be quoted as a separate engagement.
That is an optional scope item. In the base scope we add the analytic account and tag fields to pickings and moves for operational tracking. When GL propagation is in scope, we hook the stock valuation and inventory journal-entry path so the dimensions flow into account.analytic.line and appear in your analytic reporting.
Yes. All added fields are exposed over Odoo's XML-RPC and JSON-RPC API, so connected systems, integrations, and automation can set or read the analytic account and tags on pickings and moves the same way native fields work.
A build-to-order Odoo module that adds analytic account and analytic tag fields to stock pickings and their moves, so inventory operations post to the right cost center, project, or dimension. ECOSIRE scopes, builds, installs, and supports it — this is a productized service, not an instant download.