SymbifoxUser guide Français

Part 4 · Finance

Kitchen: recipes and plate cost

The technical sheets of a restaurant, a caterer or a kitchen, the cost of each plate taken from the vendor bills, the suggested price and the allergens of the menu.

Symbifox 18.0 (September 2026 catalogue) · Modules: bf_kitchen, bf_food_allergen · Base applications: mrp, stock, Purchase · Revised 2026-10-29

Watch it

Video : Kitchen
Video · Kitchen · 1:05 · https://symbifox.com/videos/bf_kitchen-en.mp4

The Kitchen application holds the technical sheets of a restaurant, a caterer or an institutional kitchen: the ingredients, the base preparations and the dishes, with the yield of each ingredient. It is for the chef who writes the recipes, the kitchen manager who sets the prices, and the accounting staff who enter the bills. What you get: the cost of each plate follows the vendor's last bill, without copying a single price.

Overview#

Three kinds of products live in Kitchen:

  • an ingredient is bought and stocked (whole salmon, 35% cream, flour);
  • a preparation is a sub-recipe used in other recipes (stock, sauce, dough, dressing);
  • a dish is sold: it is what the customer sees on the menu.

A recipe says what it takes to make a dish or a preparation. Each line holds the net quantity (what ends up on the plate), the yield (the share left after trimming or cooking) and the gross quantity, the one that leaves the stock. For 120 g of peeled shrimp with a 60% yield, the recipe takes 200 g of shrimp as bought.

The cost of an ingredient comes from the last validated vendor bill, brought back to the stock unit. The cost of a preparation follows its own ingredients, and the cost of a dish adds up its lines. The recipe of a dish then shows the plate cost, the food cost ratio (plate cost over selling price), the target, a suggested price and the margin.

Recipes are Odoo bills of materials of type kit. When a dish leaves the stock, at the register or at delivery, Odoo replaces it with its ingredients. The stock valuation stays Odoo's: the application never changes the inventory cost of a product.

The cards of Recipes show at a glance which dishes need attention.

Cards of the 21 dishes of Bistro Boréal, with the plate cost, the food cost ratio and the Over target and Cost too old badges
The recipes of Bistro Boréal

Configuration#

Access and rights#

The application adds two groups, set on the user form, Kitchen section:

Group What it opens
Cook Read recipes, preparations and ingredients, without any cost. Also gives user access to Inventory.
Kitchen manager Write recipes and kitchen products, see every cost, apply the suggested price, receive ingredients from a bill, print the technical sheet with costs.

The kitchen manager needs no right in the Manufacturing application. That write access is limited to kitchen products and recipes. The taxes, accounts, category and inventory cost of a product stay out of reach.

Lines to attach and Costs to check also take the billing rights (Accounting, Billing).

Settings#

The settings are in Kitchen › Configuration › Settings (administrators only). They apply to the company selected at the top right.

Kitchen settings of the company: target food cost, suggested price rounding, maximum age of a cost, alerts, non-recoverable taxes, receiving
The Kitchen settings
  • Target food cost: the target of a new recipe, 30% by default. Each dish can then have its own.
  • Suggested price rounding: no rounding, to the next 0.05, to the next 0.25, to the next dollar, or ending in .95.
  • Cost too old after (days): 60 by default. A recipe with an older ingredient cost carries the Cost too old badge.
  • Alerts: the rise, in points, that raises a new alert on a dish already over its target, and the person who receives the alerts. Left empty, the alert goes to whoever validates the bill.
  • Non-recoverable taxes (%): the share of the bill taxes that goes into the ingredient cost. Leave 0 if the organization claims its taxes back; an organization that claims back only part of them enters the rest.
  • Receive from the vendor bill: shows the Received button on draft vendor bills without a purchase order.

Base data#

Before writing the recipes:

  1. Check Food supplier on the form of each food vendor (Sales & Purchase tab, Purchase section). Only their lines without a product reach Lines to attach.
  2. Create the ingredients you buy, each in its smallest kitchen unit: g, ml or unit.
  3. Check the list of allergens in Kitchen › Configuration › Allergens. It holds Health Canada's eleven priority allergens.
Vendor form, Sales and Purchase tab, with the Food supplier box checked in the Purchase section
A food supplier

Getting started#

