Saltar al contenido principal

Who can do what with menus and inventory

Sixty-four things PTRS can do around menus, the food catalogue, meal pattern rules, inventory, vendors, procurement, Buy American compliance and special dietary accommodation. PTRS can do 251 things in CACFP in total; the other groups are on Who can do what with meals and claims (54, the money path), Who can do what with enrolment and records (41), and Procurement analytics (3, the only three in the whole module with a narrower rule).

Who can do this

Staff members, site directors, regional directors, organisation administrators and super admins, for every one of the sixty-four things on this page. Nothing here narrows that further.

Procurement is open to the front-line Staff role

On this subset that means creating a vendor, creating a purchase order, approving one and receiving one are all allowed for the most junior working role in PTRS.

A narrower rule for financial actions exists in PTRS and is applied only to the Funders module, not here. This is recorded for the PTRS team and is not changed by this guide.

The one exception is the three procurement reports, which ask for a different, narrower rule that excludes staff members. See Procurement analytics.

How many of these are reachable

Count
Things PTRS can do on this page64
Reached by something in PTRS22
, of those, requests that succeed14
, of those, requests that always fail8
No screen reaches it, though the plumbing exists19
No screen was ever built for it at all23

Every write action on this subset that a screen can reach fails. Seven create forms and one dashboard lookup, listed in Requests that always fail.

Cycle menus and menu templates

ActionWhat it doesReachable
Create a cycle menuCreates the menu and an empty day for every day of the cycleNew Cycle Menu on Cycle Menu Planning, always fails
List cycle menusFilterable by status and seasonThe list on Cycle Menu Planning
Look up one cycle menuWith its days and their planned mealsNo screen reaches it
Change a cycle menu's statusNo rule about which status can follow which, any to anyNo screen reaches it
Create a menu templateNew Template on Menu Template Library, always fails
List menu templatesFilterable by meal type and whether activeThe grid on Menu Template Library
Look up one menu templateNo screen reaches it
Clone a menu templateNo screen reaches it

What PTRS needs

ActionPTRS needs
Create a cycle menuMenu name, programme, season, start date, who created it, and a site scope, all filled in; cycle length greater than 0
Change a cycle menu's statusThe menu and a new status, both filled in
Create a menu templateTemplate name, meal type, the items list, a pre-check status, and prep complexity, all filled in
Clone a menu templateThe template being copied and a new name, both filled in

The two bolded fields above are the ones the screens never send. Nothing on this page checks how long any of these values are, so an overly long piece of text reaches PTRS and comes back as a raw failure rather than a clear message.

The meal record that would hold a day's actual food, once a cycle menu exists, is read by looking up a cycle menu and has no writer anywhere in PTRS.

Meal pattern rules

ActionWhat it doesReachable
List meal pattern rule setsLeaves the individual rules out of each setMeal Pattern Rules, succeeds, and shows nothing, because the page expects a different shape of answer
Look up one rule setWith its rulesNo screen reaches it
List serving requirementsFor a meal type and, optionally, an age groupNo screen reaches it
List age-group mappingsThe lower table on Meal Pattern Rules, works
Check a menu against the meal patternThe same check used by the meal-count composer formsNo screen reaches it through this particular route, the composer forms reach the same check by a different route, see Who can do what with meals and claims

All four reads are backed by tables that PTRS only ever fills in when it starts up in its development setting, for one fixed organisation. See What makes a meal reimbursable.

Food catalogue

ActionWhat it doesReachable
List food itemsFilterable by component, whether active, and a search termThe table on Food Item Catalog
Look up one food itemNo screen reaches it
Create a food itemThe only way anything is ever added to the catalogueNo screen was ever built for it
Update a food itemChanges five classification fields onlyNo screen was ever built for it
Deactivate a food itemNo screen was ever built for it
List the food review queueUnclassified items onlyNo screen was ever built for it
Classify a review-queue itemNo screen was ever built for it, and nothing ever adds an item to the queue in the first place

What PTRS needs

ActionPTRS needs
Create a food itemName, primary component and standard serving unit filled in; standard serving size greater than 0. Does not accept milk fat percentage, whether it is flavoured, three different sugar figures, a USDA food code or a country of origin default, all are columns with no way to fill them in
Update a food itemThe item and its primary component filled in. Cannot change whether it is juice, yogurt or cereal, or its serving size or unit, only creating a new item sets those, and nothing can amend them
Deactivate a food itemThe item, filled in
Classify a review-queue itemThe queue entry, the food item and who is classifying it, all filled in, and checks the food item exists in your organisation

Inventory

