# Inventory (Equipment & Calibration)

## What is it?

Inventory manages measurement and auxiliary equipment (e.g., multimeters,
oscilloscopes, reference sensors) needed for testing — separate from stations
and test objects. Every piece of equipment has a status (available, in use,
calibration due, out of service) and a calibration history. Equipment can
optionally be assigned an equipment type, which brings additional, freely
defined fields (properties) — similar to station and test object types.

## How to use it

- **Creating equipment types:** Settings → Equipment Types → "Add type".
  This opens a two-step dialog: first just the type's name (e.g.,
  "Multimeter", "Oscilloscope"), and only after "Next" does the second step
  with the type's own fields (properties) follow — a progress bar at the top
  of the dialog shows both steps.
  You can also define "Global properties" there, which apply to every piece
  of equipment regardless of type.
- **Adjusting the built-in "Location" field:** In the "Global properties"
  section of the equipment type settings, the "Location" field can be
  renamed and hidden if it isn't needed in your lab — the same mechanism
  used for test object types (see `pruefling-typen`). The equipment name
  always stays visible since it identifies the equipment.
- **Table columns:** Besides device, status, type, location, and calibration
  dates, the inventory table automatically shows one column per global
  property. The "Columns" button lets you additionally show any type
  property — the selection only applies to your own account, missing values
  show "–".
- **Creating equipment:** Inventory → *New equipment*. The equipment type is
  optional; if one is chosen, its fields appear directly in the form. A new
  type can also be created directly from the form.
- **Recording calibration right when creating:** The same form has a "Record
  calibration now" toggle — if enabled, the equipment is created together with
  its first calibration in one step, without having to add a calibration
  separately afterwards.
- **Photo:** Upload a photo of the equipment in the create/edit form — e.g.
  to recognize it in the lab. On the detail page it appears to the left of
  the device data once one is set; without a photo the view is unchanged.
  PNG and JPG are allowed, up to 2 MB; a new photo replaces the previous
  one, and "Remove" in the form clears it again.
- **Further calibrations:** On the equipment detail page via "Add
  calibration". The status automatically jumps from *Calibration due* to
  *Available* as soon as a valid calibration is recorded.
- **The "Calibration due" status is set automatically:** This status can't be
  chosen manually from the status menu — a daily check (6:00 AM) sets it
  automatically once an available piece of equipment's calibration expires
  within the widest configured reminder stage or has already expired. Only
  "Available" and "Out of service" remain manually selectable.
- **Configuring the calibration reminder:** Under Settings → General →
  "Calibration reminder" you can maintain several reminder stages as "days
  before due" (e.g. 14, 7, and 1 day — the default) plus a repeat interval
  for after expiry (e.g. remind again every 7 days, 0 = only once). Each
  stage notifies owners/admins exactly once; only moving to a more urgent
  stage triggers the next notification. A new calibration resets all stages.
- **Filtering:** Use the status and type filters above the list to narrow it
  down (combinable with search). The "X devices require calibration" notice
  has a "Show" link that sets the status filter to "Calibration due"
  directly.
- **CSV/Excel import and export:** "Export" at the top of the page delivers
  every piece of equipment as CSV or Excel (.xlsx), including type, latest
  calibration, and every defined property (type and global properties, one
  `property_<key>` column each). "Import" reads the same layout back in; a
  type name that isn't found produces a warning, and the equipment is still
  created without a type. A calibration is only applied if both the
  calibration date and the valid-until date are given and valid — if either
  is missing or unreadable, the import reports that row as imported without
  calibration instead of silently dropping it. Rows without a name are
  skipped.
- **Import preview:** After selecting a file, a preview opens first — nothing
  is saved yet. It shows, per row, whether a new equipment item will be
  created or an existing one updated (or the row skipped), plus any issues
  such as invalid status, unknown type, invalid property values, an unknown
  ID, or incomplete calibration data. For an update, the preview additionally
  lists every field that will actually change, one by one (old value → new
  value, including properties and calibration) — fields with no change don't
  appear. For very large files, the preview shows
  only the first 200 rows in detail; the summary counts above still cover
  every row. Only clicking "Import entries" writes the data; "Cancel"
  discards the file without any changes.
- **Editing via export → import (no duplicates):** The exported file's first
  column is each equipment's ID. An edited export file (values changed, new
  rows appended with the ID column left blank) can be re-imported safely:
  rows with a known ID update the existing equipment instead of creating a
  second one, only rows with no (or an unknown) ID create new equipment.
  Unchanged calibration data in a re-imported row doesn't create another,
  identical calibration entry — only genuinely changed or new calibration
  data creates one.

## Common issues

- **"An equipment type can't be deleted while still in use."** It can — the
  deletion confirmation shows beforehand how many pieces of equipment
  currently use the type. Deleting only removes the type assignment; the
  equipment itself remains.
- **"The calibration fields are missing from the creation form."** The
  "Record calibration now" toggle must be enabled; without it, the equipment
  is created without a calibration (which can be added later at any time).
- **"Status stays at Calibration due."** Check whether the valid-until date of
  the most recent calibration is really in the future.
- **"I can't set the status to Calibration due."** That's by design — this
  status is only ever set automatically based on the calibration due date
  (daily check), not manually from the status menu.
- **"A device is missing its calibration after import."** Both the
  calibration date and the valid-until date must be given and valid — if
  either is missing, the import reports the row under "incomplete or invalid
  calibration data"; the equipment is created without a calibration and can
  be added later.
- **"A property from my import file is missing on the imported equipment."**
  Either the value was invalid for the field type ("invalid property
  values"), or the column isn't a known property of that type or a global
  property ("unrecognized columns ignored").
- **"The file could not be read."** Either the file is corrupt or, despite
  the .xlsx extension, not a real Excel file, or it contains invalid
  characters — in both cases nothing is imported.
- **"After re-importing, the equipment exists twice."** Check whether the ID
  column survived in the edited file — if it was deleted or cleared, the
  import treats the row as new equipment.

- **"A type with this name already exists."** Equipment type names are unique
  within the organization, regardless of capitalization. Either use the
  existing type or pick a distinguishing name.

---

Source: https://www.testlabiq.com/en/help/inventory
