You use this module if you wish to give notification of requirements of materials and/or external services and keep track of such requirements.
Requests can be created either directly or indirectly. "Directly" means that someone from the requesting department enters a purchase request manually.
The person creating the request determines what and how much to order, and the requested date.
"Indirectly" means that the purchase request initiated by the application automatically, for example, from procurement orders (MO, SO).
A purchase request is an instruction to Purchasing to procure a certain quantity of materials services, so that they are available at a certain point in time.
A line of a request contains the quantity and requested date of the material to be supplied or the quantity of the service to be performed. You can indicate the service specifications if needed.
Once request is approved go to the Purchase Request Lines from the menu entry 'Purchase Requests', and also from the 'Purchase' menu.
Select the lines that you wish to initiate the RFQ for, then go to 'More' and press 'Create RFQ'.
You can choose to select an existing RFQ or create a new one. In the later, you have to choose a supplier.
In case that you chose to select an existing RFQ, the application will search for existing lines matching the request line, and will add the extra quantity to them, recalculating the minimum order quantity, if it exists for the supplier of that RFQ.
In case that you create a new RFQ, the request lines will also be consolidated into as few as possible lines in the RFQ.
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Lets employees record internal purchase requests for products or services, follow them through an approval workflow, and turn approved request lines into requests for quotation to suppliers.
This module adds a Purchase Request document to Odoo, separate from a normal request for quotation. A user creates a request with a reference number, a creation date, a requester, an optional approver, a source document and a list of products to purchase with quantities, units, required dates and estimated costs. The request shows a total estimated cost and counters for lines, stock moves and purchases.
Requests move through statuses: Draft, To be approved, Approved, In progress, Done and Rejected. Buttons let users submit for approval, approve, reject, start progress, mark done or reset to draft. A request cannot be submitted for approval if it has no valid lines, and it is automatically rejected when all its lines are cancelled. Requests and lines can only be deleted while in draft, and lines become read-only once they are linked to a purchase order.
From request lines a wizard creates a request for quotation, with options such as matching existing order lines by scheduled date and copying descriptions. Each request line tracks how much has been purchased, received, cancelled and is still pending, and shows the related purchase status and preferred supplier.
Products can be flagged so that procurement generates a purchase request instead of a quotation. Reordering rules count open request quantities as incoming. When a purchase order is confirmed or goods are received, messages are posted on the request, and cancelling a procurement move creates an activity on the request. A printable Purchase Request report is included, and menus appear under Purchase > Procurement.
Depends on
Required by other modules
Menus it adds
Models and fields (11)
- stock.move · extends an existing modelpurchase_request_ids, purchase_request_allocation_ids, created_purchase_request_line_id
- stock.rule · extends an existing model
- purchase.order · extends an existing model
- stock.move.line · extends an existing model
- product.template · extends an existing modelpurchase_request
- purchase.request · new modelname (Request Reference), state (Status), origin (Source Document), line_ids (Products to Purchase), company_id, date_start (Creation date), line_count (Purchase Request Line count), move_count (Stock Move count), product_id (Product), assigned_to (Approver), currency_id, description, is_editable, requested_by, estimated_cost (Total Estimated Cost), purchase_count (Purchases count), picking_type_id, is_name_editable, to_approve_allowed
- purchase.order.line · extends an existing modelpurchase_request_lines, purchase_request_allocation_ids
- purchase.request.line · new modelname (Description), origin (Source Document), qty_done, cancelled, company_id (Company), date_start, product_id, qty_to_buy (There is some pending qty to buy), request_id (Purchase Request), assigned_to (Assigned to), currency_id, description (PR Description), is_editable, product_qty (Quantity), supplier_id (Preferred supplier), requested_by (Requested by), date_required (Request Date), move_dest_ids (Downstream Moves), orderpoint_id, purchased_qty (RFQ/PO Qty), qty_cancelled, request_state (Request state), estimated_cost, product_uom_id (UoM), purchase_lines (Purchase Order Lines), purchase_state (Purchase Status), specifications, qty_in_progress, pending_qty_to_receive (Pending Qty to Receive), purchase_request_allocation_ids
- purchase.request.allocation · new modelcompany_id, product_id (Product), stock_move_id, product_uom_id (UoM), purchase_state, open_product_qty (Open Quantity), purchase_line_id, allocated_product_qty (Allocated Quantity), purchase_request_line_id, requested_product_uom_qty (Requested Quantity)
- purchase.request.line.make.purchase.order · new modelitem_ids, supplier_id, purchase_order_id, sync_data_planned (Match existing PO lines by Scheduled Date)
- purchase.request.line.make.purchase.order.item · new modelname (Description), wiz_id (Wizard), line_id (Purchase Request Line), product_id (Product), request_id (Purchase Request), product_qty (Quantity to purchase), product_uom_id (UoM), keep_description (Copy descriptions to new PO)
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/purchase-workflow.
terminal Installation and usage
OCA documentation · Odoo 19.0Configuration
Source · Odoo 19.0To configure the product follow this steps:
- Go to a product form.
- Go to Inventory tab.
- Check the box Purchase Request along with the route Buy and Replenish on Order (MTO)
Note that MTO route is archived by default, you should unarchive it first:
- Go to Inventory > Configuration > Routes, in the Search dropdown menu, click Archived to show Replenish on Order (MTO) route and Unarchive it.
With this configuration, whenever a procurement order is created and the supply rule selected is 'Buy' the application will create a Purchase Request instead of a Purchase Order.
Usage
Source · Odoo 19.0Purchase requests are accessible through a new menu entry 'Purchase Requests', and also from the 'Purchase' menu.
Users can access the list of Purchase Requests or Purchase Request Lines.
It is possible to filter requests by its approval status.
No verified information in OCA: Installation.
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.