ActionWhat it doesReachable
Create an inventory lotAssigns its place in the first-in-first-out order as the next available slot at that siteNo screen reaches it
List inventory itemsFilterable by site, food item and low-stock only. Ordered for first-in-first-out useThe table, low-stock strip and first-in-first-out panel on Inventory Management
Look up one inventory itemNo screen reaches it
Update an inventory itemStorage area, expiry, reorder threshold and notes onlyNo screen reaches it
Record an inventory transactionAn Issue runs a real oldest-first deduction across lots and records one transaction per lot touchedRecord Transaction on Inventory Management, always fails
List inventory transactionsFilterable by item and siteNo screen reaches it
Look up the inventory dashboardTotals, a low-stock list and a list expiring within 7 daysInventory Management, always fails, because the page asks for "every site"

What PTRS needs

ActionPTRS needs
Create an inventory lotSite, food item, lot number and received date filled in; quantity greater than 0; unit filled in. Does not check that the food item actually exists
Update an inventory lotThe lot, filled in. Every other value keeps what was already stored if left out
Record a transactionSite, item, transaction type and who transacted it, all filled in; quantity greater than 0. Transfer and Waste refuse a balance below zero; Adjustment may be negative; Issue refuses when the total in stock is not enough

Unit is free text on both the lot and the transaction, with nothing constraining it to a fixed list of words. Multi-Site Inventory's total value adds together quantities that may be in different units.

Vendors

ActionWhat it doesReachable
Create a vendorVendor on Procurement & Vendors, always fails
List vendorsFilterable by site, whether active, and a search termThe vendor picker on Procurement & Vendors
Look up one vendorNo screen reaches it
Update a vendorNo screen reaches it
Remove a vendorMarks it inactive rather than truly removing itNo screen reaches it

Creating a vendor needs only a site and a business name. A tax id is optional; when given, PTRS checks it is not already used by another vendor in your organisation and refuses, naming it, if it is. The contact email has no length or format check at all on this action.

Because removing a vendor only marks it inactive, a removed vendor stays in every list that does not specifically ask for active-only. The vendor picker on Procurement & Vendors asks for every vendor, so it would show removed ones alongside active ones.

Procurement

ActionWhat it doesReachable
Create a purchase orderStarts as a Draft. Checks the vendor exists in your organisationNew Order on Procurement & Vendors, always fails
List purchase ordersFilterable by site, vendor and statusThe order list on Procurement & Vendors
Look up one purchase orderWith the vendor's nameNo screen reaches it
Approve a purchase orderRequires Draft or SubmittedNo screen reaches it
Receive a purchase orderRequires Approved; stamps the delivery date as todayNo screen reaches it
Look up budget trackingSpent, approved, pending, three counts and a breakdown by methodThe two budget tiles on Procurement & Vendors

Creating an order needs a site, a vendor, a procurement method, an order date, and a total amount greater than zero, the page always sends zero. The procurement method must be one of five named values; the form offers two of those five and two values that do not exist at all.

PTRS defines five order statuses. Draft, Approved and Received can be written; Submitted and Cancelled cannot, so the pending-budget figure, which is meant to total drafts and submitted orders together, can only ever reflect drafts, and no order can ever be cancelled.

Buy American

ActionWhat it doesReachable
Create a Buy American recordNew Record on Buy American Compliance, always fails
List Buy American recordsFilterable by site, fiscal year and compliant-onlyThe table on Buy American Compliance
Look up the compliance summaryTotals and a percentage, for a fiscal yearThe four tiles on Buy American Compliance
Request a Buy American exceptionStarts as PendingNo screen reaches it
List Buy American exceptionsFilterable by record and statusNo screen reaches it

Creating a record needs a site, a food item, a vendor name, a purchase date and a country of origin, plus a fiscal year greater than zero. Whether it counts as compliant is taken exactly as sent rather than worked out from the domestic tick, the country of origin or the USDA-commodity flag, and the screen never sends it, so it is false on every record and the compliance percentage is structurally 0.00%.

PTRS recognises three kinds of exception: Limited Supply, Cost Differential and Product Unavailable. It defines four exception statuses; only Pending can ever be written, there is no way to approve one, and who approved it, when, and when it expires have no writer anywhere.

Site transfers and multi-site inventory

ActionWhat it doesReachable
Create a site transferStarts as Planned. Creates no inventory transaction at either siteNo screen reaches it
List site transfersMatches a site whether it is sending or receivingNo screen reaches it
Change a transfer's statusMarking one received records who received it and moves no stockNo screen reaches it
Look up the multi-site inventory summaryOne row per site in the organisation, with stock filled inMulti-Site Inventory, works

Creating a transfer needs both site ids, the food item, a quantity greater than 0, a unit and a transfer date. It does not check that the two sites differ, that either belongs to your organisation, or that the sending site actually holds any stock. PTRS defines five transfer statuses, and the status action accepts any of them from any other with no rule about which change makes sense.

Special dietary

Seventeen things PTRS can do here. Three have a screen; the other fourteen have no screen at all, or the plumbing for one and nothing using it.

Meal substitutions

