A build-to-order Odoo module that lets your buyers upload a CSV or Excel file and drop dozens or hundreds of validated lines straight onto a purchase order. ECOSIRE builds, installs, and supports it for Odoo 17, 18, and 19. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.
アプリマニフェスト
あなたのワークフローに合わせて構築
A build-to-order Odoo module that lets your buyers upload a CSV or Excel file and drop dozens or hundreds of validated lines straight onto a purchase order. ECOSIRE builds, installs, and supports it for Odoo 17, 18, and 19.
自分での設定は不要 — ECOSIRE が構築・インストール・サポートする実働アプリです。
一回限りの構築料金から始めます。キックオフで一緒に範囲を決めます。
ECOSIRE がお客様の Odoo 上で構築・設定・インストールします。
約2〜4週間で稼働し、リリース後のサポート期間が付きます。
Every procurement team eventually hits the same wall: a supplier sends a quotation, a reorder sheet, or a container packing list as a spreadsheet, and someone has to retype it line by line into a purchase order. On an RFQ with 80 or 200 lines that is an hour of manual entry per order, and every keystroke is a chance to fumble a quantity, a unit price, or a product reference. Odoo's core purchase.order form is excellent for building an order interactively, but it has no native "bulk paste from a spreadsheet" path on the order lines. The standard import tooling operates at the top level (creating whole records from a flat file) rather than appending many purchase.order.line records onto the order a buyer is already editing, so teams fall back to retyping or to fragile external scripts that hit the API and bypass the on-form logic.
This is a made-to-order module that ECOSIRE builds for your database. It adds an import action directly on the purchase order — typically a button in the header and a wizard (models.TransientModel) that accepts a .csv, .xls, or .xlsx upload, parsed server-side with Python's csv module and openpyxl/xlrd. The wizard presents a column-mapping step so your file's headers ("SKU", "Qty", "Unit Cost", "Supplier Ref", "Description") map onto Odoo fields, and product matching resolves each row against internal reference (default_code), barcode, or the supplier product code on product.supplierinfo. Rows are validated before anything is written: unknown products, non-numeric quantities, blank required cells, and unit-of-measure mismatches are collected into a per-row error report rather than silently dropped, so the buyer sees exactly what to fix.
Under the hood the module respects the same business logic a manual line would trigger. Prices, taxes, and the date_planned follow Odoo's normal onchange/compute behavior unless your file supplies an explicit override; analytic distribution and per-line descriptions are honored; and everything runs through ir.model.access.csv plus any record rules already in place, so a user who cannot edit purchase orders cannot import into them. We wire the views in XML (with OWL where the version calls for it), keep the manifest clean in __manifest__.py, and ship the same feature tuned to whichever release you run — 17.0, 18.0, or 19.0 — accounting for Community versus Enterprise field differences where relevant.
Because it is build-to-order, nothing downloads instantly. After a short scoping call we confirm the exact file formats, column map, product-matching keys, and edge cases your suppliers throw at you, then quote a fixed price and build against your Odoo version on a staging database. Typical delivery is 2–4 weeks from confirmed scope, followed by UAT, go-live, and a support window. Pricing starts from $249 (indicative, single-company base scope); multi-company setups, additional file layouts or supplier-specific templates, deeper localization, and large historical data-migration volumes increase the quoted scope.
Runs high-line-count RFQs and reorders from supplier spreadsheets and wants buyers to load an entire order in seconds instead of retyping, without losing tax, UoM, or pricelist logic.
Owns the Odoo instance and needs a clean, upgrade-safe module scoped to their version and access rules, delivered with a git repo and docs rather than a one-off script that bypasses the ORM.
Handles container packing lists and long product manifests and needs reliable product matching by SKU or barcode with a clear error report for rows that do not match.
Cares that imported lines carry correct unit costs, taxes, and analytic distribution so downstream vendor bills and cost reporting stay accurate and auditable.
| 基準 | エコシエール | カスタムビルド | 競合他社 | オドゥー ネイティブ |
|---|---|---|---|---|
| Fit to your suppliers' files | Built around your real column layouts and matching keys | Whatever your team codes, if they have Odoo depth | Fixed format; you adapt your files to it | |
| Product matching | Internal ref, barcode, or supplier code, priority configurable | Depends on the developer's design | Usually one fixed key | |
| Row validation | Per-row error report before any write | Must be built and tested deliberately | Often minimal; may fail silently | |
| Respects taxes / UoM / pricelist logic | Runs through standard line logic | Easy to bypass and get wrong | Varies by module | |
| Access control | Enforced via `ir.model.access.csv` + record rules | Only if the developer wires it | Generally standard rights | |
| Odoo version fit | Built and tuned for your 17/18/19 edition | You maintain version compatibility | Depends on vendor's version coverage | |
| Support & handover | Support window + git repo + docs + training | In-house knowledge only | Vendor ticket queue, generic | |
| Cost model | Fixed quote after scoping, from $249 indicative | Developer time, open-ended | Low list price, rigid scope |
Because this is build-to-order, it is not an instant download. After a scoping call to confirm your file formats, column map, and matching rules, typical delivery is 2–4 weeks from confirmed scope. That includes building against your Odoo version, UAT on staging, and go-live.
Pricing starts from $249 as an indicative single-company base figure. We hold a short scoping call, confirm the exact requirements, then give you a fixed quote before any build begins. Multi-company setups, extra supplier templates, deeper localization, and large data-migration volumes increase the quoted scope.
Every build includes a post-go-live support window for defect fixes and questions. We build for your specific release (17.0, 18.0, or 19.0) and hand over the git repository so future upgrades are straightforward; we can also quote an ongoing maintenance arrangement for version migrations.
The wizard handles `.csv`, `.xls`, and `.xlsx`, parsed server-side. We build and tune the same feature for Odoo 17.0, 18.0, and 19.0, on both Community and Enterprise, accounting for field differences between editions where relevant.
Rows match against internal reference (`default_code`), barcode, or the supplier product code on `product.supplierinfo`. We configure the match priority with you during scoping. Rows that do not match are reported per-row so a buyer can correct them, rather than being silently dropped.
Yes. The import runs through Odoo's standard line logic, so taxes, `date_planned`, and unit-of-measure resolution behave as they would for a manually entered line. You choose whether to use the file's unit cost or let Odoo compute price from the vendor pricelist and `product.supplierinfo`.
No. The import wizard is governed by `ir.model.access.csv` and any existing record rules. A user who cannot edit purchase orders cannot import lines into them, and every import writes an audit note to the order chatter.
A build-to-order Odoo module that lets your buyers upload a CSV or Excel file and drop dozens or hundreds of validated lines straight onto a purchase order. ECOSIRE builds, installs, and supports it for Odoo 17, 18, and 19.