This walkthrough creates an ingredient, then a dish, and reads its cost. It assumes the Kitchen manager group.

  1. Open Kitchen and select the restaurant's company at the top right.
  2. Go to Kitchen › Ingredients, then select New.
  3. Enter the name ("Whole salmon"), the Stock unit (g), the Yield (%) ("45") and the "Fish" allergen in Contains, then save.
  4. Go to Kitchen › Recipes, then select New.
  5. In Recipe of, type the name of the dish and create it. Enter the number of portions in Makes.
  6. In the Ingredients tab, add the salmon and enter the Net quantity for the recipe. The gross quantity follows from the yield.
  7. Save, enter the Selling price, then read the Plate cost, the Food cost (%) and the Suggested price.

Until a bill has given its price, the ingredient costs what you entered in Entered cost. The first validated bill replaces it.

Common tasks#

Create an ingredient and its allergens#

An ingredient holds its stock unit, its default yield and its allergens.

  1. Go to Kitchen › Ingredients, then select New.
  2. Enter the name, the Stock unit and the Purchase unit.
  3. Enter the usual Yield (%) (100 if nothing is lost).
  4. In Contains, add the allergens of the ingredient.
  5. In May contain, add the cross-contamination risks the vendor declares.
  6. Optional: enter an Entered cost until the first bill.
  7. Save.

The form then shows where the cost comes from: Cost from says "Vendor bill" or "Entered", Cost date gives its date, and Cost bill line opens the line that set it.

Form of the ingredient Crevettes nordiques 31/40: cost from a vendor bill, its date and line, 60% yield and allergen
An ingredient and its cost

Write a preparation#

A preparation (stock, sauce, dough) is written like a dish, but it serves as an ingredient in other recipes.

  1. Go to Kitchen › Preparations, then select New.
  2. In Recipe of, type the name of the preparation and create it.
  3. In Makes, enter what the recipe yields, with its unit ("1000" ml, "500" g).
  4. Add the ingredients with their Net quantity and yield.
  5. Write the steps in the Method tab.
  6. Save.

The cost of the preparation follows its ingredients. When you save it, every dish that uses it recomputes its own cost.

Recipe of the white wine and cream sauce: makes 1,000 ml, five ingredients with net quantity, yield, gross quantity and line cost
A preparation

Write the recipe of a dish#

  1. Go to Kitchen › Recipes, then select New.
  2. In Recipe of, type the dish and create it.
  3. In Makes, enter the number of portions of the recipe.
  4. In the Ingredients tab, add the ingredients and preparations, with their Net quantity.
  5. Correct the Yield of a line if needed: it is copied from the ingredient when the line is created, then kept as is.
  6. Enter the Preparation time (min) and the Method.
  7. Save.

The panel on the right fills in: Plate cost, Selling price, Food cost (%), Target food cost (%), Suggested price, Margin per portion, Recipe cost and Oldest ingredient cost. A food cost above the target shows in red.

Recipe of the shrimp linguine: plate cost $7.34, food cost 33.37% in red, suggested price $24.50 and ingredient lines
The recipe of a dish

Set the selling price of a dish#

  1. Open the recipe of the dish in Kitchen › Recipes.
  2. Compare the Food cost (%) with the Target food cost (%).
  3. Change the dish's target if needed, then save.
  4. Select Apply the suggested price to take the Suggested price as the selling price.

The suggested price is the plate cost divided by the target, rounded with the company's rule. For the Bistro Boréal linguine, $7.34 at 30% gives $24.47, rounded to $24.50.

Attach a bill line to an ingredient#

A bill entered without a product ("Fleur de sel, case of 6 x 250 g") gives no cost until it is attached.

  1. Go to Kitchen › Vendor bills › Lines to attach.
  2. On the line, select Attach.
  3. Choose the Ingredient, or create it.
  4. In Stock units per billed unit, enter the format ("1500" g for a case of 6 x 250 g).
  5. Enter the Vendor's code if the bill shows one.
  6. Leave Remember for this vendor checked, then select Attach.

The posted line is not rewritten: its price becomes the ingredient cost. The vendor line created on the ingredient makes the next bill from that vendor carry the product, whether it is typed or read by the bill scanning.

Wizard that attaches a bill line: line, vendor, billed quantity, ingredient, format and the Remember for this vendor box
Attach a line

A line that is not food (delivery fee, deposit) is set aside with Not an ingredient.

Receive the ingredients from the bill#