ActionWhat it doesReachable
Record a meal substitutionChecks the child and the meal record both exist in your organisationThe form on Special Dietary Accommodations, always fails
List meal substitutionsFilterable by child, meal record and siteSubstitution History on Special Dietary Accommodations
Look up one substitutionNo screen reaches it
Update a substitutionLoses its own audit trail entryNo screen was ever built for it
Remove a substitutionA gentle removal that hides rather than erasesNo screen was ever built for it
Look up the allergen cross-referenceActive CACFP participants with a recorded allergyAllergen Cross-Reference on Special Dietary Accommodations, works
List approved substitution itemsCreditable food itemsNo screen reaches it. This lookup is missing PTRS's usual organisation check, see below

Recording a substitution needs a site, a meal record, a child, the standard menu item, the substituted item and a basis, all filled in. The basis must be one of three values PTRS recognises; the form offers four choices and none of them matches. Whether it meets the meal pattern is stored exactly as ticked, with no check behind it.

Looking up approved substitution items reaches across every organisation

This lookup asks for creditable food items and leaves out the check that keeps it to your own organisation, a food item does not carry PTRS's usual automatic organisation boundary the way most records do, and this is the one place in the module that forgets to add the check by hand.

So this action would return the food catalogue of every organisation in PTRS to anyone who could reach it, and it is governed by the same rule as the rest of the module.

Nothing calls it today, and the catalogue is empty in every copy of PTRS, so the exposure today is nil. Both of those are accidents of other defects rather than real safeguards. Six other records sit in the same unguarded position and are safe only because every actual use of them adds the organisation check by hand: the food review queue, meal pattern rules and their sets, serving requirements, age-group mappings, and recipe crediting profiles.

Medical dietary statements

Four things, none with a screen: creating, listing, looking up and updating a medical dietary statement. Creating one is described in PTRS's own design as following the federal rule for a physician's order.

PTRS defines Active, Expired, Superseded and Revoked statuses for a statement. Only updating one can change its status, and nothing calls that action.

Allergy emergency protocols

Six things, none with a screen: creating, listing, looking up and updating a protocol, a staff-review step, and a lookup PTRS's own design describes as a meal-service banner for a site.

PTRS defines four severities for an allergy: Mild, Moderate, Severe and Life-Threatening. No screen renders any of it.

Requests that always fail

Eight of the twenty-two reachable actions fail on every call. Seven send a blank value where PTRS needs a real record; one sends "every site" where PTRS needs one.

Screen and controlWhy it fails
Cycle Menu Planning, New Cycle MenuWho created it is never sent, and PTRS requires it. The programme and site scope sent are also not values PTRS recognises
Menu Template Library, New TemplateThe pre-check status is never sent, and PTRS requires it. Prep complexity is Low, Medium or High, none of which PTRS recognises
Inventory Management, Record TransactionWho transacted it is sent blank
Inventory Management, summary tilesAsks for "every site" where PTRS needs one
Procurement & Vendors, VendorThe site is sent blank
Procurement & Vendors, New OrderThe site is sent blank, and the amount is sent as zero against a rule requiring more than zero
Buy American Compliance, New RecordThe site and the food item are sent blank
Special Dietary Accommodations, Record Meal SubstitutionThe site and the meal record are sent blank, plus a basis value PTRS does not define

Messages PTRS can give

What you didWhat PTRS says
Your account has no organisation"Organization context is required." Every action on this page checks this first
Sent a programme, season or site scope PTRS does not know, on a cycle menuA message naming the value as invalid
Tried to update or look up a cycle menu or template that does not exist"Not found," naming which one
Sent a meal type, prep complexity or pre-check status PTRS does not knowA message naming the value as invalid
Sent a food component or serving unit PTRS does not knowA message naming the value as invalid. These two messages are built differently from the rest of this module's messages, so they carry no fixed category of their own
Asked for a food item, rule set or review-queue item that does not exist"Not found," naming which one
Sent an inventory transaction type PTRS does not knowA message naming the value as invalid
Asked for an inventory item that does not exist"Not found"
Tried to move more stock than is on hand"Insufficient inventory," naming what was asked for and what is available
Tried to create a vendor with a tax id already in use"A vendor with Tax ID '…' already exists."
Asked for a vendor that does not exist"Not found"
Sent a procurement method PTRS does not knowA message naming the value as invalid
Asked for a purchase order that does not exist, or tried an action its status does not allowA message naming the problem
Sent a date PTRS cannot readA message naming the value as invalid
Asked for a Buy American record that does not exist, or sent an exception type or status PTRS does not knowA message naming the problem
Asked for a site transfer that does not exist, or sent a status PTRS does not knowA message naming the problem
Sent a substitution basis PTRS does not know, or asked for a substitution, child or meal record that does not existA message naming the problem

Where to go next

Checked against PTRS on 7 September 2026.