A blanket order is a pre-agreement to sell a certain number of quantities of products at a specific price. From a confirmed blanket order, the users can create new sale orders at such price during the blanket order validity period, until the blanket order expires, either due to reaching the validity end date or exhausting all the quantities of products.
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Create blanket orders (pre-agreements to sell quantities of products at fixed prices) and generate sale orders from them at the agreed price until the validity period ends or quantities run out.
This module adds a new document called a Blanket Order, used to record a pre-agreement with a customer: which products, how many, at what price, and during which period. You create it from the Sales menu, add order lines with product, quantity, unit of measure, price and scheduled date, then confirm it. On confirmation a sequence number is assigned and the order becomes Open.
From an open blanket order you can launch a wizard to create one or more sale orders. The wizard pre-fills the remaining quantities and lets you adjust the quantity to order; it refuses to order more than what remains. Sale orders created this way keep a link to the blanket order line, and the price, taxes and currency are taken from the blanket order.
Odoo automatically tracks ordered, invoiced, delivered and remaining quantities per line and per blanket order, and updates the state: Draft, Open, Done (all quantities used) or Expired (validity date passed). A scheduled job expires blanket orders whose validity date has passed. You cannot confirm a sale order if a linked blanket order line has no remaining quantity, and the customer, product and currency must match the blanket order. A report template is provided to print blanket orders. A setting lets you prevent users from adding extra lines to sale orders that come from a blanket order.
Depends on
Required by other modules
Menus it adds
Models and fields (7)
- sale.order · extends an existing modelblanket_order_id (Origin blanket order), disable_adding_lines
- sale.order.line · extends an existing modelblanket_order_line (Blanket Order line)
- sale.blanket.order · new modelname, note, state, tag_ids (Tags), team_id (Sales Team), user_id (Salesperson), line_ids (Order lines), confirmed, amount_tax (Taxes), company_id, line_count (Sale Blanket Order Line count), partner_id (Partner), product_id (Product), sale_count, currency_id, amount_total (Total), pricelist_id (Pricelist), validity_date, amount_untaxed (Untaxed Amount), ordered_uom_qty (Ordered quantity), payment_term_id (Payment Terms), client_order_ref (Customer Reference), invoiced_uom_qty (Invoiced quantity), original_uom_qty (Original quantity), delivered_uom_qty (Delivered quantity), remaining_uom_qty (Remaining quantity), fiscal_position_id (Fiscal Position), validity_start_date
- res.config.settings · extends an existing modelgroup_blanket_disable_adding_lines (Disable adding more lines to SOs)
- sale.blanket.order.line · new modelname (Description), user_id (Responsible), order_id, sequence, taxes_id, price_tax (Tax), company_id, partner_id (Customer), price_unit (Price), product_id (Product), sale_lines (Sale order lines), currency_id, price_total (Total), product_uom (Unit of Measure), display_type, pricelist_id (Pricelist), date_schedule (Scheduled Date), remaining_qty (Remaining quantity in base UoM), price_subtotal (Subtotal), ordered_uom_qty (Ordered quantity), payment_term_id (Payment Terms), invoiced_uom_qty (Invoiced quantity), original_uom_qty (Original quantity), delivered_uom_qty (Delivered quantity), pricelist_item_id, remaining_uom_qty (Remaining quantity)
- sale.blanket.order.wizard · new modelline_ids (Lines), sale_order_id (Purchase Order), blanket_order_id
- sale.blanket.order.wizard.line · new modelqty (Quantity to Order), taxes_id, wizard_id, company_id (Company), partner_id (Vendor), price_unit, product_id (Product), currency_id, product_uom (Unit of Measure), date_schedule (Scheduled Date), blanket_line_id, remaining_uom_qty, analytic_distribution
Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 8 confirmed, 1 with no information of 9 versions.
Sources · Odoo 19.0
Confirmed on 2026-11-03 in branch 19.0 of OCA/sale-blanket.
terminal Installation and usage
OCA documentation · Odoo 19.0Usage
Source · Odoo 19.0A new menu in the Sales area is created, allowing users to create new blanket orders.
To create a new Sale Blanket Order go to the sale menu in the Sales section:
Hitting the button create will open the form view in which we can introduce the following information:
- Vendor
- Salesperson
- Payment Terms
- Validity period
- Order lines:
- Product
- Accorded price
- Original, Ordered, Invoiced, Received and Remaining quantities
- Terms and Conditions of the Blanket Order
From the form, once the Blanket Order has been confirmed and its state is open and the validity period has started, the user can create a Sale Order, check the Sale Orders associated to the Blanket Order and/or see the Blanket Order lines associated to the BO.
Hitting the button Create Sale Order will open a wizard that will ask for the amount of each product in the BO lines for which the Sale Order will be created.
Installing this module will add an additional menu which will show all the blanket order lines currently defined in the system, including the customer for each line. From this list the user can create customized Sale Orders selecting the lines for which the PO (or POs if the customers are different) is (are) created.
In the Sale Order form one field is added in the PO lines, the Blanket Order line field. This field keeps track to which Blanket Order line the PO line is associated. Upon adding a new product in a newly created Sale Order a blanket order line will be suggested depending on the following factors:
- Started validity period
- Closer scheduled date
- Remaining quantity \> Quantity introduced in the Sale Order line
No verified information in OCA: Installation, Configuration.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.