Assets Reference Public

Asset Models

Catalog & Setup Asset Models An asset model is a catalog template for a kind of hardware — think "MacBook Pro 14 M3" or "Dell UltraSharp U2723QE". Instead of retyping the…

Guide version: r1 Module version: 1.0.0 Updated: 2026-07-22 Estimated time: 9 min 2 views
Catalog & Setup

Asset Models

An asset model is a catalog template for a kind of hardware — think "MacBook Pro 14 M3" or "Dell UltraSharp U2723QE". Instead of retyping the manufacturer, category, and other catalog details on every unit you buy, you record them once on the model, then point each individual asset at it. This page covers the Models catalog: the list, the form, what the model pre-fills on the asset form, and what it deliberately does not do.

ℹ️
Where this screen lives. Models is the "Models" tab of the Assets page — open Safekeep → Assets (URL ams/assets) and click the tab labeled "Models" next to "Browse". The tab loads the list via AJAX (its direct URL is ams/models, but it is a partial designed to render inside the tab strip). Access is gated on the Assets module being enabled and the base asset permission ("Assets: Entries") — there are no separate create / update / delete permissions for models: anyone who can open the tab can also add, edit, and delete models.

What an asset model is

A model is the bridge record of the catalog. One model row ties together everything that is true of every unit of that product:

Name
The catalog display name, e.g. MacBook Pro 14 M3. The only required field.
Model Number
The manufacturer's part / model number, e.g. A2918.
Category
Which branch of your category tree this product belongs to (e.g. Hardware > Computers > Laptops).
Manufacturer
The brand — drawn from ERPat's shared Brands master, not a list private to this module (see below).
Fieldset
Which bundle of custom fields describes this product.
Depreciation
Which depreciation profile (useful life + residual floor) is intended to value this product over time — see the wiring caveat.
End-of-life (months)
The expected lifetime of the product in months.
Requestable
A Yes/No flag recorded per model and shown in the list.
Notes
Free-text remarks about the product.

Individual assets then reference the model from the "Asset Model" dropdown on the Add / Edit asset form, and inherit its category and manufacturer as defaults (see how defaults flow).

⚠️
"Asset Model" ≠ the asset's "Model" field. The asset form has two similar-looking things: the "Asset Model" Select2 dropdown (this catalog — a real link to a model record) and a plain free-text "Model" textbox lower down on the same form. The free-text "Model" is just a label typed per asset — and it is what the Browse list's "Model" column shows (the XLSX export's "Model Name" column shows the linked catalog model's name and falls back to this text only when no catalog model is linked). It is not connected to this catalog and typing there triggers no defaults. If you want catalog behavior — defaults and consistent naming — use the "Asset Model" dropdown and keep this catalog tidy.

The Models list

The tab shows a searchable DataTable of every model, sorted by "Asset Model" name ascending, with a table refresh button and an Excel export of the data columns. The top-right header button "Add Asset Model" opens the add modal.

List columns

Column headerShowsNotes
"Asset Model"The model's name.Default sort column (ascending).
"Model Number"The manufacturer part number.Shows - when blank.
"Category"The linked category's name.Shows - when unset.
"Manufacturer"The linked brand's name.Shows - when unset.
"Fieldset"The linked fieldset's name.Shows - when unset.
"End-of-life Date"The EOL value in months.Despite the header saying "Date", this is a number of months; - when unset.
"Requestable""Yes" or "No".Mirrors the form checkbox.
"Created by"Who created the record.Rendered as a profile link.
OptionsRow actions.Pencil = edit (tooltip "Edit Asset Model", opens the same modal pre-filled); × = delete with a confirmation prompt.

Adding & editing a model

Both "Add Asset Model" and the row's edit pencil open the same modal, which posts to ams/models/save. The footer has a single "Save" button; a successful save shows the toast "The record has been saved."

Form fields

Field labelTypeRequiredNotes
"Name"Text Required Autofocused. Enforced both client-side ("This field is required.") and server-side.
"Model Number"Text Optional The manufacturer's part / model code.
"Category"Select2 dropdown Optional Lists categories with their full hierarchical path (e.g. Hardware > Computers > Laptops). Becomes the asset form's default category (see defaults).
"Manufacturer"Select2 dropdown Optional Options come from the shared Brands master (see below). Becomes the asset form's default manufacturer.
"Fieldset"Select2 dropdown Optional Lists all fieldsets by name. Displayed in the list; note that the shipped asset form reads its "Additional fields" from the category's fieldset, not from this link (see what does not flow).
"Depreciation"Select2 dropdown Optional Attaches a depreciation profile to the catalog record. Note: in this build the depreciation compute and report do not read this link (see what does not flow).
"End-of-life Date"Number, min 0 Optional Despite the label, this is the expected lifetime in months — the input's placeholder reads "Useful life (months)". Treat it as "EOL (months)".
"Requestable"Checkbox Optional Unchecked by default; saved as Yes/No and shown in the list.
"Notes"Plain textarea Optional Free-text remarks.
ℹ️
Roadmap. The "Requestable" flag is stored and displayed, but the shipped module has no self-service "request this asset" workflow yet — today the flag is informational only.