When the goods arrive with the bill, without a purchase order, the receipt is made from the bill.

  1. Enter the vendor bill, or let the scanning read it.
  2. Leave it in draft and set the ingredient as the product of each food line.
  3. Select Received at the top of the bill.
  4. Validate the bill.

The ingredients come into stock on that day, once per line, at the line's cost. Putting the bill back to draft does not receive them again. Cancelling the bill sends back to the vendor what is still in stock; what was already used stays, and a note on the bill says so.

Respond to a cost alert#

When a bill pushes a dish over its target, or further over it, the kitchen manager receives an activity on the dish.

  1. Open the Plate cost over target activity from your activities.
  2. Read the ingredients and the bill involved.
  3. Open the recipe of the dish to read the figures.
  4. Change the recipe, the target or the price, then mark the activity as done.

Only one alert stays open per dish. The activity carries no figure, since anyone who reads the product reads it too: the figures are on the recipe.

Dish form, Kitchen tab, with its allergens and the Plate cost over target activity in the discussion thread
An alert on a dish
  1. Go to Kitchen › Recipes, in list view.
  2. Check the recipes you want.
  3. Open the Print menu.
  4. Choose Technical sheet, Technical sheet with costs or Allergen sheet.

The technical sheet with costs is reserved for the kitchen manager. The allergen sheet crosses the dishes with the eleven allergens, with a filled dot for "contains" and a circle for "may contain".

Technical sheet with costs of the linguine: ingredients with net, yield, gross, unit and cost, then plate cost, price and allergens
Technical sheet with costs

The menus, one by one#

Kitchen › Recipes: the dishes, as cards. Each card gives the plate cost and the food cost ratio, with the Over target and Cost too old badges. The list view adds the selling price and the suggested price, and sorts the dishes by food cost. The search finds a recipe by its name or by one of its ingredients.

List of recipes with portions, plate cost, selling price, food cost, suggested price and the Cost too old box
The recipes as a list

Kitchen › Preparations: the sub-recipes, as a list, with what each one makes and its cost per unit made.

List of the ten preparations of Bistro Boréal with the quantity made and the unit
The preparations

Kitchen › Ingredients: the ingredients bought, with the stock unit, the yield, the kitchen cost, its source, its date and the allergens. The search finds an ingredient by vendor or by allergen.

List of the ingredients with stock unit, yield, kitchen cost, cost source, date and allergens
The ingredients

Kitchen › Vendor bills: groups the two screens below, visible with the billing rights.

Kitchen › Vendor bills › Lines to attach: the lines without a product on the posted bills of food suppliers, with the Attach and Not an ingredient buttons.

Three lines without a product on a fine grocery bill, each with the Attach and Not an ingredient buttons
Lines to attach

Kitchen › Vendor bills › Costs to check: the posted bill lines whose unit cannot be brought back to the ingredient's stock unit (a case billed for an ingredient stocked in grams, with no known format). Give them a format with Attach. When empty, the screen says "No bill line is waiting".

Kitchen › Configuration: groups the settings, reserved for the kitchen manager.

Kitchen › Configuration › Settings: the company settings (see Settings above), for administrators.

Kitchen › Configuration › Allergens: the shared list of allergens, used by the other applications that need it.

List of the eleven priority allergens: peanuts, tree nuts, sesame, milk, eggs, fish, crustaceans and molluscs, soy, wheat and gluten, sulphites, mustard
The allergens

Reference#

Fields of the Recipe form#

Field Description Required or default
Recipe of The dish or the preparation Required
Makes Portions of a dish, or quantity made by a preparation, with the unit 1
Kitchen type Dish or preparation, taken from the product Read only
Preparation time (min) Duration of the recipe Optional
Company Company of the recipe Current company
Plate cost Cost of one portion Computed
Selling price Price of one portion, before taxes Product price
Food cost (%) Plate cost over selling price Computed
Target food cost (%) Target of the dish Company setting
Suggested price Price that meets the target, rounded Computed
Margin per portion Selling price minus plate cost Computed
Recipe cost Cost of the whole recipe Computed
Oldest ingredient cost Date of the oldest cost Computed
Ingredients Component, net quantity, yield, gross quantity, unit, line cost At least one line
Method The steps, as the brigade reads them Optional

Fields of the Ingredient form#

