- 首页
- Apps
- SaaS Tools
- All in One Price History with Report
示意预览A made-to-order Odoo module that records every product price change over time and turns it into audit-ready reports.
ECOSIRE builds, installs, and supports it for your Odoo 17/18/19 database after a scoping call.
什么是 All in One Price History with Report?
A made-to-order Odoo module that records every product price change over time and turns it into audit-ready reports. ECOSIRE builds, installs, and supports it for your Odoo 17/18/19 database after a scoping call. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
核心功能
按需定制,全程代劳
无需自行搭建——由 ECOSIRE 构建、安装并提供支持的可用应用。
- 1
您下单
以一次性构建价格开始。我们在启动时与您共同确定范围。
- 2
我们构建与安装
ECOSIRE 在您的 Odoo 上构建、配置并安装。
- 3
上线 + 支持
约一个工作周内上线,并包含两周上线支持。我们交付的代码中的缺陷免费修复。
技术规格
- Odoo 兼容性
- Odoo 17, Odoo 18, Odoo 19
- 版本
- 企业版和社区版
- 许可证
- 许可证需要确认
- Python 要求
- Python 3.10+
- 数据库
- PostgreSQL 12+
关于此产品
Odoo stores the current sales price on product.template.list_price and the current cost on product.product.standard_price, but it keeps almost no durable record of how those numbers moved over time. When a customer disputes a quotation, a controller asks why margin slipped last quarter, or an auditor wants to see who raised a cost and when, the answer usually lives in scattered pricelist edits, manual spreadsheets, or nobody's memory. Native price history is limited to the property-field tracking on standard_price and whatever mail.thread chatter happens to have logged — there is no unified timeline, no report, and no way to compare a product's price trajectory across sales, purchase, and pricelists in one place. That is the road native Odoo runs out of.
This build-to-order module gives every price a first-class, immutable history. We add a dedicated price.history model (models.Model) that captures a row on each meaningful change — the product, the price type (sales list price, cost/standard price, pricelist rule, vendor purchase price), the old and new value, the currency, the responsible user, the source document, and a timestamp. Capture is wired both ways: @api.depends-driven compute and write() overrides on product.template/product.product catch in-app edits, and Odoo's automated actions plus the ORM hooks catch programmatic and pricelist-driven changes, so history is recorded whether a price moves through the UI, an import, or the XML-RPC/JSON-RPC API. Records are access-controlled through ir.model.access.csv and record rules so history is read-only to most users and never silently editable, which is what makes it audit-grade rather than just another log.
On top of the data we build the reporting layer you actually came for. That means QWeb PDF reports (price-change statement per product, per period, per responsible user, and a margin-movement view that pairs cost against sales price), list/pivot/graph views for interactive slicing in the Odoo client, and OWL-based widgets where a richer in-form timeline helps. Reports are multi-currency aware and respect company boundaries in multi-company databases. Everything is delivered against your exact Odoo edition and version — we account for Community vs Enterprise differences (for example, Enterprise-only pivot/dashboard niceties are substituted with Community-safe equivalents when your database is Community) and we target Odoo 17.0, 18.0, or 19.0 specifically rather than shipping a lowest-common-denominator build.
Delivery is build-to-order: nothing is downloaded from a marketplace today. After a short scoping call we confirm the exact price types you need tracked, your reporting formats, and any migration of existing history, then build against a staging copy of your database, run UAT with you, and deploy with a rollback plan. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); multi-company consolidation, tracking additional price sources such as landed costs or bulk vendor pricelists, deep localization, and migrating large volumes of historical price data increase the quoted scope.
你得到什么
- Installable module source code built for your exact Odoo version (17.0 / 18.0 / 19.0) and edition, with a clean `__manifest__.py`
- Installation and configuration on your staging environment, including access-rights and record-rule setup
- Technical documentation: model schema, capture points, security model, and report template reference
- End-user guide plus a live training session for your team on reading and exporting the reports
- UAT on a staging copy of your database with a documented rollback plan before production deployment
- Post-go-live support window for defect fixes and configuration adjustments
- Git repository handover with full commit history and tagged release for your version
- Optional migration of existing price history from spreadsheets or prior fields, scoped separately
这是给谁的
Finance controller / CFO office
Needs a defensible audit trail of how sales prices and costs moved, who changed them, and when — for margin reviews, disputes, and external audits. Wants clean PDF statements, not exported chatter.
Odoo administrator / internal ERP team
Runs the Odoo database and wants price history captured across UI, imports and API writes without bolting on brittle spreadsheets. Needs a maintainable, access-controlled module they can own via the handed-over git repo.
Sales / pricing operations manager
Manages pricelists and promotional rules and needs to see the full trajectory of a product's price, including tiered and time-bound rules, to justify quotes and analyze pricing decisions over time.
Procurement / purchasing lead
Tracks vendor price movements from `product.supplierinfo` to negotiate better, spot cost creep early, and reconcile buying prices against sales margin in one report.
All in One Price History with Report 如何比较
| 标准 | 伊科西尔 | 定制建造 | 竞争对手 | Odoo 原生 |
|---|---|---|---|---|
| Price history depth | Full timeline across sales price, cost, pricelist rules and vendor prices | Whatever you spec and budget for | Usually base price and cost only | No durable multi-source history; only limited cost tracking |
| Reporting | QWeb PDF statements plus pivot/graph, margin-movement view | Built to spec but you fund every report | Basic list or a single report layout | No dedicated price-history report at all |
| Fit to your version/edition | Built and tested for your exact 17/18/19 and Community vs Enterprise | Fully bespoke but you own all the risk | Generic build across versions, edition gaps common | Whatever ships with core |
| Capture coverage | UI, imports and XML-RPC/JSON-RPC API writes all recorded | Depends on developer diligence | Often UI edits only | Minimal, mostly chatter on cost |
| Audit control | Read-only rows via access rules and record rules | Only if explicitly built | Rarely enforced | Not designed for audit |
| Support & handover | Support window, training, and git repo handover | Depends on the contractor | Vendor ticket queue, no source ownership | Community forums only |
| Time to value | one working week from confirmed scope, deployed for you | Often months of build and iteration | Instant install but frequent rework to fit | Immediate but capability simply absent |
| Total cost of ownership | Fixed quote from ~$999 base, you own the code | Highest — full dev plus ongoing maintenance | Low sticker price, hidden fit and upgrade costs | Free but the gap stays unsolved |
关于All in One Price History with Report的常见问题
Is this an existing app I can download and install right now?
No. This is a build-to-order module. ECOSIRE builds it for your specific Odoo version, edition and price sources after a scoping call, then installs and supports it. There is no instant marketplace download — you receive a version made and tested for your database.
How long does delivery take?
Typical delivery is one working week from confirmed scope. The timeline starts once we've agreed on which price types to track, your reporting formats, and any historical-data migration on the scoping call. Larger multi-company or migration-heavy scopes sit at the upper end.
How does pricing and scoping work?
Pricing starts from $999 as an indicative from-price for a single-company base scope. After a short scoping call we confirm exact requirements and send a fixed quote. Multi-company consolidation, extra price sources, localization depth and historical-data migration volume increase the quoted scope.
Which Odoo versions and editions are supported?
We build for Odoo 17.0, 18.0 and 19.0, on both Community and Enterprise. We target your exact version and account for Community vs Enterprise differences — for example substituting Enterprise-only dashboard views with Community-safe pivot and graph views where needed.
What about support and updates after go-live?
Every engagement includes a post-go-live support window for defect fixes and configuration tweaks. Because you receive the git repository, your own team can maintain it, and we can quote a separate support retainer or a version-upgrade engagement when you move to a newer Odoo release.
Can it capture price changes made through imports or the API?
Yes. Capture is wired at the ORM level via `write()` overrides and automated actions, so changes are recorded whether they come from the Odoo UI, a data import, or programmatic writes over the XML-RPC/JSON-RPC API — not just manual edits.
Is the price history editable or tamper-proof?
History rows are read-only to standard users through `ir.model.access.csv` and record rules, so the trail cannot be silently altered. That access model is what makes the reports usable for audit and dispute resolution rather than just informal logging.
相关模块
All in One Price History with Report
A made-to-order Odoo module that records every product price change over time and turns it into audit-ready reports. ECOSIRE builds, installs, and supports it for your Odoo 17/18/19 database after a scoping call.
- Dedicated `price.history` model storing product, price type, old value, new value, currency, responsible user, source document and UTC timestamp per change
- Capture on sales list price (`product.template.list_price`) and cost (`product.product.standard_price`) via `write()` overrides plus `@api.depends` computes
- Pricelist-rule change tracking (`product.pricelist.item`) so promotional and tiered price movements are recorded, not just the base price
- Vendor/purchase price capture from `product.supplierinfo` to see how buying prices from suppliers evolved over time



