Batch Production & Recipe Scaling
by Odoo DevHouse https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse$ 198.99
Batch Production & Recipe Scaling
Scale any Bill of Materials up or down by batch size, right inside Odoo 19 - per-component rounding rules, minimum quantities, stepwise packaging, and by-product yield loss, ending in a Manufacturing Order pre-filled with the correct scaled quantities.
Food, cosmetics, and chemical producers rarely make a batch at exactly the size their Bill of Materials was written for. Standard Odoo has no concept of a "recipe" - every component scales the same naive linear way, or has to be re-typed by hand for every batch size.
- No way to flag a BoM as a scalable Recipe with a base batch size
- Catalysts, preservatives, and other fixed-quantity ingredients get scaled up right along with everything else
- No rounding rules - a 2.3-litre pour for a component only measurable in whole litres is not practical on a plant floor
- No minimum quantity floor - shrinking a batch can scale a component to an unusable trace amount
- No stepwise scaling for packaging - boxes, sachets, and cases come in fixed-size increments, not fractions
- No by-product yield loss - real production loses a percentage of by-product to spillage, evaporation, or trim
- Manufacturing Orders only support standard linear BoM explosion, so scaled quantities have to be corrected by hand on every MO
This module adds a Is Recipe flag to any standard Bill of Materials and reuses its existing quantity/unit as the base batch size - no duplicate fields. Every component and by-product gets its own scaling rule: Linear, Fixed, or Stepwise, with configurable rounding, a minimum quantity floor, and (for by-products) a yield-loss percentage. A Scale Recipe wizard lets you enter a scale factor or a target output quantity and instantly preview every scaled line before committing. Save the result as a Batch Recipe with automatic per-line cost computation, then generate a Manufacturing Order in one click - pre-filled with the real scaled quantities on every raw-material and by-product move, not a plain linear BoM explosion.
- Flag Any BoM as a Recipe: a single "Is Recipe" checkbox reuses the BoM's own Product Quantity/UoM as the base batch size - no duplicate fields to keep in sync
- Per-Component Scaling Mode: Linear (proportional), Fixed Quantity (catalysts/preservatives that never change), or Stepwise (fixed-size increments like packaging units)
- Rounding Rules Per Component: None, Round Up, Round Down, or Nearest, with a configurable rounding precision
- Minimum Quantity Floor: guarantees a component never scales down below a usable trace amount
- By-Products With Yield Loss: the same scaling modes and rounding rules, plus a Yield Loss (%) applied after scaling and before rounding
- Scale Recipe Wizard: scale by a Scale Factor or a Target Output Quantity (in any compatible unit) and preview every scaled component and by-product instantly with "Compute Scaling"
- Batch Recipe Records: save the scaled result as an auto-numbered record with full line detail and automatic cost computation - unit cost x scaled quantity per line, summed into a Total Component Cost
- One-Click Manufacturing Order: "Create Manufacturing Order" creates a draft order pre-filled with the real scaled quantities on every raw-material and by-product line - not a plain linear Bill of Materials explosion
- Guardrails: a Batch Recipe can only ever generate one Manufacturing Order, and a non-positive scale factor or output quantity is always rejected with a clear error
- Reuses Standard Manufacturing Security: no new security groups to configure - access follows your existing Manufacturing user permissions
- Thoroughly Tested: every scaling rule and the full recipe-to-production flow is covered by an extensive automated test suite
Flag the Bill of Materials as a Recipe
Go to Manufacturing -> Products -> Bills of Materials, open the BoM, and tick Is Recipe. Its existing Product Quantity and Unit of Measure become the recipe's base batch size - nothing else to configure to get started.
Set Per-Component Scaling Rules
On the Components tab, use the column-toggle to reveal Scaling Mode, Rounding Method, Rounding Precision, Minimum Quantity, and Step Quantity for each line. Set catalysts to Fixed, packaging to Stepwise with its case size, and leave everything else Linear. By-products get the same options plus a Yield Loss (%) on the By-products tab.
Scale the Recipe & Preview
Click the Scale Recipe smart button. Choose Scale Factor (e.g. x5) or Target Output Quantity (e.g. "I need 250 kg"), then click Compute Scaling. Every component and by-product line updates instantly with its scaled quantity, so you can sanity-check the batch before saving anything.
Save as a Batch Recipe
Click Save as Batch Recipe. An auto-numbered record is created with every scaled component and by-product line, each priced at the product's current cost - the form footer totals it into a Total Component Cost automatically.
Create the Manufacturing Order
Click Create Manufacturing Order. A draft Manufacturing Order is created with its component and by-product lines already matching the batch recipe's scaled quantities - ready to confirm and produce immediately, with no manual correction of stepwise or fixed-quantity lines.
Step 1 - Bills of Materials Filtered to Recipes
The standard Bills of Materials list gets a one-click "Recipes" filter, so recipe-flagged BoMs are easy to find among every other BoM in the database.
Step 2 - Recipe BoM With Every Scaling Mode and Rounding Rule
"Is Recipe" ticked, with the Scaling Mode, Rounding Method, Rounding Precision, Minimum Quantity, and Step Quantity columns revealed on the Components list - five components covering every combination at once: Linear, Fixed Quantity, Stepwise with Round Up, Linear with Round Down, and Linear with Nearest rounding.
Step 3 - By-Products Tab (Scaling & Yield Loss)
By-products get the exact same Scaling Mode and Rounding Method options as components, plus their own Yield Loss (%) column - configured right on the standard BoM By-products tab.
Step 4 - Scale Recipe Wizard: Scale Factor Mode
Scaling x5: Flour scales linearly (2.00 -> 10.00), Yeast stays fixed at 0.05, the Sugar Sachet rounds up to the next full case (20 -> 24), Cocoa Powder rounds down to one decimal (4.15 -> 4.10), and Vanilla Extract rounds to the nearest 0.05 (0.60) - every rule computed and previewed side by side before anything is saved.
Step 5 - Scale Recipe Wizard: By-Products & Yield Loss
The by-product's base quantity (1.00 x5 = 5.00) has a 20% Yield Loss applied automatically, landing at a scaled quantity of 4.00 - real production loss accounted for without a manual adjustment.
Step 6 - Scale Recipe Wizard: Target Output Quantity Mode
Instead of a scale factor, enter the output you actually need - "35 units" here - and the wizard back-computes the Applied Scale Factor (3.50) from the base batch quantity, then scales every component and by-product exactly the same way as Scale Factor mode.
Step 7 - Saved Batch Recipe with Computed Cost
Auto-numbered "BR/2026/0014" record, Scale Factor and Target Output Quantity kept for traceability, each component priced at its unit cost, and a Total Component Cost footer (42.70) computed automatically from the scaled lines.
Step 8 - Batch Recipes List (Every Scale, Every State)
Every Batch Recipe ever scaled from this record, at whatever factor was needed on the day, with its own Scale Factor, Target Output Quantity, Total Component Cost, and a state badge showing whether a Manufacturing Order has been created from it yet.
Step 9 - Draft Manufacturing Order With Scaled Quantities
The generated MO's "To Consume" column carries the exact scaled quantities from the Batch Recipe - including the Stepwise packaging line's 24.00 and the rounded-down/nearest lines - not a plain linear BoM explosion.
Step 10 - Confirmed Manufacturing Order, Ready to Produce
Clicking Confirm moves the MO into standard Odoo Manufacturing - statusbar advances, a Consumed column appears next to To Consume, and Produce All / Start / Check Availability become available - the scaled quantities flow straight into the normal production flow with nothing to re-key.
These checks always apply, no matter how a record is created or edited - not just hidden behind a disabled button.
| Mode | Best For |
|---|---|
| Linear | Most ingredients - flour, liquids, bulk raw materials that should grow or shrink in direct proportion to the batch |
| Fixed Quantity | Catalysts, preservatives, and colorants that stay at the same dose no matter the batch size |
| Stepwise | Packaging - boxes, sachets, cases that are only ever used or sold in fixed-size increments |
| Yield Loss (by-products) | By-products where a percentage is always lost to spillage, evaporation, or trim |
| Rounding + Minimum | Layer on top of any mode above to keep the final number practical to measure and never below a usable amount |
Every component and by-product gets its own combination of these rules, so a single recipe can mix Linear ingredients, Fixed catalysts, and Stepwise packaging side by side.
Food & Beverage Producers
Scale a recipe from a 10 kg test batch to a 500 kg production run without hand-recalculating every ingredient - and without over-scaling the yeast.
Cosmetics & Personal Care
Keep active ingredients and preservatives at their exact fixed dosage regardless of batch size, while base carriers scale linearly.
Chemical & Formulation Plants
Apply per-component rounding precision so mixing-tank quantities always land on a practically-measurable number.
Packaging-Heavy Producers
Set boxes, sachets, and case packs to Stepwise so packaging quantities always round up to a whole case, never a fraction.
Producers With By-Product Loss
Set a realistic yield-loss percentage on trim, off-cuts, or evaporation by-products so planned output matches what actually comes off the line.
Contract Manufacturers
Save a client's recipe once, then scale it to whatever order quantity comes in without re-entering a single BoM line.
Installation & First Setup
- Install: copy the module to your addons path -> Apps -> Update Apps List -> search "Batch Production & Recipe Scaling" -> Install
- Flag a recipe: Manufacturing -> Products -> Bills of Materials -> open a BoM -> tick Is Recipe
- Configure component scaling: on the Components tab, reveal the Scaling Mode / Rounding Method / Minimum Quantity / Step Quantity columns via the column-toggle icon and set them per line; by-products get the same options plus Yield Loss (%)
- Scale it: click the Scale Recipe smart button, enter a Scale Factor or Target Output Quantity, then Compute Scaling
- Produce it: Save as Batch Recipe, then Create Manufacturing Order
Requires: Odoo 19 Community or Enterprise with modules: mrp, stock, mail. No additional enterprise modules required, and no new security groups - access follows the standard Manufacturing group.
Does this module add a new "base quantity" field I have to keep in sync?
No. It reuses the BoM's existing Product Quantity and Unit of Measure as the recipe's base batch size - there's nothing extra to fill in or keep aligned.
What's the difference between Linear, Fixed, and Stepwise?
Linear scales proportionally with the batch size. Fixed never changes, regardless of scale factor - for catalysts and preservatives dosed at a set amount. Stepwise rounds the scaled quantity up to the next multiple of a Step Quantity - for packaging that only comes in fixed-size increments.
In what order are Yield Loss, Rounding, and Minimum Quantity applied?
Scaling mode first, then Yield Loss (by-products only), then Rounding, then the Minimum Quantity floor is applied last - so a minimum quantity always wins even after aggressive rounding.
Does scaling affect the standard "Explode BoM" report or costing?
No. Standard BoM views, reports, and costing keep working exactly as before - the scaling rules only apply on the Scale Recipe wizard's own path, through to the Batch Recipe and the Manufacturing Order it generates.
Can I create more than one Manufacturing Order from a Batch Recipe?
No - by design. Once a Batch Recipe has a linked Manufacturing Order, Create Manufacturing Order is blocked with a clear error, preventing an accidental double production run from the same scaled batch.
Stop Recalculating Recipes by Hand
Replace spreadsheet math and tribal knowledge with a repeatable, auditable scaling rule per component.
Consistent, Practical Quantities
Rounding rules and minimum quantities keep every scaled batch measurable on the actual plant floor.
Realistic By-Product Output
Yield loss is factored in automatically, so planned by-product output matches what actually comes off the line.
Production-Ready MOs, Instantly
Manufacturing Orders come out pre-filled with correct scaled quantities - no manual line-by-line correction before confirming.
Need Help or Have a Feature Request?
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Manufacturing (mrp) |
| Lines of code | 590 |
| Technical Name |
batch_production_recipe |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module