Manufacturers = the shared Brands master

????
There is no "Manufacturers" screen inside the Assets module. The "Manufacturer" dropdown on the model form reads ERPat's shared Brands catalog — the same brands table used elsewhere in the system — filtered to brands flagged for use in assets (the in_assets flag). To add or rename a manufacturer, use the shared Brands screen at ams/brands (this route intentionally points at the core Brands controller, not at anything owned by this module), and make sure the brand is enabled for Assets. Vendors work the same way: the shared Vendors screen is at ams/vendors.

How a model pre-fills the asset form

The pay-off for maintaining this catalog happens on the Add / Edit asset modal. When you pick a model in the "Asset Model" dropdown there, the form immediately fetches that model's defaults (endpoint ams/assets/get_model_defaults, which returns the model's category and manufacturer) and applies them:

  1. You select an "Asset Model"

    The form looks up the chosen model's linked Category and Manufacturer.

  2. Category pre-fills — only if still empty

    If the model has a category and the asset form's "Category" dropdown is currently blank, the category is filled in. Because setting the category fires its normal change event, the form's "Additional fields" section reloads too — you instantly see the custom fields defined by that category's fieldset.

  3. Manufacturer pre-fills — only if still empty

    Same rule: if the model has a manufacturer and the asset form's "Manufacturer" dropdown is blank, it is filled in.

????
Defaults never overwrite your choices. If you already picked a Category or Manufacturer on the asset form, selecting a model leaves them untouched. The pre-fill only fills blanks — so it is safe to pick the model first (recommended) or last.

What does not flow onto the asset

  • Fieldset — the asset form's "Additional fields" always come from the category's compiled fieldset schema, not from the model's "Fieldset" link. The model's fieldset is stored and shown in the Models list, but the shipped asset form never reads it. Bind your fieldset to the category to actually get the fields.
  • Depreciation & EOL months — nothing copies these onto the asset, and in this build the monthly depreciation compute and the Depreciation schedule report do not read them through the model either: they select assets by a per-asset depreciation link (asset_entries.depreciation_id) that the asset form never sets. Today the model's Depreciation and EOL months are catalog reference data only — see the wiring caveat on Depreciations.
  • Model Number and Notes — display-only catalog data; nothing is copied into the asset's fields (in particular, the asset's free-text "Model" box stays empty unless you type into it).

Deleting a model

The × row action asks for confirmation and then soft-deletes the model; success shows "The record has been deleted."

????
There is no in-use check. Deleting a model is allowed even when assets still reference it — nothing warns you, and nothing reassigns those assets. (The failure message "The record is in use, you can't delete the record!" exists in the software but is effectively never shown here, because the delete always succeeds.) Assets that pointed at the deleted model silently lose the link everywhere it surfaces: it vanishes from the asset form's "Asset Model" dropdown (the field shows blank on the next edit, and re-saving that asset clears the link for good), and the XLSX export's "Model Name" column goes blank for those assets. The Asset Registry has no catalog-model filter or column, so before removing a model, check which assets use it — e.g. run an XLSX export with the "Model Name" column and search it.

Suggested setup order

????
Purpose: add a new product line to the catalog so future units register in seconds.
Who: IT admin / asset custodian (needs the asset permission).
Preconditions: the Assets module is enabled; the brand exists in the shared Brands master with its Assets flag on.
  1. Prepare the building blocks

    Create or verify the Category (with its fieldset bound, if you need custom fields), the Depreciation profile, and the manufacturer at ams/brands.

  2. Add the model

    Open Safekeep → Assets → "Models" tab → "Add Asset Model". Fill in Name, Model Number, Category, Manufacturer, Depreciation, and EOL months, then "Save".

  3. Register units against it

    On the Add asset form, pick the model in "Asset Model" first — Category and Manufacturer fill themselves and the category's custom fields appear. Add the unit-specific data (asset tag, serial, cost, location) and save.

Related pages

Was this guide helpful?

Report a content problem