CalcMenu

Stock & Inventory Management Software

From booking to plate — traced at every step.

FoodOps is stock and inventory management software built for foodservice and hospitality kitchens, running on Odoo. It handles what your CalcMenu modules don't: purchasing, lot-tracked goods receipts, traceable production, HACCP compliance and Zebra label printing — all synced to CalcMenu in real time.

Book a demo
Illustration of a delivery truck connected to a tagged pallet, a production facility, a barcoded label, and a traced document

What changes for you

Without FoodOps

A supplier recall lands, and the answer to which dishes are affected lives in three disconnected systems — purchasing, production, and whatever paper trail survived the shift. By the time you've pieced it together, the food may already be served.

With FoodOps

FoodOps ties every lot to every dish automatically, from goods receipt through production to the plate — a recall becomes a search you run in seconds, not an investigation you run for days.

  • Trace any lot to every dish it touched, in seconds, not days.
  • Purchasing, production and HACCP records stop living in three separate systems.
  • Your HACCP file builds itself during service — not scrambled together after.

CalcMenu handles recipes. FoodOps handles the rest.

Your CalcMenu modules are excellent at recipes, menus and allergens. They're not built for purchasing, traceability or accounting — that's exactly what FoodOps adds, synced to CalcMenu in real time.

Already in your toolkit

CalcMenu

  • Menu planning
  • Recipes & BOMs
  • Portion scaling
  • Nutrition
  • Allergens (14 EU)

Standard Odoo has no allergen management, nutritional calculations or menu planning — these are CalcMenu's core strengths, purpose-built for food service.

powered by Odoo 18

CalcMenu FoodOps

Food operations

  • Orders & goods receipt
  • Lots & traceability
  • Manufacturing orders
  • HACCP & compliance
  • Label printing
  • Supplier recalls

Full ERP

  • Non-food purchasing
  • Accounting
  • Sales & webshop
  • Multi-site & central kitchen

Is FoodOps right for you?

You need it if…

  • You cook and produce — not just reheat delivered meals
  • You need to answer in minutes: "which supplier lot is in tonight's dish?"
  • You have HACCP or regulatory lot traceability obligations
  • You receive goods in lots (meat, fish, dairy)
  • You have multi-level recipes or fresh → frozen transformations
  • You use CalcMenu and want BOMs synced automatically

Not yet necessary if…

  • You only deliver catered meals with no in-house production
  • You have no legal lot traceability obligations
  • Your volume is under 50 covers/day

Beyond the kitchen — your entire operation on one platform.

FoodOps runs on Odoo 18, a full ERP platform. Alongside the food-specific features, you also get accounting, sales, e-commerce and multi-site management — no extra tools needed.

Non-food purchasing

Uniforms, cleaning products, kitchen equipment — in the same purchase orders as food. One vendor catalog, one accounting flow.

Integrated accounting

Supplier invoices, cost centre allocation, VAT returns. FoodOps purchasing feeds directly into accounting — no separate finance software.

Sales & webshop

Orders from event clients, corporate canteen or satellite sales points. Optional B2B webshop for daily menus, sandwiches and pastries.

Central kitchen & multi-site

One Odoo instance manages production at a central kitchen and deliveries to multiple service points. Stock transfers tracked site by site.

Every delivery, a lot number. Automatically.

Automatic lot generation

On receipt validation, every lot-tracked line gets a PRODUCT-YYYYMMDD-001 number. No manual entry, no collisions.

Catch weight — price per piece and per kg

For variable-weight products (meat, fish, melons): fixed unit price, price/kg adjusts automatically to the actual received weight.

Supplier unit normalisation

"Kg", "Pz", "bt 750ml" — every raw supplier unit string is converted to a canonical Odoo UoM automatically. 132 pre-configured aliases.

From CalcMenu recipe to production order — no re-entry.

BOM synchronisation

CalcMenu recipes sync to Odoo Bills of Materials via the FoodOps API. Change a recipe in CalcMenu and the BOM updates automatically.

Production lots PRO-

On manufacturing order completion, the finished product gets a PRO-PRODUCT-YYYYMMDD-001 lot automatically, linked to all consumed component lots.

Fresh → frozen traceability

