Skip to main content

Inventory Management

Module: Operations / Materials | Platform: Web

note

Inventory is a BETA module in release 1.33. Screens are labelled Inventory (BETA) in the sidebar and on the Inventory Locations list, and behavior may still change.

Track stocked materials across warehouses, trucks, and job trailers -- how much of each item is on hand at each location, where it moves, and when it drops below a reorder point.

Sidebar → Operations → Inventory (BETA)

URL: /inventory

note

On the demo instance used for this page, the Materials module is restricted -- an instance setting your Appello administrator or Appello support controls. With it on, Materials, Material Orders, and Inventory (BETA) are removed from the sidebar entirely, so on this instance there is no Inventory link to click. That setting only hides the navigation links, though; it does not block the Inventory pages themselves (unlike Materials and Material Orders, which refuse access outright when it's on -- see Materials Catalog). Going to the URL directly still reaches the page, which is how the screenshots on this page were taken. If your instance has Materials turned on, Inventory (BETA) appears in the sidebar under Operations like any other link.

Overview​

Inventory Locations list with summary metrics and an empty locations table

The Inventory Locations list is the entry point for the module. Each row is a place that holds stock -- a warehouse, a yard, a truck, a job trailer -- and the list header shows four running totals across all locations:

MetricMeaning
Inventory LocationsCount of active inventory locations.
Total SKUsCount of distinct stocked material/size combinations.
Items Below MinCount of SKUs currently below their configured reorder threshold.
Inventory ValueTotal on-hand quantity × average cost, across every location.

Table columns​

ColumnDescription
NameThe location's name. Click it to open the location's detail page. Default sort column (ascending).
TypeThe location's Type value (e.g. warehouse, truck, job site) -- a Property Value, admin-configurable, same field as the form.
AddressThe location's street address.
ItemsA live count of active, non-archived SKUs stocked at that location.
Below MinA live count of that location's SKUs whose on-hand quantity is at or below their Reorder At threshold.

Items and Below Min are recalculated each time the list loads rather than stored, so they're always current.

ControlEffect
All / Active / ArchivedStatus tabs -- which locations are listed.
Address filterNarrows the list to locations matching an address.
Type filterNarrows the list to locations with a given Type value.
SearchFull-text search over the list (name, type, address).

Use these, then click a location's name to open its detail page.

Low-stock indicator​

An item is flagged LOW on a location's Stock Levels tab once its on-hand quantity drops to or below its Reorder At threshold. The list page's Items Below Min metric, and each row's Below Min column, total these across every location so you can see at a glance whether anything needs reordering without opening each location individually.

Export​

Click Export to download a CSV of the current view -- it respects whatever filters and search text are currently applied, the same behavior as Export on other Appello list pages (see Jobs List). The button is disabled when the current view has no rows, which is why it's greyed out in the screenshot above -- the demo instance has zero inventory locations.

Permissions​

Every read and write on this module is gated by one permission item, Inventory (grouped under Inventory Management on the Roles & Permissions screen), checked action by action:

PermissionGates
Inventory -- ViewThe Inventory Locations list, a location's detail page and its Overview/Stock Levels/Movements tabs, the low-stock list, and the summary metrics.
Inventory -- CreateAdding an inventory location; setting up a new stocked SKU (Setup Inventory Item).
Inventory -- EditEditing a location's General Information; editing a SKU's reorder thresholds; and every stock-moving action -- Adjust, Transfer, Checkout to Job, a return from a job, and receiving stock.
Inventory -- ArchiveArchiving one or more inventory locations.
Inventory -- RestoreRestoring an archived inventory location.
Inventory -- DeleteDeleting an inventory location.

Without Inventory -- View, a user has no path into this module at all -- with the Materials restriction off, the sidebar link simply wouldn't render for them, the same as it doesn't render for anyone on this restricted demo instance.

Creating an inventory location​

  1. Click Add Inventory Location in the top-right of the list.

    Inventory Location Create Form panel with Name, Type, and Address fields

  2. Fill in the fields:

    FieldRequiredNotes
    NameYesHow the location appears throughout Inventory and Job screens.
    TypeNoCategorizes the location (e.g. warehouse, truck, job site).
    AddressYesSet via the Add button next to the Address field.
  3. Click Save. Requires Inventory -- Create (or Inventory -- Edit when editing an existing location). The location opens on its Overview tab.

The location detail page​

Opening a location puts you on its own page with three tabs:

TabPurpose
OverviewThe location's name, type, and address, plus its notes feed.
Stock LevelsEvery stocked SKU at this location, with on-hand, reorder, and cost columns, and the actions below.
MovementsA running ledger of every checkout, transfer, adjustment, receive, and job-return that has touched this location.
note

The demo instance used to prepare this page had no inventory locations configured, so none of these three tabs could be captured with real data. Opening a location that doesn't exist shows Appello's generic error page rather than a permissions message -- this isn't a permissions gate, just no record to open:

Detail page for an inventory location that does not exist, showing Appello's generic "An unexpected error has occurred" page

The sections below describe the Stock Levels and Movements tabs, and the forms opened from them, from Appello 1.33 instead of from screenshots.

Overview​

The Overview tab shows the location's General Information (Name, Type, Address) as a read-only record, an Edit action that reopens the same Inventory Location Create Form used above, and the location's notes feed. Gated by Inventory -- View to open, Inventory -- Edit to edit.

Stock Levels​

The Stock Levels table lists one row per stocked SKU -- almost always a material (a material, or a material + size combination), though a stocked row can also reference a piece of Equipment; the screen shows whichever is set. Columns:

ColumnDescription
ItemMaterial name, with its size appended when the SKU has one (or the Equipment name).
CategoryThe material's group/category (or the equipment's category).
On HandCurrent quantity at this location.
Reorder AtThe minimum threshold -- the point at which the item is flagged LOW.
Max CapacityThe maximum threshold -- above it, status shows OVER.
Avg CostWeighted-average unit cost.
Total ValueOn-hand quantity × average cost.
StatusOK, LOW, or OVER, based on the reorder/max thresholds.

