OdooWiki OCA HUB

Sale Blanket Orders

sale_blanket_order folder_open OCA/sale-blanket open_in_new
Sale License: AGPL-3

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.0

Lets you record pre-agreed sales contracts (blanket orders) with a customer, a validity period and agreed quantities and prices, then generate real sale orders from them at those prices until the quantities or the dates run out.

This module adds a new document called a Blanket Order: a pre-agreement to sell given quantities of products to a customer at a fixed price during a validity period. You find it in the Sales menu, together with a separate list of blanket order lines.

On a blanket order you set the customer, pricelist, payment terms, fiscal position, salesperson, sales team, tags, a start date and an end date, and you add product lines with quantity, unit of measure, price, taxes and an optional scheduled date. Choosing a customer automatically fills in their pricelist, payment terms, fiscal position and salesperson. Totals (untaxed, taxes, total) are calculated from the lines.

A blanket order starts as Draft. Confirming it checks that dates, customer and lines are present, gives it a sequence number and makes it Open. Its status then follows automatically: it becomes Expired when the end date passes, and Done when all quantities have been ordered. A scheduled job also expires outdated orders. You cannot delete or cancel a blanket order while non-cancelled sale orders are linked to it.

From an open blanket order you can launch a wizard that proposes the remaining quantities and creates one or more sale orders, grouped by customer, at the agreed prices and taxes. The wizard refuses expired or not-yet-started blanket orders and quantities above what remains.

On sale orders, lines are automatically linked to a matching blanket order line (same product, customer, currency, enough remaining quantity), and the price and taxes come from it. Confirmation is blocked if the customer, product or currency do not match, or if the remaining quantity is exhausted. An option in Sales settings can prevent adding new lines to sale orders created from a blanket order. A printable Blanket Order report is included.

Depends on

uomsale_management

Menus it adds

menu_sale_blanket_order_linemenu_blanket_order_config
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-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 8 confirmed, 1 with no information of 9 versions.

Sources · Odoo 13.0

Confirmed on 2026-11-03 in branch 13.0 of OCA/sale-workflow.

terminal Installation and usage

OCA documentation · Odoo 19.0

A 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.

info

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.