Skip to main content

Materials Catalog

Module: Materials | Platform: Web

The Materials Catalog is Appello's product database for priced materials -- the list of price lists at /materials, the pricing grid or source panel on each material's detail page (/materials/[id]), and the Material List Templates / Material Attributes admin screens that define how each one is priced. This page also covers how a job's Materials → Specification tab uses that catalog to build out what a job needs, by System, Target, Area, and Product. For placing and tracking orders against a specification, see Material orders; for on-hand stock and issuing material to a job, see Inventory Management.

note

On this instance, the whole Materials module is switched off. It's an instance setting your Appello administrator or Appello support controls, not something an admin toggles from within Appello. With it on, the Materials and Material Orders pages both refuse access outright (shown below, and this is also why Material orders has no screenshots), the Materials and Inventory links disappear from the sidebar entirely, and a job's Materials tab shows only its Materials Issued (BETA) child tab -- Specification and Material Orders are hidden alongside it. Because of that, this page is written from Appello 1.33 rather than from screenshots of the working screens. If your instance has Materials turned on, the screens should match what's described here.

Is this on your instance?​

If Materials doesn't appear in your sidebar, or a job's Materials tab shows only Materials Issued (BETA), your instance most likely has Materials restricted -- ask Appello to enable Materials for your instance.

  • Sidebar → Materials -- the price list ("catalog") itself, at /materials.
  • Sidebar → Materials → a row -- a single price list's detail page, at /materials/[id].
  • Settings → Property Settings → Materials tab -- the Material List Templates, Material Attributes, and Default Properties admin screens that define how materials are priced.
  • Job → Materials → Specification -- building out what a job needs from the catalog.

Route: /materials​

Where it is​

Click path: Sidebar → Materials. URL: /materials.

What it's for​

The list of every material price list ("catalog") in the instance -- one row per priced material (a single flat price, or a whole pricing grid, depending on its template). It's where you search the catalog, bulk-archive/delete/restore price lists, and start a new one.

The 403 on this instance​

The browser's own error page -- "Access to your Appello instance was denied", HTTP ERROR 403 -- returned when opening Materials on the demo instance with Materials restricted

That screenshot is the actual result of opening Materials on the demo instance used for this documentation. Because Appello refuses the page outright, the browser shows its own generic "Access denied" page rather than anything Appello drew -- there is no Appello-branded screen to capture here. Every section below the fold is described from Appello 1.33 instead.

Table columns​

The list is built on Appello's shared, per-user saved-view table component (the same one documented for Accounts payable and other list pages) rather than a fixed column set for Materials specifically -- which columns are visible, and their order, is configurable per saved view (see Search, filters, sort, and saved views below). The columns the Materials list specifically knows how to render are:

ColumnDescription
NameThe material/price list's name. Links to its detail page.
Material Group / TemplateThe Material List Template the price list uses -- see Material groups and attributes below.
SKUOnly meaningful for a flat-priced material with a single source. An axis-priced (dimensional) material carries a SKU per grid cell instead, so this column shows View Price Sheet (a link to the detail page) rather than a value.
Resolved Cost / Resolved Sell PriceSame rule as SKU: a dimensional material shows View Price Sheet here too, since there's no single number to display; a flat-priced material shows its resolved dollar figure.
Manufacturer(s) / Distributor(s)The companies linked to the price list as sources (see Adding/editing a source on the detail page).
Effective Date / Last UpdatedThe price sheet's effective date, and when the material was last changed.
note

Described from Appello 1.33 -- not from a screenshot, since the page refuses access here. The exact default column set and order on a live instance may differ, per the saved-view note above.

Search, filters, sort, and saved views​

