Skip to Content
Custom Engineering

Custom Engineering / Nimex Solutions

Smart Import & Reporting Systems

Catalogues, bills of materials, purchase offers and journal entries arrive as spreadsheets, and quotations, packing lists, customs papers and labels must leave as documents. We engineered importers that test first, run in the background and log every row, and reports that print from the records in the recipient's language.

The problem

One spreadsheet row, eight kinds of Odoo record.

A supplier's catalogue row carries a product reference, names in two languages, a vendor with a currency, price, discount and minimum quantity, a sales price, customs code, packed size and weight, a category path, technical attributes and a picture name. In Odoo those land in different records, and the standard import takes one model per pass, cannot pull images out of a ZIP and gives up on large files in the browser.

So companies re-key. Purchasing types supplier offers into purchase orders, sales copies a customer's list into a quotation, accounting re-enters journal entries from another system, and the same data is typed again into proformas, packing lists and customs papers. Every retyped figure is a chance for an error that nobody can trace back to its source row.

What we engineered

An import engine, the importers on top of it, and the documents that come out.

The import engine

  • Detached background thread with its own database cursor: no browser timeout, the user keeps working.
  • Test before writing: headers validated, the canonical header row found, duration estimated as 8 s + 0.18 s per row.
  • Persistent log: Draft, In Progress, Finished, Failed; imported, updated, skipped and error counters; row-by-row log text; the uploaded files kept as attachments.
  • One savepoint per row: a failing row is rolled back and logged, the rest is committed.

Importers built on it

  • Commercial products: bilingual names and descriptions, vendor price lists, local prices, customs codes, dimensions, categories, images from a ZIP, technical attributes.
  • Manufacturing: finished goods, in-house and subcontracted semi-finished parts, raw materials, each with its routes; bills of materials in blocks, subcontracted ones included, with a missing-items XLSX.
  • Laboratory and trading catalogues: multi-sheet workbooks with a dry run per sheet, header auto-detection, HS codes and customs texts.
  • Purchase orders, quotation lines and journal entries, each with a Test pass and a per-row log.

Documents and labels

  • Bilingual quotation letters, detailed quotations and proformas with a per-tax breakdown.
  • Export packing lists, the customs set from the delivery, an Azerbaijani handover act.
  • A paper service report rebuilt as a Field Service worksheet the customer signs on the phone.
  • Bilingual 2 × 2 serial labels with the order position, white-label variant with the customer's logo.

How it works

From the supplier's file to the printed packing list.

  1. Download the template

    An XLSX with the fixed column set, an explanation row in Turkish and dropdown validation where values are restricted.

  2. Upload the sheet and the images ZIP

    The importer finds the canonical header row even below title rows, so the supplier's own sheet layout is tolerated.

  3. Test

    Headers are validated and the run is estimated, for example 1,200 rows: 8 s + 0.18 s × 1,200 = 224 s, about 4 minutes. Nothing is written yet.

  4. Start Import

    A log record is created in Draft and switches to In Progress; the job runs in a background thread while the user carries on.

  5. Follow the log

    Each row is processed in its own savepoint and logged as created, updated, skipped or error, with warnings such as an image missing from the ZIP.

  6. Finished or Failed

    Finished when every row went through; Failed when any row errored, with the counters stored and every other row committed. See Products opens what was written.

  7. Print from the records

    Quotations, proformas, packing lists, customs papers and labels print from the sales order, the delivery or the lot, using the data the import loaded.

Integration points

Files in, standard Odoo records in the middle, documents out.

The importers write ordinary Odoo records, so every standard flow keeps working on them: purchasing, manufacturing, sales, the website shop and accounting see the same products, vendors and prices.

Chat with us