Menu Inventory¶
Menu Location: Products > Menu Inventory (breadcrumb on the page reads Products > Menu Builder > Menu Inventory)
Last Updated: 2026-07-27
Overview¶
The Menu Inventory page (kiv/inventory.php) is your inventory and order-planning tool for products on the menu. It lists every product on the current week's menu (or your permanent/standing products), shows demand calculated from customer orders, tracks what you have ordered from each distributor, and lets you set retail prices and stock levels.
Primary Functions:
- View demand, in-stock, and reserved levels for menu products
- Track distributor information (case price, case quantity, units, cases ordered) per product
- Add, edit, or remove a distributor source for a product
- Auto-calculate retail prices from wholesale (case) cost
- Auto-calculate "In Stock" from total cases ordered
- Regenerate customer box orders
- Toggle substitution settings (allow subs, sub quantity cap, sub cost override)
- View and download distributor purchase-order invoices
Page Layout¶
Header Section¶
- Product Type dropdown: All Products / Week Products / Permanent Products, applied with the "Update" button
- Week selector: choose which week's inventory to view, applied with the "Update" button
- Regenerate Box Orders button (top right) - recreates customer orders from the current menu/inventory; disabled once the week has been closed
- Gear (wrench) icon dropdown - Auto Set In Stock, Auto Set Retail, a link to Inventory Invoices, and the column-visibility toggles
- List icon button (top right) - opens Inventory Invoices for the current week
- PDF icon button (top right) - downloads all distributor invoices for the week as one PDF
Weekly Cycle Setup Steps¶
If the store's weekly cycle is still in its first stage (menu-building) and you're viewing the current week, the page shows a short "getting started" box above the table with the real next steps:
- Add products - go to Menu Builder to add products to the box menus
- Set Menu Quantity - enter how many of each product go in each box
- Create Orders - click "Create Orders", then check this Menu Inventory page for the quantities you'll need to order; if something looks off, go back and adjust step 2
- Done - once you're happy with the menu, click "All Done!" on the Weekly Cycle page
This box only appears during that first step of the weekly cycle; once you move past it, it disappears from this page.
Main Inventory Table¶
Spreadsheet-style table, one row per product. Real columns (some hidden by default, see Column Visibility Settings):
- Sub? - checkbox: does this product allow substitutions
- Sub Qty Max - maximum quantity allowed when this product is used as a substitute
- Sub Value - optional override cost used instead of the wholesale cost when the system calculates substitutions for this product
- Product - product/price name, links to the product's edit page
- Planned Order From Dist - one line per distributor currently assigned to the product (name, case qty, unit, cost), a field to enter cases you're ordering from each, a "+" button to add another distributor, and click-through to edit/remove a distributor
- Cost/Unit - wholesale cost per unit, computed from case price ÷ case quantity
- Retail Price - customer-facing price (editable)
- In Stock - units available (editable, or set in bulk via Auto Set In Stock)
- Res. - reserved units (already committed to open orders)
- F.Dmd - future demand from shopping lists (only shown if the future-cart feature is enabled for the store)
- Dmd (per) - demand in units, calculated from customer orders for the week
- Dmd (cs) - demand converted to cases (demand ÷ case quantity)
- Order - remaining need (demand minus what's already ordered across distributors)
- Options - edit/delete links back to the Menu Builder entry for this product
Footer Sections¶
- Totals - one text block per distributor listing cases needed for that distributor plus an order total
- Changes to Make - per distributor, how many more cases you still need to order given what's already entered
- Your Current Order - per distributor, what you've actually entered in the "Ordered" fields, with a total
Product Type Filter¶
Controls which products are displayed on the page:
Options:
- Week Products - only products added to this specific week's menu
- Permanent Products - only standing/always-available products
- All Products - both weekly and permanent products (default for most stores)
How to Change:
- Select product type from the dropdown
- Click "Update"
- Page reloads with filtered products
When to Use Each:
- Week Products: when planning distributor orders for this week's menu
- Permanent Products: when managing standing inventory for always-available items
- All Products: when you need the complete picture
Distributor Management¶
Understanding Distributor Rows¶
Each product can have multiple distributors listed in the "Planned Order From Dist" column. For each distributor you see:
Case Qty: how many units come in one case
Case Cost: wholesale cost of one case
Ordered: cases you're planning to order from this distributor - enter directly in the field on the row; this saves immediately when you click away, no separate save step needed
Units: unit of measure (from the Product Units list)
Distributor: which distributor supplies this line, set from a dropdown when adding or editing
Adding a Distributor to a Product¶
Purpose: Add an additional distributor source for a product
Steps:
- Find the product in the table
- Click the "+" button in its "Planned Order From Dist" column
- In the popup: select a distributor, enter Case Cost, Case Qty, and Case Units
- Click "Add New Distributor"
The new distributor line starts with 0 cases ordered; enter the ordered amount afterward directly in the table.
Use Cases:
- Product available from multiple vendors
- Comparing prices between distributors
- Backup supplier for high-demand items
Updating Distributor Information¶
Purpose: Change case pricing, quantity, units, or the assigned distributor for a distributor line
Steps:
- Click on the distributor's name/line in the "Planned Order From Dist" column to open "Edit Distributer Menu Data"
- Update Distributor, Case Qty, Case Cost, and/or Case Units
- Click "Update Distributor"
The "Ordered" (cases) amount is not part of this popup - change it directly in the table row, where it saves automatically.
Removing a Distributor¶
Purpose: Remove a distributor source from a product
Steps:
- Click on the distributor's line in the "Planned Order From Dist" column to open its edit popup
- Click "DELETE" / "Remove Distributor" at the bottom of the popup
Inventory Management¶
Understanding Demand¶
Dmd (per) and Dmd (cs) show how many units/cases of a product are needed, calculated from customer orders for the selected week. Clicking the demand number links to the matching customer orders.
Understanding Reserved Stock¶
Res. shows inventory already reserved by open customer orders for this product.
In Stock¶
In Stock is a manually-entered number of available units. There is no fixed formula tying it to Ordered/Reserved on this page - you set it directly, or use Auto Set In Stock to calculate it in bulk from what you've ordered (see Auto-Set Features below).
Manual Inventory Adjustments¶
Purpose: Manually set the In Stock number for a product
Steps:
- Find the product in the table
- Update the "In Stock" field
- Click away from the field - it saves automatically
When to Use:
- Physical inventory count differs from the system
- Waste or damage adjustments
- Manual corrections
Auto-Set Features¶
Auto-Set In Stock¶
Purpose: Set the "In Stock" number for every product on the page in one step, based on how many cases you've ordered
How to Access:
- Click the gear icon
- Select "Auto Set In Stock"
Configuration:
- Enter "Inventory Safe" percentage (0 or higher)
- Click "Auto Set In Stock"
How It Works:
- For each product, the system totals the cases ordered across all its distributors
- In Stock is set to that total minus your safety percentage of the total, rounded up
- Example: 100 cases ordered, 10% safety, In Stock is set to 90
When to Use:
- After finalizing weekly orders
- When you want a consistent safety buffer
- For quick inventory setup
Auto-Set Retail Price¶
Purpose: Recalculate retail prices for weekly products from wholesale cost and a markup multiplier
How to Access:
- Click the gear icon
- Select "Auto Set Retail"
Configuration:
- Enter the markup multiplier (must be greater than 1) - e.g. 2.5 means retail = 2.5x wholesale cost per unit
- Choose the last-digit price ending: 0 or 9 (that's the only choice offered)
- Click "Auto Set Retail Price"
How It Works:
- Cost per unit = case price ÷ case quantity
- Raw retail = cost per unit × your markup multiplier, rounded to the nearest ten cents
- The last digit is then forced to whichever ending (0 or 9) you chose
- Example: $1.20 cost x 2.5 markup = $3.00 raw, forced to end in 9 = $3.09
Important Notes:
- Only updates weekly products for the currently-selected week - it does not touch permanent products or other weeks
- The markup multiplier you enter is remembered as the default next time
Column Visibility Settings¶
Toggle these from the gear icon; each choice is remembered per store:
- Sub? column - Show/Hide the substitution-allowed checkbox
- Sub Value Override column - Show/Hide the substitution cost-override field
- Sub Qty Max column - Show/Hide the max substitution quantity field
- Planned Order From Dist column - Show/Hide the distributor detail column
- Table Full Width / Keep Table Narrow - toggles the table's max width
Use Cases:
- Hide columns you don't use to reduce clutter
- Show substitution columns when managing substitution rules
Regenerate Box Orders¶
Purpose: Recreate customer box orders based on the current menu and inventory settings
Steps:
- Click "Regenerate Box Orders" (top right)
- The system recalculates customer orders
- Demand values update
Important Warnings:
- Regenerating recreates orders from the current menu configuration and can overwrite customer customizations already on those orders
- There is no undo
- The button is disabled once the weekly cycle has moved past the ordering stage (a closed week)
Inventory Invoices¶
Purpose: View and download distributor purchase orders for the week
Features:
- List icon (top right) - opens Inventory Invoices, showing one order per distributor for the current week, each with its own "PDF" button
- PDF icon (top right) - downloads all distributor invoices for the week as a single combined PDF
Typical Workflow:
- Finish planning your distributor orders on this page
- Click the list icon to review invoices per distributor
- Download individually or as one combined PDF
- Send to your distributors
Common Use Cases¶
Use Case 1: Planning Weekly Orders¶
Goal: Determine how much to order from each distributor for the week
Steps:
- Select the current week from the week selector
- Set Product Type to "Week Products"
- Review the Dmd (cs) column for each product
- Check current In Stock levels
- Enter the number of cases needed in each distributor's "Ordered" field (it saves as you tab away)
- Repeat for all products
- Review "Your Current Order" and "Changes to Make" at the bottom of the page
- Download invoices to send to distributors
Tips:
- Start with high-demand items first
- Consider delivery lead times
- Round up on perishables
Use Case 2: Updating Distributor Pricing¶
Goal: Update wholesale costs when a distributor changes prices
Steps:
- Receive a price update from the distributor
- Find products from that distributor and open each distributor line to edit
- Update Case Cost, then click "Update Distributor"
- Use "Auto Set Retail Price" if you want retail prices to follow, or update Retail Price manually per product
- Review new retail prices for reasonableness
Important:
- Price changes affect profit margins immediately
- Consider competitive pricing when setting retail
Use Case 3: Managing Product Substitutions¶
Goal: Configure which products can substitute for others
Steps:
- Show the Sub?, Sub Value, and Sub Qty Max columns (gear icon > column visibility)
- Find the product in the table
- Check/uncheck "Sub?" to allow or disallow substitutions for this product
- Optionally set "Sub Value" - an override cost the system uses instead of wholesale cost when finding subs for this product
- Optionally set "Sub Qty Max" - the maximum quantity allowed when subbing
- Changes save automatically as you tab away from each field
Use Cases:
- Out-of-stock items need alternatives
- Similar products can interchange
- Seasonal substitutions
Use Case 4: Adding a Backup Distributor for a Product¶
Goal: Add a second distributor as a backup supplier
Steps:
- Find the product in the table
- Click the "+" button in its "Planned Order From Dist" column
- Select the new distributor, enter Case Cost, Case Qty, and Case Units
- Click "Add New Distributor"
- Enter the cases you want ordered from the new distributor directly in its row (starts at 0)
Benefits:
- Price comparison
- Backup during shortages
- Split orders between suppliers
Use Case 5: Correcting Inventory Count¶
Goal: Fix the In Stock count after a physical count reveals a discrepancy
Steps:
- Find the product in the table
- Note the current "In Stock" value
- Compare to your physical count
- Enter the correct count in "In Stock" - it saves automatically when you click away
Common Causes:
- Unrecorded waste
- Theft/damage
- Incorrect receiving count
Saving Changes¶
Most fields on this page save automatically - there is no "Save" button on the main table. Ordered amount, In Stock, Retail Price, Sub?, Sub Value, and Sub Qty Max all post their change to the server as soon as you edit the field and click/tab away; a small confirmation message flashes near the top of the page.
The one exception is a distributor's Case Qty / Case Cost / Units / assigned Distributor - those live in the "Edit Distributer Menu Data" popup and require clicking "Update Distributor" in that popup to save.
Troubleshooting¶
A Field Doesn't Seem to Have Saved¶
Symptoms: You changed a value but it looks unchanged after a refresh
Check:
- Did you click or tab away from the field after typing? The save fires on that action, not on every keystroke
- Watch for the small confirmation message that flashes near the top of the page after you change a field
- If you were editing a distributor's Case Qty/Cost/Units, did you click "Update Distributor" in the popup?
- Check the browser console for JavaScript errors
Demand Shows Zero But Customers Have Orders¶
Symptoms: Product shows 0 demand but you know customers ordered it
Check:
- Verify you're viewing the correct week
- Check if orders have been regenerated recently
- Verify the product is actually on customer orders for this week
- Check the Product Type filter isn't hiding it
Solutions:
- Click "Regenerate Box Orders"
- Verify the menu setup in Menu Builder
Auto-Set Inventory Not Working¶
Symptoms: Clicked Auto Set In Stock but In Stock values don't change the way you expect
Check:
- Verify you entered a safety percentage of 0 or higher
- Check the Product Type filter - Auto Set only processes products in the current filtered list
- Verify cases are actually entered in the distributor "Ordered" fields for the products in question
Retail Prices Not Calculating Correctly¶
Symptoms: Auto Set Retail Price produces unexpected values
Check:
- Verify the markup multiplier is greater than 1
- Check distributor Case Cost and Case Qty are correct - Cost/Unit is derived from these
- Remember the price-ending choice is only 0 or 9, not any digit
- Auto Set Retail Price only touches weekly products for the selected week - permanent products and other weeks are untouched
Cannot Add Distributor¶
Symptoms: Click the "+" button but nothing happens
Check:
- Verify the distributor exists on the Distributors page
- Check the browser console for JavaScript errors
- Refresh the page and try again
Related Pages¶
- Menu Builder (
build_menu.php) - create and configure weekly menus - Products (
product_classifications_active.php) - manage the product catalog - Distributors (
admin-edit.php?table=distributers) - manage distributor/vendor records - Inventory Demand (
product_classifications_print_inv.php) - live demand report for ordering - Inventory Invoices (
inventory-invoices.php) - view and download purchase orders - Orders (
cust_order.php) - view the customer orders driving demand
Typical Workflow:
- Menu Builder -> build this week's menu
- Menu Inventory -> plan distributor orders
- Inventory Invoices -> download and send orders to distributors
- (receive inventory)
- Orders page -> fulfill customer orders
Best Practices¶
Order Planning¶
- Review demand before ordering
- Account for safety stock
- Consider product shelf life
- Check delivery schedules
- Plan for growth (special events, holidays)
Pricing Strategy¶
- Set consistent markup multipliers by category
- Use the 9-ending option for psychological pricing ($X.X9) if that fits your store
- Review competitor pricing regularly
- Account for waste/spoilage in markup
Inventory Accuracy¶
- Perform regular physical counts
- Record waste/damage immediately
- Reconcile inventory weekly
- Investigate large discrepancies
Substitution Management¶
- Only allow subs for similar products
- Use the Sub Value override when the substitute's real cost differs meaningfully from wholesale cost
- Set a Sub Qty Max to prevent over-substitution
- Update sub rules seasonally
Things to Avoid¶
- Don't regenerate orders after customers have customized theirs
- Don't set the safety percentage too high (wastes money) or too low (causes stock-outs)
- Don't change distributors mid-week without reason
- Don't ignore inventory discrepancies
Integration Points¶
Menu Builder¶
- Products from Menu Builder appear here
- Changes to menu structure affect the inventory view
- Regenerating orders uses the Menu Builder configuration
Customer Orders¶
- Customer orders drive the Demand columns
- Order changes may require regenerating box orders
- Reserved stock reflects committed orders
Distributors/Vendors¶
- Distributor information pulls from the Distributors page
- Create the distributor there before assigning it to a product here
Accounting/Bookkeeping¶
- Inventory invoices are used for accounting
- Cost data affects profit calculations
- Pricing affects revenue projections
Quick Reference Card¶
| Task | Action/Location |
|---|---|
| View different week | Week selector -> Update |
| Filter product types | Product Type dropdown -> Update |
| Order from a distributor | Enter cases in that distributor's "Ordered" field (autosaves) |
| Add distributor to product | "+" button in Planned Order From Dist column -> fill form -> Add New Distributor |
| Edit/remove a distributor | Click its line in Planned Order From Dist -> Update Distributor or DELETE |
| Auto-calculate In Stock | Gear icon -> Auto Set In Stock -> enter % -> Auto Set In Stock |
| Auto-calculate retail prices | Gear icon -> Auto Set Retail -> enter markup + ending digit -> Auto Set Retail Price |
| Update case cost/qty/units | Edit Distributer Menu Data popup -> Update Distributor |
| Update retail price | Change "Retail Price" field (autosaves) |
| Set manual In Stock | Change "In Stock" field (autosaves) |
| Regenerate orders | "Regenerate Box Orders" button (top right) |
| View invoices | List icon (top right) |
| Download invoices | PDF icon (top right) |
| Show/hide columns | Gear icon -> column visibility options |
FAQs¶
What's the difference between "Ordered" and "In Stock"?¶
Ordered is the number of cases you're planning to buy from a specific distributor. In Stock is the number of individual units available for customer orders - you set it manually, or calculate it in bulk with Auto Set In Stock.
Why would I use multiple distributors for one product?¶
Common reasons: price comparison, backup supplier during shortages, or splitting orders for fresher product/better delivery schedules.
What happens when I regenerate box orders?¶
The system recalculates customer subscription boxes based on the current menu configuration. This can overwrite customer customizations already on those orders, and demand values update to reflect the new calculation. There is no undo.
How does the safety percentage work?¶
If you've ordered 100 cases total for a product and set 10% safety, Auto Set In Stock sets "In Stock" to 90 for that product.
Can I undo changes after they save?¶
No. Most fields save immediately as you edit them - there's no confirmation step and no undo.
Why are some products not showing up?¶
Check the Product Type filter - you may be viewing only Week or only Permanent products. Also verify the week selector is showing the correct week.
How do I remove a product from inventory?¶
You remove it from the menu in Menu Builder, not from this page.
Change Log¶
2026-07-27¶
- Rewrote the page against the actual
kiv/inventory.phpsource: corrected the Product Type option labels, the Auto Set Retail Price digit choice (0 or 9 only, not a full range), the "Sub Value" field meaning (a cost override used instead of wholesale cost, not a substitution ratio), and the In Stock/Auto-Set formulas - Replaced the "Save All Changes button" workflow (removed from the page in Aug 2022) with the real per-field autosave behavior, including the one exception (the distributor edit popup)
- Removed the invented "Permissions & Access" role-tier section and "Access Level" header - this page has no such role system
- Removed the invented "cannot remove the last distributor" restriction and the invented "initial order" field on the add-distributor form
- Corrected the Weekly Cycle status section to reflect the real conditional first-step guide box and its actual steps
2026-03-01¶
- Initial documentation created
End of Documentation
For additional help, contact your system administrator or Kiva Logic support.