Skip to main content

Purchase Order Import

Purpose​

Purchase Order Import brings supplier CSV or XLSX lines into an existing request for quotation. It reads explicitly chosen file settings, maps columns, resolves products and creates a reviewable batch before changing the RFQ. You can append lines, update matching lines, or replace lines previously created by this importer.

The app extends Purchase. Preview creates import history and retains the source file; Commit Import performs the planned RFQ changes. It does not confirm the purchase order.

Before you start​

Install the 19.0 package with native Purchase/Inventory (purchase_stock) and the Python libraries openpyxl and xlsxwriter. No Enterprise-only addon is declared. An administrator must supply the libraries and matching package. Dependencies differ in older releases, as described below.

Select a vendor on an unlocked draft or sent RFQ. Prepare unambiguous product identifiers, units, supplier information and currency rates. The workbook must contain ordinary values rather than formulas.

This guide follows the 19.0 source workflow. Other listed releases received selected source comparisons; no runtime import was executed for this guide.

Access and roles​

Purchase users can import into RFQs they may read and write, and inspect their own import batches within allowed companies. Purchase managers can manage Purchase Import Presets, view other permitted users’ batches and retry a failed import.

Creating unknown products requires the additional Create Products from Purchase Imports group, the company setting, and product creation rights. It is not enabled merely by selecting a checkbox in the upload wizard. Managers configure Purchase Import Settings for the company.

Setup and menu​

Use Purchase Import Presets under Purchase configuration for repeated vendor layouts. A preset stores format, parsing choices, matching order and column mappings. It must belong to the RFQ’s company and, if vendor-specific, match the RFQ vendor.

On an RFQ, use Import Lines to open Import Purchase Lines. Sample CSV and Sample XLSX provide starting files. Purchase Import History is available under reporting, and the RFQ has an import-history smart button.

Workflow​

  1. Select the source file and its format. Set the header row, decimal separator and date format. For CSV, choose delimiter and encoding; for XLSX, enter the worksheet name. The importer does not guess these settings.
  2. Select Read Headers. Map Quantity and at least one product lookup column: supplier code, barcode, internal reference or an explicitly enabled exact product name. Each target field can be mapped only once. Review optional prices, units, dates, taxes and analytical information.
  3. Choose the import mode. Append adds lines. Update Matching Lines targets a uniquely matching product and unit. Replace Imported Lines removes the RFQ’s previously imported commercial lines before applying the batch; it requires the replacement confirmation. Review that scope before selecting it.
  4. Choose Keep Separate, Merge Compatible, or Reject Later Rows for duplicates. If intentionally reusing a file already previewed for this RFQ, enter a re-import reason. Product matching follows the configured order and rejects ambiguous results instead of choosing one arbitrarily.
  5. Select Preview. Review valid, warning, duplicate and rejected totals, planned actions, quantities, units, prices, discounts, taxes and correction messages. Rejected rows remain in history and do not change the RFQ. Preview itself does not add order lines or create unknown products.
  6. Select Commit Import only after reviewing the batch. The app rechecks the RFQ, source file, saved preview and supplier-selection inputs. A successful batch becomes Committed and records affected lines and a note on the RFQ.
  7. Review the resulting RFQ. Export corrections in CSV or XLSX from the batch for rejected rows. If a transactional commit fails, the batch becomes Failed and its error explains that purchase changes were not kept. A Purchase manager can use Retry Import, review a fresh preview and commit again.

Practice scenario​

In an authorised test database, fictional Cedar Stationery sends a CSV with two known supplier product codes and one unknown code. Use an RFQ for Cedar and Append mode, with product creation disabled. Map supplier code, quantity and price, then preview. The source-derived expectation is reviewable known-product rows and a rejected unknown-product row. Commit the accepted rows and inspect their resulting quantities and prices. This scenario was not executed.

Next, preview a revised file and change an RFQ line before committing it. The expected stale-preview check asks for a fresh preview instead of applying the earlier plan.

Troubleshooting and limitations​

Uploads are limited to 10 MiB, 10,000 rows, 100 columns and 32 KiB per cell. The filename extension must match the selected format. XLSX formulas, macros, encrypted content and external workbook links are rejected. Choose the exact worksheet name and non-empty unique headers.

For an ambiguous match, correct the product identifier or supplier data. For a unit, tax, currency or analytical error, correct the source and master data before previewing again. Missing conversion rates and incompatible units must be resolved rather than overridden by the importer.

A stale RFQ or altered source/preview requires a new preview. A committed batch cannot be committed again. Replace Imported Lines is not an undo for an entire order, and importing does not validate receipts, create vendor bills or confirm purchases.

Qualified catalogue versions are 15.0, 16.0, 18.0, 19.0 and 20.0; 17.0 source exists without a qualified live-demo pair here. Versions 15–16 declare xlrd and xlsxwriter, so verify the installed reader’s XLSX support. Version 15 also depends on base_sparse_field and uses analytical accounts/tags instead of the modern distribution. Older branches reject supplied discounts when native purchase-line discounts are unavailable. Version 20 adapts unit and binary-file access to its native APIs. These differences require the matching version package.

Live Test — Odoo 19.0 · Choose your exact Odoo version in the Corvus catalogue.

Related guides: Purchase Price History and Purchase MOQ & Freight cover checks that may run when the resulting RFQ is confirmed.