Transformations are recorded as manufacturing orders. Lot genealogy is preserved through freezing and thawing.

Supplier recall? Every affected dish found in a few clicks.

Multi-level recall

The trace walks recursively through sub-recipes and fresh→frozen layers — not just direct consumers. No affected dish falls through the net.

Full lot chain

Supplier receipt → manufacturing orders → finished lots → current stock location. Every link is traced and dated.

Consumption history

Trace from what was served back to the original supplier lot — for illness investigations or regulatory inspections.

Your HACCP file builds itself during service — not after.

Automatic HACCP protocols

CCP1 documents per receipt, daily logs, per-lot and per-production sheets — all time-stamped, all exportable on demand.

Expiry guard

If a component lot is expired, the manufacturing order is blocked before completion. A manager can override with a reason, logged in the HACCP journal.

FEFO enforced — first expired, first out

Lots closest to expiry are consumed first. Tracked and reported in all traceability documents.

The label prints at the right moment, on the right printer, with the right data.

Automatic printing

A ZPL label is sent to the Zebra printer on receipt validation and manufacturing order completion — no extra clicks.

Allergens from CalcMenu

Allergen data propagated from CalcMenu prints directly on the production label — no re-entry, no copy errors.

Manual reprint

Reprint any lot label from the lot, the receipt or the manufacturing order. Choose printer and number of copies.

Server-side guards so kitchen mistakes don't go through.

Location whitelist

Each operation type (receipt, freeze, thaw, consumption) only allows its valid source→destination pair. Wrong moves are blocked before they post.

Vendor catalog filter

The product dropdown on a purchase order only shows what the selected supplier actually sells.

Expired component block

On manufacturing order confirmation, FoodOps checks every reserved lot. If one is expired, an error lists the affected lots before any stock is consumed.

Reference customer

Sport & residential catering — public sector

CalcMenu FoodOps has been live at a major Swiss residential sports facility since 2026. Kitchens serve training groups daily, with full HACCP traceability requirements and multi-level supplier recall.

2 500+

products traced

10

custom Odoo modules

100%

HACCP automated

For Odoo customers and partners

FoodOps is a set of Odoo 18 modules — whether you're evaluating it as a customer or integrating it as a partner.

Already running Odoo, or an Odoo partner looking for a vertical food-service add-on? Here's the technical detail: what ships, how it deploys, and what it takes to integrate.

Custom modules

  • foodops_kitchen

    Lot auto-generation (receipt + MO), FEFO assignment, expiry guard, HACCP protocols

  • foodops_reports

    Multi-level supplier recall report, expiring lots report + daily alert email

  • foodops_label_print

    ZPL label wizard, PrintNode integration, auto-print on receipt / MO validation

  • foodops_uom_aliases

    132 pre-configured supplier unit aliases → canonical Odoo UoM

  • foodops_expiry_guard

    Blocks manufacturing order completion when a consumed lot has expired — override requires a logged reason for HACCP audit

  • foodops_purchase_price

    Catch-weight purchasing: separate price-per-piece and price-per-kg for meat, fish, melons — no manual recalculation

  • foodops_product_defaults

    Per-category smart defaults (tracking, UoM, shelf life, routes, taxes) applied automatically on product creation

Stack & models

  • Odoo 18.0 Community or Enterprise
  • Python 3.11 · PostgreSQL 16
  • PrintNode (ZPL · Zebra GK420t / ZT411)
  • Azure Functions — CalcMenu BOM sync API (optional)
  • Models: mrp.production · stock.picking · mrp.bom · stock.lot

Deployment

  • Standalone modules — work without CalcMenu
  • CalcMenu API required only for automatic BOM sync
  • PrintNode account required for Zebra label printing
  • On-premise or cloud — no EGS infrastructure dependency
  • Standard install: git clone + odoo -u module_name

Odoo 18 modules available today. Already on Odoo? We can scope a direct integration. Odoo partner? We work together to bring FoodOps to your collective-catering and hospitality clients.

Talk to the technical team

15 minutes to see if CalcMenu changes your day-to-day.

We won't sell you software. We'll look at what's wearing you down today and check together if CalcMenu fits.

Talk to a human — 15 min