ControlBehavior
SearchFree-text, placeholder "Search Name". Matches the material's own name, plus (because the search index is extended for this model) any per-source SKU or manufacturer SKU recorded on its price rows -- so searching a part number printed on a box finds the material that carries it, even though SKU isn't a field on the material itself.
Group filterNarrows the list to a specific Material List Template (Material Group).
Source filterNarrows to price lists carrying a specific Manufacturer or Distributor.
Attributes filterNarrows by a template-specific attribute value (e.g. a Size or Category tag) -- available once that attribute exists on at least one template.
SortDefaults to Name, ascending. Click a sortable column header to change it.
View controlsThis list follows the same saved-view pattern as other Appello lists (see Accounts payable): a lock icon marks the default system view, a save icon commits unsaved filter/column changes back to the current view, a pencil (edit) icon renames the view or changes its columns, and Add New creates another saved view with its own filters and columns.
note

Group/Source/Attributes are the natural filters for a materials catalog and are all filterable and sortable -- but because this list uses the generic saved-view column system rather than a fixed filter-chip set (unlike, say, Jobs list), the exact chips shown out of the box could not be confirmed against a live screenshot, since the page refuses access here.

Export​

Export CSV downloads the currently filtered/searched result set, the same way it works across other Appello lists.

Quick tabs​

The list opens on the default Active view; Archived and All tabs are the standard pattern for a list with bulk archive -- see Bulk actions below.

Create Material List​

Click Add Material List in the top-right of the list to open the Material Price Sheet flyout form. This is the same form used to edit an existing material (from the pencil icon on its detail page) -- see Editing a material: the Material Price Sheet form for the exact field list, including Name, Material Price List Template, Cost Per (or Unit Cost for a flat-priced template), Manufacturer(s) / Distributor(s), template-driven attribute dropdowns, and Upload PDF.

Bulk actions​

Select one or more rows to reveal:

ActionEffect
ArchiveArchives the selected materials (soft state; can be restored). Gated by the Material -- Edit permission on your role.
DeletePermanently removes the selected materials. Before confirming, the dialog checks a live count of records that still reference them (see Related usage below) so a delete doesn't silently orphan a work order, estimate line, or job specification.
RestoreUn-archives previously archived materials. Only available from the Archived or All tab.
note

There is no bulk Duplicate on this list. Duplicating a material is a single-record action -- see below.

Duplicating a material​

Duplicate lives on the material's own edit form, not the list: open a material, click the pencil icon to reopen the Material Price Sheet form, then use the Actions menu (top of the flyout) → Duplicate. It copies the material's group, attributes, and every priced row (pricing cells and sources), naming the copy <original name> - DUPLICATE <timestamp>, and takes you to the new record.

Programmatic catalog management​

Beyond the form-driven Add Material List / bulk-action flow above, Appello can load a whole price book for you without anyone re-keying it by hand. That covers importing a distributor's spreadsheet or price sheet into a Material List Template, bulk-updating many materials at once, and keeping a template's catalog in step with an external ERP or product system.

None of this has a control anywhere in the Materials screens -- it's arranged with Appello rather than run from the app. If you have a price book to load or an external system to sync from, contact Appello support with the file or the system details.

note

An ERP/product-system sync replaces a Material List Template's whole catalog -- anything in that template that the sync doesn't mention gets archived. A one-off price-book import is additive instead: it creates and updates, and archives nothing. Be clear with Appello which of the two you want.

Permissions and flags​

GateControls
Materials restricted (instance)Whether Materials and Material Orders work at all -- on, both refuse access and their sidebar links vanish.
Material -- ViewRequired to see the Materials sidebar link and load the list.
Material -- CreateRequired to see Add Material List, and to see + New template inside that form.
Material -- EditRequired for the bulk Archive action and the pencil (edit) icon on the detail page.
Material -- Delete / RestoreGate the bulk Delete / Restore actions.

Route: /materials/[id]​

Where it is​

Click path: Sidebar → Materials → a row. URL: /materials/[id].

What it's for​

A single price list's detail page -- its identity (name, group, template attributes), its Pricing card (markup/sell-price configuration), and the pricing surface itself: either a Source Pricing panel (flat-priced templates) or a full price grid (dimensional templates), where per-source costs, SKUs, discounts, and lead times live.