Search filters on item, SKU, or category (placeholder: "Search Item, SKU, Category"). Each row has two icon actions: a gear icon opens Reorder Settings (edit that SKU's Reorder At / Max Capacity thresholds), and a pencil icon opens Adjust pre-filled to that SKU.

Before any SKU is stocked, the tab shows an empty state with a single Setup Inventory Item button. Once at least one SKU is stocked, three more buttons appear alongside it: Checkout to Job, Transfer, and Adjust.

Setup Inventory Item​

Adds a new SKU to the location with an opening quantity (requires Inventory -- Create). Once a material and size resolve to an already-stocked SKU, the form switches to a message pointing you at Adjust or Reorder Settings instead -- Setup Inventory Item only ever creates a SKU's first record at a location.

FieldRequiredTypeEffect
MaterialYesCombobox (material catalog)The catalog material to stock. Selecting one may reveal a size picker if the material has sizes.
Initial QuantityNoNumericOpening stock. Leave at 0 (or blank) to track the SKU with no stock yet -- this also hides the cost fields below.
Reorder At (Min)NoNumericThreshold below which the SKU shows LOW.
Max CapacityNoNumericThreshold above which the SKU shows OVER.
SourceNoSelectOnly shown when the sized SKU has priced sources (manufacturer/distributor rows). Choosing one seeds List Price, Discount, and Unit Cost.
List Price--Currency, read-onlyThe chosen source's (or the material's house value's) list price. Not directly editable.
Discount TypeNoSelect (None / % / $)How the discount off List Price is applied.
Discount ValueNoNumericThe discount amount, interpreted per Discount Type.
Total CostNoCurrencyEditing this derives Unit Cost from the opening quantity, and vice versa -- they're two views of the same value.
Unit CostNoCurrencySee Total Cost. Seeded from List Price minus the discount, or the material's house value when there are no source rows.

List Price, Discount Type/Value, Total Cost, and Unit Cost only appear once Initial Quantity is greater than zero. A note under the thresholds reiterates that a reorder threshold flags the item LOW once available stock drops to or below it.

Reorder Settings​

Edits an already-stocked SKU's thresholds without touching its quantity (requires Inventory -- Edit).

FieldRequiredTypeEffect
Reorder At (Min)NoNumericThreshold below which the SKU shows LOW. Clear it to remove the threshold.
Max CapacityNoNumericThreshold above which the SKU shows OVER.

Max Capacity cannot be set lower than Reorder At -- the form blocks the save and shows an inline error until it's fixed.

Checkout to Job​

Consumes stock from the location onto a job (movement type Checkout, requires Inventory -- Edit).

FieldRequiredTypeEffect
JobYesCombobox (jobs)The job the stock is being consumed on.
Cost CodeNoCombobox (cost codes on the selected job)Disabled until a job is chosen.
Line ItemsYes (≥1)Item + Quantity rows, add/removeOne or more stocked SKUs and how much of each to check out.
NoteNoTextRecorded on the resulting movement.

A line that exceeds the quantity currently available at the location is flagged with a warning but is not blocked.

Workflow:

  1. Open Checkout to Job from the Stock Levels tab.
  2. Choose the Job, and optionally a Cost Code scoped to it.
  3. Add one or more Line Items -- pick an item and a quantity for each; click Add for more lines.
  4. Add a Note if useful, then confirm the checkout.

This creates a Checkout movement per line and reduces on-hand quantity at the location. On the job's own Materials Issued (BETA) tab, these consumed quantities show up as issued stock -- see How this ties to jobs below.

Transfer​

Moves stock from this location to another (movement type Transfer, requires Inventory -- Edit).

FieldRequiredTypeEffect
From--Fixed, read-onlyThe location you opened Transfer from.
ToYesCombobox (other inventory locations)The destination. Excludes the From location.
Line ItemsYes (≥1)Item + Quantity rows, add/removeStocked SKUs at the From location, and how much of each to move.
NoteNoTextRecorded on the resulting movement.

The form previews the source's average cost and the blended average cost the destination will end up with after the transfer.

Workflow:

  1. Open Transfer from the Stock Levels tab -- From is already set to this location.
  2. Choose the To location.
  3. Add one or more Line Items from the source location's stock.
  4. Add a Note if useful, then confirm the transfer.

This creates a Transfer movement per line, decreasing on-hand at the source and increasing it at the destination.

Adjust​

Corrects a SKU's quantity without a job or another location involved (movement type Adjustment, requires Inventory -- Edit).

FieldRequiredTypeEffect
ItemYesSelect (stocked SKUs at this location)Which SKU is being adjusted. Pre-filled when opened from a row's pencil icon.
MethodYesToggle: Adjust by amount / Set counted totalWhether you enter a change, or the new physical count.
Direction (Adjust mode)YesToggle: Increase / DecreaseSign of the amount below. Only shown in Adjust by amount mode.
Amount / Counted totalYesNumericThe unsigned change (Adjust mode) or the new physical count (Set mode).
ReasonYesChoice: Recount, Damaged, Lost, FoundRequired for every adjustment.
Unit Cost (optional)NoCurrencyOnly shown when the adjustment increases quantity. Blends into the average cost. Blank keeps the current average; $0 for material already paid for elsewhere.
NoteNoTextRecorded on the resulting movement.

A Before/After preview shows the current on-hand quantity, the signed change, and the resulting quantity as you fill in the form. The result can't go negative.

Workflow:

  1. Open Adjust from the Stock Levels toolbar, or the pencil icon on a specific row.
  2. Pick the Item (skip if opened from a row).
  3. Choose Method -- Adjust by amount (then Direction and Amount) or Set counted total (then the new count).
  4. Choose a Reason.
  5. Optionally set a Unit Cost (increases only) and a Note, then confirm.

Movements​

The Movements tab is a filterable, grouped ledger of everything that has happened to stock at this location. Columns:

ColumnDescription
WhenRelative or absolute timestamp of the movement.
TypeCheckout, Transfer, Adjustment, Receive, or Job Return.
ItemMaterial (with size) or Equipment name.
QtySigned relative to this location -- stock leaving shows as negative (red), arriving as positive.
Unit CostThe cost recorded on that movement, if any.
From → ToSource/destination locations, or the job for a checkout (linked).
ByThe user who performed the movement.
NoteAny note attached, shown on hover.

Filter by:

FilterOptions
TypeCheckout, Transfer, Adjustment, Receive, Job Return.
ItemA specific stocked SKU.
UserWho performed the movement.
FromA specific source location.
ToA specific destination location.
ReasonRecount, Damaged, Lost, Found (adjustments only).
DateA date range, with quick-pick options.

Group the feed By Date (each group header shows the day's movement count plus quantity in/out) or By Item (each group header shows the movement count, the item's net change, and its current on-hand quantity).

Movement types, by source​

TypeShown asCreated by
Checkoutchecked outThe Checkout to Job action above.
TransfertransferredThe Transfer action above.
AdjustmentadjustedThe Adjust action above.
ReceivereceivedNot reachable from any screen in 1.33 -- see the note below.
Job ReturnreturnedReturning issued stock from a job's Materials Issued (BETA) tab.

Returning stock from a job​

Returning checked-out stock is not done from the inventory location's page -- it's done from the job. Open the job, go to its Materials → Materials Issued (BETA) tab, and use Return Materials there to send some or all of a checked-out quantity back to an inventory location (Return To, Note -- see Job Detail → Materials Issued (BETA) for the full field table). This creates a Job Return movement, visible in that location's Movements tab.

How this ties to jobs, material orders, the catalog, work orders, and QuickBooks​

Jobs. A job's Materials → Materials Issued (BETA) tab is this module's other half: it lists what's been checked out to that job, and is where a Return Materials action sends unused stock back. See Job Detail → Materials Issued (BETA).

Material orders. Material Orders are purchase orders placed against a job's Job Specification -- a separate record type for tracking what's been ordered from a vendor and its delivery status. Nothing links a material order or a packing slip to an inventory receipt in 1.33; see What's not in this release below.

Materials catalog. Every stocked SKU on this page is a sized row from the Materials Catalog -- Setup Inventory Item's Material combobox searches that same catalog, and Source/List Price/Discount are seeded from a material's price-sheet sources or house value exactly as they are elsewhere in Appello.

Work order material items. A Work Order's own Materials tab is a separate, per-day line-item list (catalog-priced or free-form/custom) -- it does not draw from or write back to inventory stock. See Work Orders Overview → Materials.

QuickBooks. Inventory has no QuickBooks integration in 1.33. The QuickBooks sync only pushes Appello Materials to QuickBooks as Service or Non-Inventory line items -- never as QuickBooks' own Inventory item type -- and inventory locations, stock levels, and movements are never synced to QuickBooks at all.

What's not in this release​

note

Receiving shipments against a packing slip or material order is not available in 1.33. "Receive" is a recognized movement type shown in the Movements-tab filter, but no screen reaches it, and nothing links a material order or packing slip to an inventory receipt. To bring new stock onto the books today:

  1. Use Setup Inventory Item to stock a SKU for the first time at a location, with its opening quantity and cost, or
  2. Use Adjust (reason Found) with a positive amount to add stock to a SKU already stocked there.

Receiving a partial shipment, or issuing a credit/return to a vendor, is likewise not available -- there is no partial-receipt workflow, and vendor credits/returns are not one of the adjustment reasons (Recount, Damaged, Lost, Found).

Bulk-stocking multiple SKUs at once has no entry screen in 1.33 -- each SKU is set up one at a time with Setup Inventory Item.