Field Description Required or default
Name Name of the ingredient Required
Stock unit Unit in which the ingredient is counted and leaves the stock Unit
Purchase unit Usual unit of the orders Stock unit
Yield (%) Usable share after trimming, copied to each new recipe line 100
Kitchen cost Cost of one stock unit Computed, or entered without a bill
Cost from Vendor bill, entered, or recipe Computed
Cost date Date of the bill that set the cost Computed
Cost bill line Link to the bill line Computed
Entered cost Cost used until the first bill Optional
Contains Allergens of the ingredient Optional
May contain Cross-contamination Optional
Vendors Vendor, codes, format, billed unit, price Optional

Reports and exports#

  • Technical sheet: ingredients, quantities, yield, method, allergens, without costs.
  • Technical sheet with costs: the same, with the cost of each line, the plate cost, the price, the food cost and the suggested price. Reserved for the kitchen manager.
  • Allergen sheet: "Allergens on our menu", a table of the selected dishes.
Allergen sheet of the menu: a table of the dishes and the eleven allergens, with a dot where the dish contains one
The allergen sheet

Lists are exported as everywhere in Symbifox (see Common actions in every application).

Automations#

  • Whenever a vendor bill is validated, put back to draft, cancelled or reversed, the costs of the ingredients it touches, then those of the preparations and dishes that use them, are recomputed.
  • When a recipe is saved, its cost and the cost of the recipes that use it are recomputed.
  • Every night, a scheduled job recomputes every ingredient from its bills, then every recipe.
  • A bill that pushes a dish over its target creates an activity for the kitchen manager.

Public pages and portal#

The application has no public page and no portal.

Modules that extend this application#

The vendor bill scanning (see Invoicing) reads paper or PDF bills. Once a line is attached, the next bills from the same vendor come in with the right ingredient.

Understanding#

Why the last bill. The plate cost must follow the market: a rise in shrimp must show on the linguine from the next bill. The application therefore takes the price of the last validated bill, by bill date, not an average cost. An older bill entered late does not replace a more recent price. A partial credit note keeps the price; a bill put back to draft, cancelled or fully reversed falls back to the previous one.

What the cost contains. The price of a line is its amount net of discount and taxes, in the company currency, divided by the quantity brought back to the stock unit. Only the share of taxes declared non-recoverable in the settings is added to it.

A validation is never blocked. A line whose unit does not convert to the stock unit does not block the accounting: it goes to Costs to check, and the ingredient cost keeps its previous value.

Fine units. Odoo rounds each kit line up in its own unit, then converts it to the stock unit. Three grams of salt stocked in kilograms become 0.00 kg. That is why each ingredient is stocked in g, ml or units. The recipe refuses a preparation line that would drop to zero in the stock unit, and a dish ingredient that would drop to zero for one portion.

The old cost. An ingredient bought rarely keeps the price of its last bill, which can be old. The Cost too old badge flags the recipe so that someone checks that price, without changing it.

Changing a recipe already sold. Odoo warns that a bill of materials in use is changing. Open orders that contain the dish are recomputed on the new recipe. No recipe version is kept.

Several companies. Costs are kept per company and per variant. A group that runs two restaurants sees each one with its own bills, on the same recipes or on separate ones.

What the application does not do. It does no inventory count, no loss tracking, no comparison between theoretical and actual use, and no vendor ordering. The stock is counted in Odoo Inventory and orders go through Purchase.

Troubleshooting#

Symptom Likely cause Fix
The recipe refuses a line: the quantity drops to zero The ingredient is stocked in a unit that is too large (kg for a few grams) Stock the ingredient in g or ml before its first stock moves
A dish costs $0 A preparation it uses has no active recipe, or its ingredients have neither a bill nor an entered cost Open the preparation and its ingredients, then give an entered cost until a bill arrives
A bill line does not appear in Lines to attach The vendor is not checked Food supplier, the line already has a product, or the bill is not validated Check the box on the vendor form, or open the line that has a product
The Received button does not appear The bill is validated, linked to a purchase order, has no ingredient line, or the setting is unchecked Keep the bill in draft, set the ingredient as the line's product, or receive through the purchase order
An ingredient cost did not change after a bill The bill entered is dated before the bill that set the cost Check the bill date: only the most recent one counts
A line lands in Costs to check The billed unit (case, bag) does not convert to the stock unit Select Attach and enter the format in stock units
The technical sheet with costs is refused The user is not a kitchen manager Print the technical sheet without costs, or ask for the group
A recipe carries Cost too old One of its ingredients has not been billed for more than 60 days Check the price with the vendor or enter the next bill

See also#