The 403 on this instance​

The browser&#39;s own error page -- &quot;Access to your Appello instance was denied&quot;, HTTP ERROR 403

A material's detail page is restricted the same way the list is -- it refuses access on this instance for the same reason. The sections below are described from Appello 1.33 rather than from a screenshot.

Header and cards​

The header shows the material's Name, badges for its Category, axis attribute value(s), Product, and Target (whichever the template wires up), every additional attribute value in the template's configured order, Last Updated, Price Sheet Effective Date, and Sold By The (its unit of measure). Buttons alongside it:

ButtonEffect
View PricesheetOpens the uploaded PDF or image in a new tab, or a lightbox if it's an image. Only shown if one was attached.
Export CSVDownloads this material's pricing as CSV.
Export PDFDownloads this material's pricing as PDF.
pencil iconReopens the Material Price Sheet form to edit the material (Material -- Edit required) -- see below.

Pricing card​

A Pricing card sits above the pricing surface:

FieldShown whenEffect
Unit CostThe material is flat-priced (0-axis, no Target/Product/Z-Axis)The single house cost for the material. Left blank on a dimensional material, whose cost lives per grid cell instead.
Pricing Markup (radio)AlwaysUse group default (X%) -- inherits the template's Default Markup %, or pass-through at cost if the template has none set; Fixed sell price -- a flat dollar override (Sell Price field appears); Custom markup % -- a material-level percent override (Markup % field appears).

A Save Pricing button appears only once something on the card has changed.

This card edits two of the tiers in the sell-price cascade described in Resolving the sell price below -- the fixed Sell Price override and the Markup % override. The job-level override (tier 1 of that cascade) is set on the Job, not here.

The pricing surface: Source Pricing vs. the price grid​

Which one renders depends on how many pricing axes the material's template has (0 for flat, 1-3 for dimensional):

  • Flat-priced (no Target/Product/Z-Axis) -- a single Source Pricing card, labelled "Sources for size variant: Single unit price". There's one "cell" for the whole material.
  • Dimensional (Target and/or Product set) -- a price grid, with rows and columns for each pricing axis's attribute values. Clicking a cell opens the same sources panel scoped to that one X/Y(/Z) combination.

Either way, the panel that opens is the same sources table described in Adding/editing a source below -- Source Pricing is just that table rendered directly on the page instead of behind a grid cell.

Editing a material: the Material Price Sheet form​

The same Material Price Sheet flyout used by Add Material List on the list page (see above) opens here from the pencil icon, pre-filled. Its fields:

FieldRequiredTypeEffect
Material Price List NameYesTextThe price list's name. Must be unique across the instance.
Price Sheet Effective DateNoDateFor reference only -- nothing in Appello currently reads it to gate pricing, so it's optional.
Material Price List TemplateYesSearchable dropdownThe Material List Template (Material Group) -- see Material groups and attributes. Freezes the axis shape once the group has materials. Offers + New template inline, gated by Material -- Create.
Cost PerYesDropdownThe unit type this list is priced by; the option list depends on the chosen template's pricing model and unit-of-measure family.
Unit CostNo, shown only for a flat-priced templateCurrencyThe single cost for this material -- there's no price grid to hold it elsewhere.
Manufacturer(s)NoMulti-select, company searchCompanies to link as manufacturer sources -- sets the material's full manufacturer set.
Distributor(s)NoMulti-select, company searchCompanies to link as distributor sources -- sets the material's full distributor set.
(template-driven attributes)Varies, per attribute setupDropdown, one per attributeEvery attribute the chosen template captures beyond its pricing axes (e.g. Category), plus the template's Product-axis category attribute if it carries one.
Upload PDFNoFile uploadAttaches the source price sheet document or image to the material. Accepts images and standard document types. Opened later via View Pricesheet.

Adding/editing a source​

