OdooWiki OCA HUB

Purchase Blanket Orders

purchase_blanket_order folder_open OCA/purchase-workflow open_in_new
Purchase License: AGPL-3

A purchase blanket order is a pre-agreement to purchase a certain number of quantities of products at a specific price. From a confirmed blanket order, the users can create new purchase orders at such price, until the blanket order expires due to reaching the validity date.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Create purchase blanket orders (pre-agreements with a vendor for quantities at a fixed price) and generate RFQs/purchase orders from them until the validity date or quantities run out.

This module adds a new 'Blanket Orders' document in the Purchase app. A blanket order records a vendor, a start date, a validity date, payment terms, fiscal position, currency and one or more lines with product, original quantity, unit price, scheduled date and taxes. Totals (untaxed, taxes, total) are computed automatically.

From a confirmed (Open) blanket order you can press 'Create Purchase Order' to open a wizard that proposes the remaining quantities; you choose the quantities to order and the system creates one RFQ per vendor, copying the agreed price, taxes, scheduled date and payment terms. The blanket order shows counters for related RFQ/Orders and Lines.

Business rules enforced by the code: - A blanket order must have a vendor, a future validity date and at least one line; each line must have a price and quantity greater than zero. - You cannot delete an open blanket order, and you cannot cancel one that still has non-cancelled purchase orders. - Purchase order lines automatically link to a matching blanket order line (same product, vendor, currency, company, with enough remaining quantity); the agreed price, taxes and scheduled date are applied. - You cannot confirm a purchase order if a linked blanket order line has no remaining quantity, and vendor, currency and scheduled dates must match between the purchase order and the blanket order. - A scheduled job expires blanket orders past their validity date; the state moves between Draft, Open, Done and Expired automatically.

A printable 'Purchase Blanket Order' report is available, and a setting lets you disable adding extra lines to purchase orders coming from blanket orders.

Required by other modules

Menus it adds

menu_purchase_blanket_order_configmenu_purchase_blanket_order_line
Models and fields (7)
  • purchase.order · extends an existing modelblanket_order_id (Origin blanket order)
  • purchase.order.line · extends an existing modelblanket_order_line
  • res.config.settings · extends an existing modelgroup_purchase_blanket_disable_adding_lines (Disable adding more lines to POs)
  • purchase.blanket.order · new modelname, note, state, user_id (Responsible), line_ids (Order lines), cancelled, confirmed, amount_tax (Taxes), company_id (Company), date_start (Start Date), line_count (Purchase Blanket Order Line count), partner_id (Vendor), product_id (Product), currency_id, partner_ref (Vendor Reference), amount_total (Total), validity_date, amount_untaxed (Untaxed Amount), purchase_count, ordered_uom_qty (Ordered quantity), payment_term_id (Payment Terms), invoiced_uom_qty (Invoiced quantity), original_uom_qty (Original quantity), received_uom_qty (Received quantity), remaining_uom_qty (Remaining quantity), fiscal_position_id (Fiscal Position)
  • purchase.blanket.order.line · new modelname (Description), user_id (Responsible), order_id, sequence, taxes_id (Taxes), price_tax (Tax), company_id, partner_id (Vendor), price_unit (Price), product_id (Product), currency_id, price_total (Total), product_uom (Unit of Measure), date_schedule (Scheduled Date), remaining_qty (Remaining quantity in base UoM), price_subtotal (Subtotal), purchase_lines (Purchase Order Lines), ordered_uom_qty (Ordered quantity), payment_term_id (Payment Terms), invoiced_uom_qty (Invoiced quantity), original_uom_qty (Original quantity), received_uom_qty (Received quantity), remaining_uom_qty (Remaining quantity)
  • purchase.blanket.order.wizard · new modelline_ids (Lines), blanket_order_id, purchase_order_id (Purchase Order)
  • purchase.blanket.order.wizard.line · new modelqty (Quantity to Order), taxes_id, wizard_id, partner_id (Vendor), price_unit, product_id (Product), currency_id, product_uom (Unit of Measure), date_schedule, blanket_line_id, remaining_uom_qty

Text generated by AI (DeepSeek) from reading the Odoo 18.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: 7 confirmed, 2 with no information of 9 versions.

Sources · Odoo 17.0

Confirmed on 2026-11-03 in branch 17.0 of OCA/purchase-workflow.

terminal Installation and usage

OCA documentation · Odoo 18.0

A new menu in the Purchase area is created, allowing users to create new blanket orders.

To create a new Purchase Blanket Order go to the purchase menu in the Purchase section:

Hitting the button create will open the form view in which we can introduce the following information:

  • Vendor
  • Payment Terms
  • Ordering and Validity dates
  • 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, the user can create a Purchase Order, check the Purchase Orders associated to the Blanket Order and/or see the Blanket Order lines associated to the BO.

Hitting the button Create Purchase Order will open a wizard that will ask for the amount of each product in the BO lines for which the Purchase 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. From this list the user can create customized Purchase Orders selecting the lines for which the PO (or POs if the vendors are different) is (are) created.

In the Purchase 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 Purchase Order a blanket order line will be suggested depending on the following factors:

  • Closer Validity date
  • Remaining quantity \> Quantity introduced in the Purchase 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.