A build-to-order Odoo module that records every stage transition on your opportunities, measures how long deals sit in each stage, and surfaces stuck and aging pipeline so sales managers can act before deals go cold. ECOSIRE builds, installs, and supports it after you request a quotation. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.
Uygulama manifestosu
İş akışınıza göre tasarlandı
A build-to-order Odoo module that records every stage transition on your opportunities, measures how long deals sit in each stage, and surfaces stuck and aging pipeline so sales managers can act before deals go cold. ECOSIRE builds, installs, and supports it after you request a quotation.
Kendiniz kurmanıza gerek yok — ECOSIRE tarafından geliştirilen, kurulan ve desteklenen çalışır bir uygulama.
Tek seferlik geliştirme fiyatıyla başlayın. Kapsamı başlangıçta sizinle birlikte belirleriz.
ECOSIRE, Odoo ortamınızda geliştirir, yapılandırır ve kurar.
Yaklaşık 2–4 haftada yayına alırsınız; lansman sonrası bir destek süresi de dahildir.
Most sales managers running Odoo can see where an opportunity sits today, but not how it got there or how long it has been rotting in a stage. Odoo core stores only the current stage_id on crm.lead, and while the kanban tracks date_last_stage_update, it silently overwrites on every move — so the history of who moved what, when, and how long each stage actually took is lost. The mail.thread chatter logs stage changes as free-text messages, but you cannot report, filter, or sum durations from a chatter feed. The result: no reliable answer to "which deals have been stuck in Proposal for over 21 days?", no per-stage cycle-time analysis, and no early warning when pipeline goes stale.
We build a dedicated Odoo module that captures a durable, queryable stage-transition ledger and turns it into pipeline-aging intelligence. A new model (e.g. crm.stage.history) records one immutable row per stage change — lead_id, stage_from, stage_to, user_id, date_entered, date_left, and a stored computed duration_hours — written from an override of write() on crm.lead (and via an automated action / base automation fallback so bulk kanban drags and RPC updates are also captured). On crm.lead itself we add stored, indexed compute fields via @api.depends: days_in_current_stage, total_pipeline_age, is_stuck (a boolean driven by a configurable per-stage aging threshold you set on crm.stage), and last_stage_change. Because the aging fields are stored and indexed, they filter and group fast even on tens of thousands of leads, and a scheduled action (ir.cron) recomputes "stuck" flags nightly and can trigger the notifications you want.
On top of that data we build the reporting and UX: a crm.stage.history list/pivot/graph view for cycle-time analysis (average days per stage, per salesperson, per team), kanban and list decorations that visually flag stuck deals, a "Pipeline Aging" filterable dashboard, and a QWeb PDF aging report you can schedule or export. Security is done properly — ir.model.access.csv for the new model plus record rules so salespeople see only their own history while managers see the team's, matching your existing CRM access model. Everything is exposed over the standard XML-RPC/JSON-RPC API so BI tools or app.ecosire.com mirrors can read the aging data. The module targets Odoo 17.0, 18.0, and 19.0, works on both Community and Enterprise (Enterprise-only niceties like dashboard studio widgets are used only where present, with a Community-safe view fallback), and ships with a clean __manifest__.py declaring dependencies on crm alone so it drops into any CRM install.
Because this is build-to-order, nothing is downloaded from a marketplace — ECOSIRE scopes it to your stages, thresholds, and reporting needs on a short call, then builds, tests on a staging copy of your database, and installs it. Typical delivery is 2-4 weeks from confirmed scope. Pricing starts from $249 (indicative, single-company base scope); multi-company pipelines, historical back-fill of stage durations from existing chatter/audit data, deeper BI or external-dashboard integrations, and heavier data-migration volume increase the quoted scope. You get a fixed quote after the scoping call, not a surprise invoice.
Needs to know which deals are stalling and where the pipeline leaks. Wants per-stage cycle times, stuck-deal alerts, and an aging dashboard they can act on in the weekly pipeline review instead of eyeballing kanban.
Owns the CRM configuration and wants a maintainable module that respects existing access rules, installs cleanly across Community or Enterprise, and does not fork core `crm` behavior in fragile ways.
Builds the reporting and forecasts. Needs clean, queryable stage-duration data over the API to feed Power BI or external dashboards, plus reliable capture across bulk and RPC-driven stage moves.
Wants an honest, at-a-glance read on how fast deals move and whether the team is sitting on aging opportunities, delivered as a scheduled PDF without logging into Odoo daily.
| Kriter | ECOSIRE | Özel Yapı | Rakip | Odoo Yerlisi |
|---|---|---|---|---|
| Stage transition history | Immutable per-transition ledger with from/to, owner, and timestamps | Possible, but depends on your developer's design and time | Often a generic audit log, not CRM-aware | |
| Stage duration & cycle time | Stored computed duration per segment, pivot-ready | Buildable if specified up front | Sometimes shown, rarely reportable per stage | |
| Stuck / aging deal alerts | Configurable per-stage thresholds + nightly cron notifications | Requires you to design the rules and scheduler | Fixed or limited thresholds | |
| Capture across bulk & API moves | write() override plus base-automation fallback covers all paths | Easy to miss RPC/bulk paths without care | Varies; often single-path only | |
| Fit to your stages & process | Scoped to your pipeline before we build | Fully bespoke, at full bespoke cost | Generic; you adapt to its assumptions | |
| Security model | Dedicated access rights + record rules matching your CRM | Depends on developer diligence | Generic access, may over-share | |
| Support & code ownership | Support window, git handover, you own the source | Tied to whoever built it | Vendor-dependent, license-bound | |
| Odoo 17/18/19 & Community/Enterprise | Built for your exact version, both editions | Whatever you scope and pay to maintain | May lag new versions or need re-purchase |
This is a build-to-order module, not an instant download. After a short scoping call to confirm your stages, aging thresholds, and reporting needs, typical delivery is 2-4 weeks from confirmed scope — including a build, testing on a staging copy of your database, UAT, and production install.
Pricing starts from $249 as an indicative from-price for a single-company base scope. The final number depends on drivers like multi-company pipelines, historical data back-fill, BI/external-dashboard integrations, and migration volume. You get a fixed written quote after the scoping call — never a surprise invoice.
Every build includes a post-go-live support window for defect fixes and configuration tuning, plus full git repository handover so you own the code. We can also quote an ongoing support and version-upgrade retainer if you want us to maintain it across future Odoo releases.
Yes. Capture is hardened across all entry paths — a `write()` override on `crm.lead` plus a base-automation fallback — so single edits, bulk kanban drags, imports, and `XML-RPC`/`JSON-RPC` updates all record a history row. That is a key gap in relying on chatter alone.
It works on both. The core stage-history ledger, aging fields, security, and QWeb reports are Community-safe. Enterprise-only conveniences (such as certain dashboard widgets) are used only where present, with a Community-compatible view fallback. We build for Odoo 17.0, 18.0, and 19.0.
Where the underlying data exists in your chatter or audit trail, we can run a one-time historical back-fill to reconstruct prior stage durations and validate the results. The volume and data quality of that history is one of the scope drivers reflected in your quote.
Properly. The new `crm.stage.history` model ships with `ir.model.access.csv` access rights and `record rules` that mirror your existing CRM visibility — salespeople see their own history, managers see the team's — so aging data never leaks across the access boundaries you already enforce.

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 2Checkout (Verifone) payment integration for ERPNext, giving global digital-goods sellers card acceptance, 45+ local payment methods, multi-currency checkout, and reconciled invoices. ECOSIRE scopes, builds, installs, and supports it on your ERPNext v15/v16 instance.

A build-to-order 2Checkout / Verifone payment gateway for Magento 2 and Adobe Commerce: localized checkout in 12 languages, iDEAL, Giropay and regional methods, multi-currency global selling, subscription billing and tax/invoicing automation — engineered, installed and supported by ECOSIRE.
A build-to-order Odoo module that records every stage transition on your opportunities, measures how long deals sit in each stage, and surfaces stuck and aging pipeline so sales managers can act before deals go cold. ECOSIRE builds, installs, and supports it after you request a quotation.