Open core: don’t reinvent the wheel — build your fenestration software on ours.

Skip to main content

OJ Setup → Parts can create many new parts at once – a supplier’s catalogue, a new series –
from a spreadsheet. Two buttons in the bar under the part details: Download import template (table icon)
and Import parts (plus icon). The import only creates parts; it never changes an existing part
(use the cost and price sheet or
the Parts screen for that).

What, where, who, when, why

What A template-driven bulk create of new parts from an .xls
sheet — every parts-table column plus eight optional stock columns, validated against the
template’s own Valid values sheet before anything is written.
Where OJ Setup → Parts: Download import template
(table icon) and Import parts (plus icon).
Who Whoever onboards a supplier catalogue or a new series’ parts.
Apply rights are the OJ Setup rights.
When First load of a catalogue; a new product family. For changing
existing parts, never here — use the cost/price sheet.
Why it matters It is the only safe way to create hundreds of parts:
list columns take ids or names from the template, missing columns fall back to the same
defaults as the New form, and stock records can be created in the same pass.

1. Download the template

The template is an Excel file (Excel 97-2003, .xls) with four sheets:

  • Parts – one column for every column of your parts table, by its database name (pictures and
    attached files are left out), then eight optional stock columns. Row 2 is a grey example row; it is
    ignored on import, so you can leave it.
  • Columns – for each column: its type (whole number, decimal, number, yes / no, text with its
    maximum length, date yyyy-mm-dd), whether it is required, and the list it refers to.
  • Valid values – the id and name of every part type (Kit is not offered), part family, unit of
    measure, series, part shape, cost / price matrix, cost / price group, costing method, supplier and
    warehouse.
  • Read me – these rules in short.

2. Fill one row per new part

  • Required: stockcode, description, part_type,
    part_family. Any other column left empty (or deleted from the sheet) gets the value a new
    part gets on the Parts screen.
  • A column that refers to a list (type, family, units, series, …) takes the id or the name
    from the Valid values sheet; names are matched ignoring case and spaces.
  • Yes / no columns take 1 / 0, yes / no or true / false.
  • id is ignored: every new part gets the next free id, exactly as with New.
  • Stock (optional): fill supplier and warehouse together to also create
    the part’s stock record, with that supplier as its default supplier and a warehousing row in the
    warehouse’s first location / rack / bin. supplier_stock_code, supplier_cost,
    min_order_qty, lead_time, min_stock and reorder fill
    the same records. Without supplier and warehouse only the part is created (as for profiles set up in
    OJ Setup).

3. Import – preview first, nothing is written until Create parts

Import parts reads the file and shows each row with its sheet row number and outcome:

  • Create / Create with stock – the row will be created.
  • Already exists – a part with that stock code exists; it is left alone.
  • Stock code twice in the sheet – fix the sheet; neither row is created.
  • Kit part – not imported – Kit parts need their component list in the Kit / BOM editor.
  • Invalid – followed by the column and what is wrong (missing required value, not a number, too
    long for the column, a name not in Valid values or matching two entries, supplier without warehouse).

Dates may be typed as dates in Excel (they are read as yyyy-mm-dd). A cell holding an Excel error, a column
named twice in the header, or values in a column with no header are refused with a message. Only the users
who can open OJ Setup (administrators, or users with an Administration right) can press Create parts.

Problems only hides the rows that will be created. Cancel writes nothing.
Create parts checks every row again and creates the rows one by one: if the database refuses one
row, that row is reported Failed with the reason and nothing of it is kept, while the other rows are
still created. The summary reads e.g. “40 parts created (12 with stock), 3 skipped, 0 failed”.