Whether reached via the flat-priced Source Pricing card or a dimensional cell, the sources table shows one row per supplier/manufacturer offering for that variant, plus the house row (the variant's own catalogue identity: SKU, UPC, barcode, weight). Table columns: Source, SKU, List (price), Discount, Effective (the resolved cost after discount -- ★ marks the preferred source, and a green Best badge marks whichever row is currently the cheapest/preferred), Lead (lead time), Stock.

Click Add Source (or the pencil icon on an existing row) to open the source editor. Fields, by mode:

Source mode (a manufacturer/distributor offering):

FieldRequiredTypeEffect
DistributorAt least one of Distributor/ManufacturerDropdownMust already be linked to the material as a Distributor (via the Material Price Sheet form's Distributor(s) field).
ManufacturerAt least one of Distributor/ManufacturerDropdownMust already be linked to the material as a Manufacturer.
Distributor SKUNoTextThe supplier's own SKU for this cell/variant.
Manufacturer SKUNoTextThe manufacturer's part number.
UPCNoTextBarcode/UPC for this source's offering.
Unit CostNoCurrencyWhat this source costs us net -- the value used in the cost cascade.
List PriceNoCurrencyThe supplier's published list price, before any discount.
Discount / OverrideNoDropdown (Percent/Fixed Amount) + ValueSets an ad-hoc, per-cell buy-discount override for this one source row, created at save time. Standing distributor/category/material discounts (see Buy discounts below) apply automatically and show read-only here as "Inherited" until overridden.
Lead (days)NoNumberSupplier lead time in days.
Min QtyNoNumberMinimum order quantity.
Pkg Qty / Pkg UnitNoNumber / TextPackaging quantity and unit (e.g. "25 / box").
Effective From / Effective ToNoDateThe date range this source's pricing is valid for -- the effective-dated pricing referenced in the model's field set.
Preferred sourceNoToggleMarks this source as the one to prefer over the cheapest, when set.
In stockNoToggleInformational stock flag for this source.

House mode (editing the variant's own catalogue identity, via Edit Catalogue next to the house row):

FieldRequiredTypeEffect
Own SKUNoTextThe material/variant's own SKU, independent of any source.
UPCNoTextUPC for the variant itself.
BarcodeNoTextBarcode for the variant itself.
WeightNoNumberShipping/unit weight.
Weight UnitNoTextUnit the weight is expressed in.

A Delete (trash icon) on a source row removes that source's price row entirely; there's no archive step for a source row -- it's deleted outright.

Material attribute prices​

Every priced cell -- the house row, and every source row -- is stored separately, identified by the material plus the grid position it sits at (and, on a source row, the supplier it belongs to). Day to day you maintain these from the price grid and the sources table described above. For loading or updating many price cells at once from a distributor's price book, see Programmatic catalog management -- that's arranged with Appello rather than run from the app.

Buy discounts​

Standing, negotiated discounts from a distributor -- what makes a supplier's price resolve at net cost rather than list price -- are set up by Appello on request rather than from a screen in the app. A discount is a percent off list for a given distributor, and it can be attached at three levels of specificity:

Attached toApplies to
A CompanyEvery material sourced from that distributor.
A Material GroupOnly materials on that Material List Template.
A single MaterialOnly that one material.

The most specific level wins: Material beats Material Group beats Company. The per-source-row Discount / Override field on the Add/Edit Source form (above) is a fourth, even more specific tier -- a per-cell override that beats all three.

Resolving the sell price​

The Pricing card's Save Pricing button applies this cascade, stopping at the first tier that resolves:

TierSourceWins when
1Job overrideThe job the price is being resolved for has a markup percent set.
2Material fixed overrideSet on the Pricing card's Fixed sell price option.
3Material % overrideSet on the Pricing card's Custom markup % option.
4Group default %Nothing more specific is set -- the Use group default option.
5Pass-through at costNo markup found anywhere in the cascade.

The cost basis it applies that markup to is resolved separately: the cheapest or preferred active source row (net of its buy discount, via the cascade above), then the source-less house row, then an older per-material unit cost kept only as a fallback for legacy records.

Before archiving or renaming a material or template -- especially to retire demo data so a real price sheet can reuse its name -- Appello counts what still references it. That's the check the list page's bulk Delete confirmation runs, and it deliberately includes archived records: a SKU that still has stock movements against it would otherwise read as unused. A clean report still doesn't free up the name -- an archived record keeps owning its unique name, so rename before archiving if the name is needed for a replacement.

Permissions and flags​

GateControls
Materials restricted (instance)Same instance setting as the list page -- on, this page refuses access too.
Material -- ViewRequired to load the detail page.
Material -- EditRequired to see the pencil (edit) icon, the Pricing card's editable controls, and Add/Edit/Delete Source.

Material groups and attributes​

Every material belongs to a Material List Template (the application's internal name for this is a Material Group), which controls both its pricing model (flat vs. a grid across one to three axes) and which extra fields get captured on it. Templates are themselves built from Material Attributes -- the reusable fields (e.g. Size, Thickness, Category) a template's pricing axes and any additional descriptive fields are drawn from.

Both are managed in Settings → Property Settings → Materials tab, which is documented in full -- including the Material List Template and Material Attribute create/edit fields, and the Material -- View / Material -- Edit permissions and the Materials instance restriction that gate that tab -- at /docs/settings/property-settings#materials. In short:

Sub-tabWhat it manages
Material List TemplatesThe pricing templates (Material Groups): Name, Target/Product/Z-Axis (the pricing dimensions), Unit of Measure, Default Markup %, and Account Item.
Material AttributesThe reusable attributes (e.g. Size, Thickness, Color) templates' pricing axes and extra fields are built from, each with its own list of values.
Default PropertiesDefault custom-property values shared across Material and Material Order records.

A couple of admin operations on groups and attributes have no control in Property Settings and have to be arranged with Appello: attaching an attribute to a template beyond that template's pricing axes, and changing the order the template's extra attributes appear in on the Material Price Sheet form and the detail-page header.

Leaving a template's Target and Product both unset produces a flat-priced template -- one cost per material instead of a grid. Setting a Target (and optionally a Product and Z-Axis) produces a dimensional template, priced across a grid of attribute values -- see The pricing surface: Source Pricing vs. the price grid above for how that plays out on a material's detail page.

Job specification​

Once your catalog has priced materials, a job's Materials → Specification tab is where you define what that job actually needs -- by System, Target, Area, and Product.

Open a job, click the Materials tab, then the Specification child tab.

Systems, Areas, and Products​

The specification for a job is organized as:

  • System -- the top-level grouping (e.g. a building system). Each system is paired with one Target, forming a System × Target specification.
  • Area -- one or more areas within that System × Target (e.g. a floor or room). Each area has its own Area Name and Specification Section text field.
  • Product -- within an area, one or more product categories, each with a Material picked from the catalog (scoped to that category, Target, and any Product axis already chosen), a per-product Specification Section field, and a Select Price Sheet dropdown that links the specific catalog price list to use for that product in that area.
  • Material Rules -- optional rules within an area that scope a specific Target (and Product) attribute-value combination, for cases where the default material/price sheet selection needs an override for particular values.

Creating a specification​

  1. On the Specification tab, click Add Specification Item. This opens the job specification form, where you choose the System and Target and set the specification's own Specification Section and notes.
  2. Use Configure Systems / Configure Areas first if the System or Area you need doesn't exist yet as an option.
  3. Save the specification, then open it and click Add Area to add one or more areas, each with an Area Name and Specification Section.
  4. Within an area, expand Product Categories to pick the Material for each category and set that product's Specification Section and Select Price Sheet.
  5. Add Material Rules as needed, using Add Rule, to override the material/price sheet selection for specific Target or Product attribute values.
note

Quantities are not entered on the job specification itself. A Material Order is created against a specific Job Specification and Area, and quantity is entered per line item on that order -- see Material orders.