Work the inventory and procurement screens
Tom is trying to work out why the pantry never shows what is actually on the shelf, and why last month's purchase orders never appear. This page is how to read Inventory Management, Multi-Site Inventory, Procurement & Vendors and Buy American Compliance, and which of the four Create buttons on them can save.
Four forms, one pattern, in four places. The page supplies a site or a staff member the form never collected, as an empty value:
| Screen | The blank field |
|---|---|
| Inventory Management | who transacted it |
| Procurement & Vendors, Vendor | the site |
| Procurement & Vendors, New Order | the site |
| Buy American Compliance | the site and the food item |
Each is a field PTRS requires to be a real record. A blank value fails before PTRS even runs its usual checks. The toast says "Failed to …" with no further detail.
This is the same pattern as the three CACFP meal-entry screens and the recordkeeping screen described elsewhere in this guide. It is now the most common defect in the module.
Inventory
Inventory Management, subtitled "Track food inventory, FIFO compliance, and stock levels." It shows a four-tile summary, a low-stock strip, a lot table and a first-in-first-out queue panel.
The four summary tiles never appear
The tile block only shows once a summary arrives, and the page asks for that summary across "every site," which PTRS refuses outright because it needs one real site.
That failure is currently protecting the page. If the request succeeded, the block would fail anyway: the page reads three figures under names that do not match what PTRS actually sends back.
The three panels that do render show a long code, not a name
The inventory table, the low-stock strip and the first-in-first-out panel all show the food item's own id in the column headed Food Item, because PTRS's answer carries no name for it and the list does not look one up. So that column reads a long code on every row, on all three panels.
Two smaller limits worth knowing:
- The list is not asked to show more than one page at a time, so PTRS's default limit of 25 applies. The low-stock strip and the first-in-first-out panel both come from that same 25 rows, so both are summaries of one page rather than of the site.
- The first-in-first-out panel shows only the first 20 of what it has and says nothing when it leaves the rest out. Its own heading count is the full list length.
Record Transaction
The form collects Item, Type, Quantity and Notes, and the four transaction types it offers, Receipt, Issue, Waste, Transfer, are all real. A fifth, Adjustment, is not offered.
It cannot save: the page sends a blank value for who transacted it, and PTRS requires a real staff member there. The item picker also lists lots by their own id and lot number, so you are choosing between long codes.
What the first-in-first-out engine actually does
This is worth stating because it is one of the better-built pieces in the module, and none of it is reachable.
For an Issue, PTRS runs a real oldest-first deduction: it loads every lot at that site for the same food item with stock remaining, in the order they were entered, and if the total across every lot is less than what was asked for, it refuses, naming both figures. Otherwise it works through the lots oldest-first, taking from each until the amount is satisfied, and records one transaction per lot it touched. For the other four transaction types, it applies the movement to the one named lot, refusing a transfer or a waste that would take the balance below zero.
The order lots are issued in is the order they were entered into PTRS, not their expiry date. A lot entered later but expiring sooner is therefore issued last, and the panel's colour coding will show it expiring at the back of the queue.