Purchase Agreements

purchase_requisition
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYSupply Chain/Purchase
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Thibault Delavallée, Aaron Bohy, Arnold Moyaux, Julien Castiaux, William Henrotin, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, Renaud Thiry, Victor Piryns (pivi), Djamel Touati, Dylan Kiss (dyki), Arnaud Sibille, Quentin Wolfs, kcv-odoo, nihp-odoo, Stéphane Diez, dhha-odoo, Mohammad Abdulmoneim (abdu), djameltouati, Michaël Mattiello, Corentin Heinix (cohe), chha-odoo, Krzysztof Magusiak (krma), rare-odoo, Lulu Grimalkin (lugr), Lancelot Semal, srap-odoo, saurabh, jodh-odoo, msho-odoo, Youssef
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Agreements.
===========================================================

Manage calls for tenders and blanket orders. Calls for tenders are used to get
competing offers from different vendors and select the best ones. Blanket orders
are agreements you have with vendors to benefit from a predetermined pricing.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
product_supplierinfo_tree_view_inherit product.template.product.form.inherit product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_line_compare_tree purchase.order.line.compare.list purchase.order.line list New
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order field Inherits purchase.view_purchase_order_filter
purchase_requisition_alternative_warning_form Alternative Warning purchase.requisition.alternative.warning form New
purchase_requisition_create_alternative_form Create Alternative purchase.requisition.create.alternative form New
report_purchaserequisition_document report_purchaserequisition_document ir.ui.view qweb New
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
res_config_settings_view_form_purchase_requisition res.config.settings.view.form.inherit.purchase.requisition res.config.settings xpath Inherits purchase.res_config_settings_view_form_purchase
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo field Inherits product.product_supplierinfo_form_view
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_kanban purchase.requisition.kanban purchase.requisition kanban New
view_purchase_requisition_tree purchase.requisition.list purchase.requisition list New
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • purchase_requisition_id Many2one → purchase.requisition
    related='purchase_requisition_line_id.requisition_id' string='Agreement' args: 'purchase.requisition'
  • purchase_requisition_line_id Many2one → purchase.requisition.line
    index='btree_not_null' args: 'purchase.requisition.line'
Public methods (0)

No public methods.

New fields (4)
  • alternative_po_ids One2many → purchase.order
    check_company=True domain="[('id', '!=', id), ('state', 'in', ['draft', 'sent', 'to approve'])]" help='Other potential purchase orders for purchasing products' readonly=False related='purchase_group_id.order_ids' string='Alternative POs' args: 'purchase.order'
  • purchase_group_id Many2one → purchase.order.group
    index='btree_not_null' args: 'purchase.order.group'
  • requisition_id Many2one → purchase.requisition
    copy=False index='btree_not_null' string='Agreement' args: 'purchase.requisition'
  • requisition_type Selection
    related='requisition_id.requisition_type'
Public methods (6)
  • action_compare_alternative_lines(self)
  • action_create_alternative(self)
  • button_confirm(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_tender_best_lines(self)
  • write(self, vals)

New fields (1)
  • order_ids One2many → purchase.order
    args: 'purchase.order', 'purchase_group_id'
Public methods (1)
  • write(self, vals)

New fields (2)
  • company_currency_id Many2one
    related='company_id.currency_id' string='Company Currency'
  • price_total_cc Monetary
    compute='_compute_price_total_cc' currency_field='company_currency_id' store=True string='Company Subtotal'
Public methods (2)
  • action_choose(self)
  • action_clear_quantities(self)

New fields (16)
  • active Boolean
    default=True args: 'Active'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    compute='_compute_currency_id' precompute=True readonly=False required=True store=True args: 'res.currency', 'Currency'
  • date_end Date
    string='End Date' tracking=True
  • date_start Date
    string='Start Date' tracking=True
  • description Html
  • line_ids One2many → purchase.requisition.line
    copy=True string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default=<expr> readonly=True required=True string='Agreement'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • product_id Many2one → product.product
    related='line_ids.product_id' string='Product' args: 'product.product'
  • purchase_ids One2many → purchase.order
    string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • reference Char
    string='Reference'
  • requisition_type Selection
    default='blanket_order' required=True string='Agreement Type' args: [('blanket_order', 'Blanket Order'), ('purchase_template', 'Purchase Template')]
  • state Selection
    copy=False default='draft' required=True selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Closed'), ('cancel', 'Cancelled')] string='Status' tracking=True
  • user_id Many2one → res.users
    check_company=True default=<expr> string='Purchase Representative' args: 'res.users'
  • vendor_id Many2one → res.partner
    check_company=True string='Vendor' args: 'res.partner'
Public methods (7)
  • action_cancel(self)
  • action_confirm(self)
  • action_done(self)
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (2)
  • alternative_po_ids Many2many → purchase.order
    string='Alternative POs' args: 'purchase.order', 'warning_purchase_order_alternative_rel'
  • po_ids Many2many → purchase.order
    string='POs to Confirm' args: 'purchase.order', 'warning_purchase_order_rel'
Public methods (2)
  • action_cancel_alternatives(self)
  • action_keep_alternatives(self)

New fields (4)
  • copy_products Boolean
    default=True help='If this is checked, the product quantities of the original PO will be copied' args: 'Copy Products'
  • origin_po_id Many2one → purchase.order
    help='The original PO that this alternative PO is being created for.' args: 'purchase.order'
  • partner_ids Many2many → res.partner
    help='Choose a vendor for alternative PO' required=True string='Vendor' args: 'res.partner'
  • purchase_warn_msg Text
    compute='_compute_purchase_warn_msg' groups='purchase.group_warning_purchase' args: 'Warning Messages'
Public methods (1)
  • action_create_alternative(self)

New fields (9)
  • company_id Many2one → res.company
    readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • price_unit Float
    compute='_compute_price_unit' default=0.0 min_display_digits='Product Price' readonly=False store=True string='Unit Price'
  • product_description_variants Char
    args: 'Description'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits='Product Unit' string='Quantity'
  • product_uom_id Many2one → uom.uom
    compute='_compute_product_uom_id' precompute=True readonly=False store=True args: 'uom.uom', 'Unit'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered'
  • requisition_id Many2one → purchase.requisition
    index=True ondelete='cascade' required=True string='Purchase Agreement' args: 'purchase.requisition'
  • supplier_info_ids One2many → product.supplierinfo
    args: 'product.supplierinfo', 'purchase_requisition_line_id'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (1)
  • group_purchase_alternatives Boolean
    implied_group='purchase_requisition.group_purchase_alternatives' args: 'Purchase Alternatives'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYInventory/Purchase
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Simonis, Aaron Bohy, Yannick Tivisse, Odoo Online, Arnold Moyaux, William Henrotin, Prakash Prajapati, Tiffany Chang (tic), Gorash, Louis Wicket (wil), Walid, Maximilien (malb), Djamel Touati, Pieter Claeys (clpi), Dylan Kiss (dyki), kir-odoo, Arnaud Sibille, omra-odoo, Mathieu (mcou), lase@odoo.com, Maryam Kia, Louis (wil), mano-odoo, dhha-odoo, Pierre Pulinckx (pipu), Corentin Heinix (cohe), rare-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Agreements.
===========================================================

Manage calls for tenders and blanket orders. Calls for tenders are used to get
competing offers from different vendors and select the best ones. Blanket orders
are agreements you have with vendors to benefit from a predetermined pricing.

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
product_supplierinfo_tree_view_inherit product.template.product.form.inherit product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_kpis_tree_inherit_purchase_requisition purchase.order.kpis.list.inherit.purchase.requisition purchase.order field Inherits purchase.purchase_order_kpis_tree
purchase_order_line_compare_tree purchase.order.line.compare.list purchase.order.line list New
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
purchase_order_tree_inherit_purchase_requisition purchase.order.list.inherit.purchase.requisition purchase.order field Inherits purchase.purchase_order_tree
purchase_requisition_alternative_warning_form Alternative Warning purchase.requisition.alternative.warning form New
purchase_requisition_create_alternative_form Create Alternative purchase.requisition.create.alternative form New
report_purchaserequisition_document report_purchaserequisition_document ir.ui.view qweb New
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
res_config_settings_view_form_purchase_requisition res.config.settings.view.form.inherit.purchase.requisition res.config.settings xpath Inherits purchase.res_config_settings_view_form_purchase
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo field Inherits product.product_supplierinfo_form_view
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_kanban purchase.requisition.kanban purchase.requisition kanban New
view_purchase_requisition_tree purchase.requisition.list purchase.requisition list New
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • purchase_requisition_id Many2one → purchase.requisition
    related='purchase_requisition_line_id.requisition_id' string='Agreement' args: 'purchase.requisition'
  • purchase_requisition_line_id Many2one → purchase.requisition.line
    args: 'purchase.requisition.line'
Public methods (0)

No public methods.

New fields (5)
  • alternative_po_ids One2many → purchase.order
    check_company=True domain="[('id', '!=', id), ('state', 'in', ['draft', 'sent', 'to approve'])]" help='Other potential purchase orders for purchasing products' readonly=False related='purchase_group_id.order_ids' string='Alternative POs' args: 'purchase.order'
  • has_alternatives Boolean
    compute='_compute_has_alternatives' help='Whether or not this purchase order is linked to another purchase order as an alternative.' args: 'Has Alternatives'
  • purchase_group_id Many2one → purchase.order.group
    args: 'purchase.order.group'
  • requisition_id Many2one → purchase.requisition
    copy=False string='Agreement' args: 'purchase.requisition'
  • requisition_type Selection
    related='requisition_id.requisition_type'
Public methods (6)
  • action_compare_alternative_lines(self)
  • action_create_alternative(self)
  • button_confirm(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_tender_best_lines(self)
  • write(self, vals)

New fields (1)
  • order_ids One2many → purchase.order
    args: 'purchase.order', 'purchase_group_id'
Public methods (1)
  • write(self, vals)

New fields (2)
  • company_currency_id Many2one
    related='company_id.currency_id' string='Company Currency'
  • price_total_cc Monetary
    compute='_compute_price_total_cc' currency_field='company_currency_id' store=True string='Company Subtotal'
Public methods (2)
  • action_choose(self)
  • action_clear_quantities(self)

New fields (16)
  • active Boolean
    default=True args: 'Active'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    compute='_compute_currency_id' precompute=True readonly=False required=True store=True args: 'res.currency', 'Currency'
  • date_end Date
    string='End Date' tracking=True
  • date_start Date
    string='Start Date' tracking=True
  • description Html
  • line_ids One2many → purchase.requisition.line
    copy=True string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default=<expr> readonly=True required=True string='Agreement'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • product_id Many2one → product.product
    related='line_ids.product_id' string='Product' args: 'product.product'
  • purchase_ids One2many → purchase.order
    string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • reference Char
    string='Reference'
  • requisition_type Selection
    default='blanket_order' required=True string='Agreement Type' args: [('blanket_order', 'Blanket Order'), ('purchase_template', 'Purchase Template')]
  • state Selection
    copy=False default='draft' required=True selection=[('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Closed'), ('cancel', 'Cancelled')] string='Status' tracking=True
  • user_id Many2one → res.users
    check_company=True default=<expr> string='Purchase Representative' args: 'res.users'
  • vendor_id Many2one → res.partner
    check_company=True string='Vendor' args: 'res.partner'
Public methods (7)
  • action_cancel(self)
  • action_confirm(self)
  • action_done(self)
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (2)
  • alternative_po_ids Many2many → purchase.order
    string='Alternative POs' args: 'purchase.order', 'warning_purchase_order_alternative_rel'
  • po_ids Many2many → purchase.order
    string='POs to Confirm' args: 'purchase.order', 'warning_purchase_order_rel'
Public methods (2)
  • action_cancel_alternatives(self)
  • action_keep_alternatives(self)

New fields (5)
  • copy_products Boolean
    default=True help='If this is checked, the product quantities of the original PO will be copied' args: 'Copy Products'
  • creation_blocked Boolean
    compute='_compute_purchase_warn' groups='purchase.group_warning_purchase' help='If the chosen vendor or if any of the products in the original PO have a blocking warning then we prevent creation of alternative PO. This is because normally these fields are cleared w/warning message within form view, but we cannot recreate that in this case.'
  • origin_po_id Many2one → purchase.order
    help='The original PO that this alternative PO is being created for.' args: 'purchase.order'
  • partner_id Many2one → res.partner
    help='Choose a vendor for alternative PO' required=True string='Vendor' args: 'res.partner'
  • purchase_warn_msg Text
    compute='_compute_purchase_warn' groups='purchase.group_warning_purchase' args: 'Warning Messages'
Public methods (1)
  • action_create_alternative(self)

New fields (10)
  • company_id Many2one → res.company
    readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • price_unit Float
    compute='_compute_price_unit' default=0.0 min_display_digits='Product Price' readonly=False store=True string='Unit Price'
  • product_description_variants Char
    args: 'Description'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits='Product Unit of Measure' string='Quantity'
  • product_uom_category_id Many2one
    related='product_id.uom_id.category_id'
  • product_uom_id Many2one → uom.uom
    compute='_compute_product_uom_id' domain="[('category_id', '=', product_uom_category_id)]" precompute=True readonly=False store=True args: 'uom.uom', 'Product Unit of Measure'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered'
  • requisition_id Many2one → purchase.requisition
    ondelete='cascade' required=True string='Purchase Agreement' args: 'purchase.requisition'
  • supplier_info_ids One2many → product.supplierinfo
    args: 'product.supplierinfo', 'purchase_requisition_line_id'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (1)
  • group_purchase_alternatives Boolean
    implied_group='purchase_requisition.group_purchase_alternatives' args: 'Purchase Alternatives'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYInventory/Purchase
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Aaron Bohy, Yannick Tivisse, Odoo Online, Jorge Pinna Puissant, Arnold Moyaux, Victor Feyens, William Henrotin, Julien Mougenot, svs-odoo, Samuel Degueldre, Touati Djamel (otd), Prakash Prajapati, Tiffany Chang (tic), Gorash, Pierre Paridans, Hubert Van de Walle (huvw), JF Aubert, gawa-odoo, niyasraphy, Louis Wicket (wil), Walid, clesgow, Djamel Touati, Valentin Vallaeys (vava), Dylan Kiss (dyki), Hansun (hale), FrancoisGe, Michael (mcm), stcc-odoo, Xavier Bol (xbo), Paweł Fertyk, Mahdi Cheikh Rouhou (macr), Mathieu (mcou), lase@odoo.com, Saran440, higo-odoo, Louis (wil)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Agreements.
===========================================================

Manage calls for tenders and blanket orders. Calls for tenders are used to get
competing offers from different vendors and select the best ones. Blanket orders
are agreements you have with vendors to benefit from a predetermined pricing.

Code Analysis

Views touched (19)
XML IDNameModelTypeStatus
product_supplierinfo_tree_view_inherit product.template.product.form.inherit product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_kpis_tree_inherit_purchase_requisition purchase.order.kpis.tree.inherit.purchase.requisition purchase.order field Inherits purchase.purchase_order_kpis_tree
purchase_order_line_compare_tree purchase.order.line.compare.tree purchase.order.line tree New
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
purchase_order_tree_inherit_purchase_requisition purchase.order.tree.inherit.purchase.requisition purchase.order field Inherits purchase.purchase_order_tree
purchase_requisition_alternative_warning_form Alternative Warning purchase.requisition.alternative.warning form New
purchase_requisition_create_alternative_form Create Alternative purchase.requisition.create.alternative form New
report_purchaserequisition_document report_purchaserequisition_document ir.ui.view qweb New
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo field Inherits product.product_supplierinfo_form_view
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_kanban purchase.requisition.kanban purchase.requisition kanban New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
view_purchase_requisition_type_form purchase.requisition.type.form purchase.requisition.type form New
view_purchase_requisition_type_kanban purchase.requisition.type.kanban purchase.requisition.type kanban New
view_purchase_requisition_type_search purchase.requisition.type.search purchase.requisition.type search New
view_purchase_requisition_type_tree purchase.requisition.type.tree purchase.requisition.type tree New
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • purchase_requisition_id Many2one → purchase.requisition
    related='purchase_requisition_line_id.requisition_id' string='Agreement' args: 'purchase.requisition'
  • purchase_requisition_line_id Many2one → purchase.requisition.line
    args: 'purchase.requisition.line'
Public methods (0)

No public methods.

New fields (5)
  • alternative_po_ids One2many → purchase.order
    check_company=True domain="[('id', '!=', id), ('state', 'in', ['draft', 'sent', 'to approve'])]" help='Other potential purchase orders for purchasing products' readonly=False related='purchase_group_id.order_ids' string='Alternative POs' args: 'purchase.order'
  • has_alternatives Boolean
    compute='_compute_has_alternatives' help='Whether or not this purchase order is linked to another purchase order as an alternative.' args: 'Has Alternatives'
  • is_quantity_copy Selection
    readonly=False related='requisition_id.is_quantity_copy'
  • purchase_group_id Many2one → purchase.order.group
    args: 'purchase.order.group'
  • requisition_id Many2one → purchase.requisition
    copy=False string='Blanket Order' args: 'purchase.requisition'
Public methods (6)
  • action_compare_alternative_lines(self)
  • action_create_alternative(self)
  • button_confirm(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_tender_best_lines(self)
  • write(self, vals)

New fields (1)
  • order_ids One2many → purchase.order
    args: 'purchase.order', 'purchase_group_id'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (2)
  • action_choose(self)
  • action_clear_quantities(self)

New fields (18)
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    default=<expr> required=True args: 'res.currency', 'Currency'
  • date_end Datetime
    string='Agreement Deadline' tracking=True
  • description Html
  • is_quantity_copy Selection
    readonly=True related='type_id.quantity_copy'
  • line_ids One2many → purchase.requisition.line
    copy=True string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default='New' readonly=True required=True string='Reference'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • ordering_date Date
    string='Ordering Date' tracking=True
  • origin Char
    string='Source Document'
  • product_id Many2one → product.product
    related='line_ids.product_id' string='Product' args: 'product.product'
  • purchase_ids One2many → purchase.order
    string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • schedule_date Date
    help='The expected and scheduled delivery date where all the products are received' index=True string='Delivery Date' tracking=True
  • state Selection
    copy=False default='draft' required=True tracking=True args: PURCHASE_REQUISITION_STATES, 'Status'
  • state_blanket_order Selection
    compute='_set_state' args: PURCHASE_REQUISITION_STATES
  • type_id Many2one → purchase.requisition.type
    default=_get_type_id required=True string='Agreement Type' args: 'purchase.requisition.type'
  • user_id Many2one → res.users
    check_company=True default=<expr> string='Purchase Representative' args: 'res.users'
  • vendor_id Many2one → res.partner
    check_company=True string='Vendor' args: 'res.partner'
Public methods (6)
  • action_cancel(self)
  • action_done(self)
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
  • action_in_progress(self)
  • action_open(self)
  • unlink(self)

New fields (2)
  • alternative_po_ids Many2many → purchase.order
    string='Alternative POs' args: 'purchase.order', 'warning_purchase_order_alternative_rel'
  • po_ids Many2many → purchase.order
    string='POs to Confirm' args: 'purchase.order', 'warning_purchase_order_rel'
Public methods (2)
  • action_cancel_alternatives(self)
  • action_keep_alternatives(self)

New fields (5)
  • copy_products Boolean
    default=True help='If this is checked, the product quantities of the original PO will be copied' args: 'Copy Products'
  • creation_blocked Boolean
    compute='_compute_purchase_warn' groups='purchase.group_warning_purchase' help='If the chosen vendor or if any of the products in the original PO have a blocking warning then we prevent creation of alternative PO. This is because normally these fields are cleared w/warning message within form view, but we cannot recreate that in this case.'
  • origin_po_id Many2one → purchase.order
    help='The original PO that this alternative PO is being created for.' args: 'purchase.order'
  • partner_id Many2one → res.partner
    help='Choose a vendor for alternative PO' required=True string='Vendor' args: 'res.partner'
  • purchase_warn_msg Text
    compute='_compute_purchase_warn' groups='purchase.group_warning_purchase' args: 'Warning Messages'
Public methods (1)
  • action_create_alternative(self)

New fields (11)
  • company_id Many2one → res.company
    readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • price_unit Float
    digits='Product Price' string='Unit Price'
  • product_description_variants Char
    args: 'Custom Description'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits='Product Unit of Measure' string='Quantity'
  • product_uom_category_id Many2one
    related='product_id.uom_id.category_id'
  • product_uom_id Many2one → uom.uom
    compute='_compute_product_uom_id' domain="[('category_id', '=', product_uom_category_id)]" precompute=True readonly=False store=True args: 'uom.uom', 'Product Unit of Measure'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered Quantities'
  • requisition_id Many2one → purchase.requisition
    ondelete='cascade' required=True string='Purchase Agreement' args: 'purchase.requisition'
  • schedule_date Date
    string='Scheduled Date'
  • supplier_info_ids One2many → product.supplierinfo
    args: 'product.supplierinfo', 'purchase_requisition_line_id'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • create_supplier_info(self)
  • unlink(self)
  • write(self, vals)

New fields (6)
  • active Boolean
    default=True help='Set active to false to hide the Purchase Agreement Types without removing it.'
  • exclusive Selection
    default='multiple' help='Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n\n Select multiple RFQ (non-exclusive): allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders' required=True string='Agreement Selection Type' args: [('exclusive', 'Select only one RFQ (exclusive)'), ('multiple', 'Select multiple RFQ (non-exclusive)')]
  • line_copy Selection
    default='copy' required=True string='Lines' args: [('copy', 'Use lines of agreement'), ('none', 'Do not create RfQ lines automatically')]
  • name Char
    required=True string='Agreement Type' translate=True
  • quantity_copy Selection
    default='none' required=True string='Quantities' args: [('copy', 'Use quantities of agreement'), ('none', 'Set quantities manually')]
  • sequence Integer
    default=1
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYInventory/Purchase
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Yannick Tivisse, Arnold Moyaux, Romeo Fragomeli, Victor Feyens, William Henrotin, Julien Mougenot, svs-odoo, Touati Djamel (otd), Tiffany Chang (tic), Gorash, roen-odoo, Hubert Van de Walle (huvw), MerlinGuillaume, william, gawa-odoo, niyasraphy, Louis Wicket (wil), Walid, clesgow, Djamel Touati, Hansun (hale), Sébastien Geelen (sge), Leloup Loïc (lole), stcc-odoo, Mahdi Cheikh Rouhou (macr), lase@odoo.com, Saran440, higo-odoo, Martin Trigaux (mat)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Agreements.
===========================================================

Manage calls for tenders and blanket orders. Calls for tenders are used to get
competing offers from different vendors and select the best ones. Blanket orders
are agreements you have with vendors to benefit from a predetermined pricing.

Code Analysis

Views touched (18)
XML IDNameModelTypeStatus
product_supplierinfo_tree_view_inherit product.template.product.form.inherit product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_kpis_tree_inherit_purchase_requisition purchase.order.kpis.tree.inherit.purchase.requisition purchase.order field Inherits purchase.purchase_order_kpis_tree
purchase_order_line_compare_tree purchase.order.line.compare.tree purchase.order.line tree New
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
purchase_order_tree_inherit_purchase_requisition purchase.order.tree.inherit.purchase.requisition purchase.order field Inherits purchase.purchase_order_tree
purchase_requisition_alternative_warning_form Alternative Warning purchase.requisition.alternative.warning form New
purchase_requisition_create_alternative_form Create Alternative purchase.requisition.create.alternative form New
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo field Inherits product.product_supplierinfo_form_view
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_kanban purchase.requisition.kanban purchase.requisition kanban New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
view_purchase_requisition_type_form purchase.requisition.type.form purchase.requisition.type form New
view_purchase_requisition_type_kanban purchase.requisition.type.kanban purchase.requisition.type kanban New
view_purchase_requisition_type_search purchase.requisition.type.search purchase.requisition.type search New
view_purchase_requisition_type_tree purchase.requisition.type.tree purchase.requisition.type tree New
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • purchase_requisition_id Many2one → purchase.requisition
    related='purchase_requisition_line_id.requisition_id' string='Agreement' args: 'purchase.requisition'
  • purchase_requisition_line_id Many2one → purchase.requisition.line
    args: 'purchase.requisition.line'
Public methods (0)

No public methods.

New fields (5)
  • alternative_po_ids One2many → purchase.order
    check_company=True domain="[('id', '!=', id), ('state', 'in', ['draft', 'sent', 'to approve'])]" help='Other potential purchase orders for purchasing products' readonly=False related='purchase_group_id.order_ids' string='Alternative POs' args: 'purchase.order'
  • has_alternatives Boolean
    compute='_compute_has_alternatives' help='Whether or not this purchase order is linked to another purchase order as an alternative.' args: 'Has Alternatives'
  • is_quantity_copy Selection
    readonly=False related='requisition_id.is_quantity_copy'
  • purchase_group_id Many2one → purchase.order.group
    args: 'purchase.order.group'
  • requisition_id Many2one → purchase.requisition
    copy=False string='Purchase Agreement' args: 'purchase.requisition'
Public methods (6)
  • action_compare_alternative_lines(self)
  • action_create_alternative(self)
  • button_confirm(self)
  • create(self, vals_list)
    @api.model_create_multi
  • get_tender_best_lines(self)
  • write(self, vals)

New fields (1)
  • order_ids One2many → purchase.order
    args: 'purchase.order', 'purchase_group_id'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (2)
  • action_choose(self)
  • action_clear_quantities(self)

New fields (18)
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    default=<expr> required=True args: 'res.currency', 'Currency'
  • date_end Datetime
    string='Agreement Deadline' tracking=True
  • description Html
  • is_quantity_copy Selection
    readonly=True related='type_id.quantity_copy'
  • line_ids One2many → purchase.requisition.line
    copy=True states={'done': [('readonly', True)]} string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default='New' readonly=True required=True string='Reference'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • ordering_date Date
    string='Ordering Date' tracking=True
  • origin Char
    string='Source Document'
  • product_id Many2one → product.product
    related='line_ids.product_id' string='Product' args: 'product.product'
  • purchase_ids One2many → purchase.order
    states={'done': [('readonly', True)]} string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • schedule_date Date
    help='The expected and scheduled delivery date where all the products are received' index=True string='Delivery Date' tracking=True
  • state Selection
    copy=False default='draft' required=True tracking=True args: PURCHASE_REQUISITION_STATES, 'Status'
  • state_blanket_order Selection
    compute='_set_state' args: PURCHASE_REQUISITION_STATES
  • type_id Many2one → purchase.requisition.type
    default=_get_type_id required=True string='Agreement Type' args: 'purchase.requisition.type'
  • user_id Many2one → res.users
    check_company=True default=<expr> string='Purchase Representative' args: 'res.users'
  • vendor_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Vendor' args: 'res.partner'
Public methods (6)
  • action_cancel(self)
  • action_done(self)
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
  • action_in_progress(self)
  • action_open(self)
  • unlink(self)

New fields (3)
  • alternative_po_count Integer
    compute='_compute_alternative_po_count'
  • alternative_po_ids Many2many → purchase.order
    string='Alternative POs' args: 'purchase.order', 'warning_purchase_order_alternative_rel'
  • po_ids Many2many → purchase.order
    string='POs to Confirm' args: 'purchase.order', 'warning_purchase_order_rel'
Public methods (2)
  • action_cancel_alternatives(self)
  • action_keep_alternatives(self)

New fields (5)
  • copy_products Boolean
    default=True help='If this is checked, the product quantities of the original PO will be copied' args: 'Copy Products'
  • creation_blocked Boolean
    compute='_compute_purchase_warn' groups='purchase.group_warning_purchase' help='If the chosen vendor or if any of the products in the original PO have a blocking warning then we prevent creation of alternative PO. This is because normally these fields are cleared w/warning message within form view, but we cannot recreate that in this case.'
  • origin_po_id Many2one → purchase.order
    help='The original PO that this alternative PO is being created for.' args: 'purchase.order'
  • partner_id Many2one → res.partner
    help='Choose a vendor for alternative PO' required=True string='Vendor' args: 'res.partner'
  • purchase_warn_msg Text
    compute='_compute_purchase_warn' groups='purchase.group_warning_purchase' args: 'Warning Messages'
Public methods (1)
  • action_create_alternative(self)

New fields (11)
  • company_id Many2one → res.company
    readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • price_unit Float
    digits='Product Price' string='Unit Price'
  • product_description_variants Char
    args: 'Custom Description'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits='Product Unit of Measure' string='Quantity'
  • product_uom_category_id Many2one
    related='product_id.uom_id.category_id'
  • product_uom_id Many2one → uom.uom
    domain="[('category_id', '=', product_uom_category_id)]" string='Product Unit of Measure' args: 'uom.uom'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered Quantities'
  • requisition_id Many2one → purchase.requisition
    ondelete='cascade' required=True string='Purchase Agreement' args: 'purchase.requisition'
  • schedule_date Date
    string='Scheduled Date'
  • supplier_info_ids One2many → product.supplierinfo
    args: 'product.supplierinfo', 'purchase_requisition_line_id'
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
  • create_supplier_info(self)
  • unlink(self)
  • write(self, vals)

New fields (6)
  • active Boolean
    default=True help='Set active to false to hide the Purchase Agreement Types without removing it.'
  • exclusive Selection
    default='multiple' help='Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n\n Select multiple RFQ (non-exclusive): allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders' required=True string='Agreement Selection Type' args: [('exclusive', 'Select only one RFQ (exclusive)'), ('multiple', 'Select multiple RFQ (non-exclusive)')]
  • line_copy Selection
    default='copy' required=True string='Lines' args: [('copy', 'Use lines of agreement'), ('none', 'Do not create RfQ lines automatically')]
  • name Char
    required=True string='Agreement Type' translate=True
  • quantity_copy Selection
    default='none' required=True string='Quantities' args: [('copy', 'Use quantities of agreement'), ('none', 'Set quantities manually')]
  • sequence Integer
    default=1
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYInventory/Purchase
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Goffin Simon, Arnold Moyaux, Julien Castiaux, Xavier-Do, Anh Thao Pham (pta), Touati Djamel (otd), Tiffany Chang (tic), Rémy Voet (ryv), roen-odoo, Aurelien van Delft (avd), Michael Mattiello (mcm), Louis Wicket (wil), Walid, clesgow, Djamel Touati, Hansun (hale), Sébastien Geelen (sge), newtratip, Saran440, higo-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Agreements.
===========================================================

Manage calls for tenders and blanket orders. Calls for tenders are used to get
competing offers from different vendors and select the best ones. Blanket orders
are agreements you have with vendors to benefit from a predetermined pricing.

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
product_supplierinfo_tree_view_inherit product.template.product.form.inherit product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
product_template_form_view_inherit product.template.form.inherit product.template group Inherits purchase.view_product_supplier_inherit
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.purchase.requisition res.config.settings div Inherits purchase.res_config_settings_view_form_purchase
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo field Inherits product.product_supplierinfo_form_view
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_kanban purchase.requisition.kanban purchase.requisition kanban New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
view_purchase_requisition_type_form purchase.requisition.type.form purchase.requisition.type form New
view_purchase_requisition_type_kanban purchase.requisition.type.kanban purchase.requisition.type kanban New
view_purchase_requisition_type_search purchase.requisition.type.search purchase.requisition.type search New
view_purchase_requisition_type_tree purchase.requisition.type.tree purchase.requisition.type tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • purchase_requisition_id Many2one → purchase.requisition
    related='purchase_requisition_line_id.requisition_id' string='Agreement' args: 'purchase.requisition'
  • purchase_requisition_line_id Many2one → purchase.requisition.line
    args: 'purchase.requisition.line'
Public methods (0)

No public methods.

New fields (1)
  • purchase_requisition Selection
    default='rfq' help="Create a draft purchase order: Based on your product configuration, the system will create a draft purchase order.Propose a call for tender : If the 'purchase_requisition' module is installed and this option is selected, the system will create a draft call for tender." string='Procurement' args: [('rfq', 'Create a draft purchase order'), ('tenders', 'Propose a call for tenders')]
Public methods (0)

No public methods.

New fields (2)
  • is_quantity_copy Selection
    readonly=False related='requisition_id.is_quantity_copy'
  • requisition_id Many2one → purchase.requisition
    copy=False string='Purchase Agreement' args: 'purchase.requisition'
Public methods (3)
  • button_confirm(self)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (18)
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    default=<expr> required=True args: 'res.currency', 'Currency'
  • date_end Datetime
    string='Agreement Deadline' tracking=True
  • description Html
  • is_quantity_copy Selection
    readonly=True related='type_id.quantity_copy'
  • line_ids One2many → purchase.requisition.line
    copy=True states={'done': [('readonly', True)]} string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default='New' readonly=True required=True string='Reference'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • ordering_date Date
    string='Ordering Date' tracking=True
  • origin Char
    string='Source Document'
  • product_id Many2one → product.product
    related='line_ids.product_id' string='Product' args: 'product.product'
  • purchase_ids One2many → purchase.order
    states={'done': [('readonly', True)]} string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • schedule_date Date
    help='The expected and scheduled delivery date where all the products are received' index=True string='Delivery Date' tracking=True
  • state Selection
    copy=False default='draft' required=True tracking=True args: PURCHASE_REQUISITION_STATES, 'Status'
  • state_blanket_order Selection
    compute='_set_state' args: PURCHASE_REQUISITION_STATES
  • type_id Many2one → purchase.requisition.type
    default=_get_type_id required=True string='Agreement Type' args: 'purchase.requisition.type'
  • user_id Many2one → res.users
    check_company=True default=<expr> string='Purchase Representative' args: 'res.users'
  • vendor_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Vendor' args: 'res.partner'
Public methods (6)
  • action_cancel(self)
  • action_done(self)
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
  • action_in_progress(self)
  • action_open(self)
  • unlink(self)

New fields (13)
  • account_analytic_id Many2one → account.analytic.account
    compute='_compute_account_analytic_id' readonly=False store=True string='Analytic Account' args: 'account.analytic.account'
  • analytic_tag_ids Many2many → account.analytic.tag
    compute='_compute_analytic_tag_ids' readonly=False store=True string='Analytic Tags' args: 'account.analytic.tag'
  • company_id Many2one → res.company
    readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • price_unit Float
    digits='Product Price' string='Unit Price'
  • product_description_variants Char
    args: 'Custom Description'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits='Product Unit of Measure' string='Quantity'
  • product_uom_category_id Many2one
    related='product_id.uom_id.category_id'
  • product_uom_id Many2one → uom.uom
    domain="[('category_id', '=', product_uom_category_id)]" string='Product Unit of Measure' args: 'uom.uom'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered Quantities'
  • requisition_id Many2one → purchase.requisition
    ondelete='cascade' required=True string='Purchase Agreement' args: 'purchase.requisition'
  • schedule_date Date
    string='Scheduled Date'
  • supplier_info_ids One2many → product.supplierinfo
    args: 'product.supplierinfo', 'purchase_requisition_line_id'
Public methods (4)
  • create(self, vals)
    @api.model
  • create_supplier_info(self)
  • unlink(self)
  • write(self, vals)

New fields (6)
  • active Boolean
    default=True help='Set active to false to hide the Purchase Agreement Types without removing it.'
  • exclusive Selection
    default='multiple' help='Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n\n Select multiple RFQ (non-exclusive): allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders' required=True string='Agreement Selection Type' args: [('exclusive', 'Select only one RFQ (exclusive)'), ('multiple', 'Select multiple RFQ (non-exclusive)')]
  • line_copy Selection
    default='copy' required=True string='Lines' args: [('copy', 'Use lines of agreement'), ('none', 'Do not create RfQ lines automatically')]
  • name Char
    required=True string='Agreement Type' translate=True
  • quantity_copy Selection
    default='none' required=True string='Quantities' args: [('copy', 'Use quantities of agreement'), ('none', 'Set quantities manually')]
  • sequence Integer
    default=1
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYInventory/Purchase
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Simon Lejeune, Aaron Bohy, Barad Mahendra, Yannick Tivisse, Arnold Moyaux, Xavier-Do, jerome hanke (jhk), Victor Feyens, William Henrotin, Sébastien Theys, fw-bot, Anh Thao Pham (pta), Touati Djamel (otd), Swapnesh Shah, Pratima Gupta, roen-odoo, Aurelien van Delft (avd), Hansun (hale)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Agreements.
===========================================================

Manage calls for tenders and blanket orders. Calls for tenders are used to get
competing offers from different vendors and select the best ones. Blanket orders
are agreements you have with vendors to benefit from a predetermined pricing.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
product_supplierinfo_tree_view_inherit product.template.product.form.inherit product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
product_template_form_view_inherit product.template.form.inherit product.template group Inherits purchase.view_product_supplier_inherit
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.purchase.requisition res.config.settings div Inherits purchase.res_config_settings_view_form_purchase
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo field Inherits product.product_supplierinfo_form_view
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_kanban purchase.requisition.kanban purchase.requisition kanban New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
view_purchase_requisition_type_form purchase.requisition.type.form purchase.requisition.type form New
view_purchase_requisition_type_kanban purchase.requisition.type.kanban purchase.requisition.type kanban New
view_purchase_requisition_type_tree purchase.requisition.type.tree purchase.requisition.type tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • purchase_requisition_id Many2one → purchase.requisition
    readonly=False related='purchase_requisition_line_id.requisition_id' string='Agreement' args: 'purchase.requisition'
  • purchase_requisition_line_id Many2one → purchase.requisition.line
    args: 'purchase.requisition.line'
Public methods (0)

No public methods.

New fields (1)
  • purchase_requisition Selection
    default='rfq' help="Create a draft purchase order: Based on your product configuration, the system will create a draft purchase order.Propose a call for tender : If the 'purchase_requisition' module is installed and this option is selected, the system will create a draft call for tender." string='Procurement' args: [('rfq', 'Create a draft purchase order'), ('tenders', 'Propose a call for tenders')]
Public methods (0)

No public methods.

New fields (2)
  • is_quantity_copy Selection
    readonly=False related='requisition_id.is_quantity_copy'
  • requisition_id Many2one → purchase.requisition
    copy=False string='Purchase Agreement' args: 'purchase.requisition'
Public methods (3)
  • button_confirm(self)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (18)
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    default=<expr> required=True args: 'res.currency', 'Currency'
  • date_end Datetime
    string='Agreement Deadline' tracking=True
  • description Text
  • is_quantity_copy Selection
    readonly=True related='type_id.quantity_copy'
  • line_ids One2many → purchase.requisition.line
    copy=True states={'done': [('readonly', True)]} string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default='New' readonly=True required=True string='Reference'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • ordering_date Date
    string='Ordering Date' tracking=True
  • origin Char
    string='Source Document'
  • product_id Many2one → product.product
    readonly=False related='line_ids.product_id' string='Product' args: 'product.product'
  • purchase_ids One2many → purchase.order
    states={'done': [('readonly', True)]} string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • schedule_date Date
    help='The expected and scheduled delivery date where all the products are received' index=True string='Delivery Date' tracking=True
  • state Selection
    copy=False default='draft' required=True tracking=True args: PURCHASE_REQUISITION_STATES, 'Status'
  • state_blanket_order Selection
    compute='_set_state' args: PURCHASE_REQUISITION_STATES
  • type_id Many2one → purchase.requisition.type
    default=_get_type_id required=True string='Agreement Type' args: 'purchase.requisition.type'
  • user_id Many2one → res.users
    check_company=True default=<expr> string='Purchase Representative' args: 'res.users'
  • vendor_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Vendor' args: 'res.partner'
Public methods (6)
  • action_cancel(self)
  • action_done(self)
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
  • action_in_progress(self)
  • action_open(self)
  • unlink(self)

New fields (13)
  • account_analytic_id Many2one → account.analytic.account
    compute='_compute_account_analytic_id' readonly=False store=True string='Analytic Account' args: 'account.analytic.account'
  • analytic_tag_ids Many2many → account.analytic.tag
    compute='_compute_analytic_tag_ids' readonly=False store=True string='Analytic Tags' args: 'account.analytic.tag'
  • company_id Many2one → res.company
    default=<expr> readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • price_unit Float
    digits='Product Price' string='Unit Price'
  • product_description_variants Char
    args: 'Custom Description'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits='Product Unit of Measure' string='Quantity'
  • product_uom_category_id Many2one
    related='product_id.uom_id.category_id'
  • product_uom_id Many2one → uom.uom
    domain="[('category_id', '=', product_uom_category_id)]" string='Product Unit of Measure' args: 'uom.uom'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered Quantities'
  • requisition_id Many2one → purchase.requisition
    ondelete='cascade' required=True string='Purchase Agreement' args: 'purchase.requisition'
  • schedule_date Date
    string='Scheduled Date'
  • supplier_info_ids One2many → product.supplierinfo
    args: 'product.supplierinfo', 'purchase_requisition_line_id'
Public methods (4)
  • create(self, vals)
    @api.model
  • create_supplier_info(self)
  • unlink(self)
  • write(self, vals)

New fields (5)
  • exclusive Selection
    default='multiple' help='Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n\n Select multiple RFQ (non-exclusive): allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders' required=True string='Agreement Selection Type' args: [('exclusive', 'Select only one RFQ (exclusive)'), ('multiple', 'Select multiple RFQ (non-exclusive)')]
  • line_copy Selection
    default='copy' required=True string='Lines' args: [('copy', 'Use lines of agreement'), ('none', 'Do not create RfQ lines automatically')]
  • name Char
    required=True string='Agreement Type' translate=True
  • quantity_copy Selection
    default='none' required=True string='Quantities' args: [('copy', 'Use quantities of agreement'), ('none', 'Set quantities manually')]
  • sequence Integer
    default=1
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYOperations/Purchase
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Denis Ledoux, Christophe Simonis, David Monjoie, Xavier Morel, Goffin Simon, Simon Lejeune, Nicolas Martinelli, GitHub, Damien Bouvy, Yannick Tivisse, Martin Geubelle, Odoo Online, jem-odoo, Jorge Pinna Puissant, Alexandre Kühn, Arnold Moyaux, Adrian Torres, XavierDo, Xavier-Do, jerome hanke (jhk), Victor Feyens, William Henrotin, Sébastien Theys, fw-bot, Anh Thao Pham (pta), svs-odoo, Prakash Prajapati, Swapnesh Shah, Jinal Patel, roen-odoo, asa-odoo, Haresh Shyara
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Agreements.
===========================================================

Manage calls for tenders and blanket orders. Calls for tenders are used to get
competing offers from different vendors and select the best ones. Blanket orders
are agreements you have with vendors to benefit from a predetermined pricing.

Code Analysis

Views touched (15)
XML IDNameModelTypeStatus
product_supplierinfo_tree_view_inherit product.template.product.form.inherit product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
product_template_form_view_inherit product.template.form.inherit product.template group Inherits purchase.view_product_supplier_inherit
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.purchase.requisition res.config.settings div Inherits purchase.res_config_settings_view_form_purchase
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo field Inherits product.product_supplierinfo_form_view
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo field Inherits product.product_supplierinfo_form_view
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_kanban purchase.requisition.kanban purchase.requisition kanban New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
view_purchase_requisition_type_form purchase.requisition.type.form purchase.requisition.type form New
view_purchase_requisition_type_kanban purchase.requisition.type.kanban purchase.requisition.type kanban New
view_purchase_requisition_type_tree purchase.requisition.type.tree purchase.requisition.type tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • purchase_requisition_id Many2one → purchase.requisition
    readonly=False related='purchase_requisition_line_id.requisition_id' string='Agreement' args: 'purchase.requisition'
  • purchase_requisition_line_id Many2one → purchase.requisition.line
    args: 'purchase.requisition.line'
Public methods (0)

No public methods.

New fields (1)
  • purchase_requisition Selection
    default='rfq' help="Create a draft purchase order: Based on your product configuration, the system will create a draft purchase order.Propose a call for tender : If the 'purchase_requisition' module is installed and this option is selected, the system will create a draft call for tender." string='Procurement' args: [('rfq', 'Create a draft purchase order'), ('tenders', 'Propose a call for tenders')]
Public methods (0)

No public methods.

New fields (2)
  • is_quantity_copy Selection
    readonly=False related='requisition_id.is_quantity_copy'
  • requisition_id Many2one → purchase.requisition
    copy=False string='Purchase Agreement' args: 'purchase.requisition'
Public methods (3)
  • button_confirm(self)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (18)
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    default=<expr> required=True args: 'res.currency', 'Currency'
  • date_end Datetime
    string='Agreement Deadline' tracking=True
  • description Text
  • is_quantity_copy Selection
    readonly=True related='type_id.quantity_copy'
  • line_ids One2many → purchase.requisition.line
    copy=True states={'done': [('readonly', True)]} string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default='New' readonly=True required=True string='Reference'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • ordering_date Date
    string='Ordering Date' tracking=True
  • origin Char
    string='Source Document'
  • product_id Many2one → product.product
    readonly=False related='line_ids.product_id' string='Product' args: 'product.product'
  • purchase_ids One2many → purchase.order
    states={'done': [('readonly', True)]} string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • schedule_date Date
    help='The expected and scheduled delivery date where all the products are received' index=True string='Delivery Date' tracking=True
  • state Selection
    copy=False default='draft' required=True tracking=True args: PURCHASE_REQUISITION_STATES, 'Status'
  • state_blanket_order Selection
    compute='_set_state' args: PURCHASE_REQUISITION_STATES
  • type_id Many2one → purchase.requisition.type
    default=_get_type_id required=True string='Agreement Type' args: 'purchase.requisition.type'
  • user_id Many2one → res.users
    check_company=True default=<expr> string='Purchase Representative' args: 'res.users'
  • vendor_id Many2one → res.partner
    domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]" string='Vendor' args: 'res.partner'
Public methods (6)
  • action_cancel(self)
  • action_done(self)
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
  • action_in_progress(self)
  • action_open(self)
  • unlink(self)

New fields (12)
  • account_analytic_id Many2one → account.analytic.account
    string='Analytic Account' args: 'account.analytic.account'
  • analytic_tag_ids Many2many → account.analytic.tag
    string='Analytic Tags' args: 'account.analytic.tag'
  • company_id Many2one → res.company
    default=<expr> readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • price_unit Float
    digits='Product Price' string='Unit Price'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits='Product Unit of Measure' string='Quantity'
  • product_uom_category_id Many2one
    related='product_id.uom_id.category_id'
  • product_uom_id Many2one → uom.uom
    domain="[('category_id', '=', product_uom_category_id)]" string='Product Unit of Measure' args: 'uom.uom'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered Quantities'
  • requisition_id Many2one → purchase.requisition
    ondelete='cascade' required=True string='Purchase Agreement' args: 'purchase.requisition'
  • schedule_date Date
    string='Scheduled Date'
  • supplier_info_ids One2many → product.supplierinfo
    args: 'product.supplierinfo', 'purchase_requisition_line_id'
Public methods (4)
  • create(self, vals)
    @api.model
  • create_supplier_info(self)
  • unlink(self)
  • write(self, vals)

New fields (5)
  • exclusive Selection
    default='multiple' help='Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n\n Select multiple RFQ: allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders' required=True string='Agreement Selection Type' args: [('exclusive', 'Select only one RFQ (exclusive)'), ('multiple', 'Select multiple RFQ')]
  • line_copy Selection
    default='copy' required=True string='Lines' args: [('copy', 'Use lines of agreement'), ('none', 'Do not create RfQ lines automatically')]
  • name Char
    required=True string='Agreement Type' translate=True
  • quantity_copy Selection
    default='none' required=True string='Quantities' args: [('copy', 'Use quantities of agreement'), ('none', 'Set quantities manually')]
  • sequence Integer
    default=1
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYPurchases
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Simon Lejeune, Nicolas Martinelli, qdp-odoo, Géry Debongnie, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Pierre Masereel, jem-odoo, Arnold Moyaux, Adrian Torres, XavierDo, Xavier-Do, William Henrotin, alt-odoo, oco-odoo, Anh Thao Pham (pta)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase_stock
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - account
    - analytic
    - portal
    - http_routing
    - digest
    - purchase
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Agreements.
===========================================================

Manage calls for tenders and blanket orders. Calls for tenders are used to get
competing offers from different vendors and select the best ones. Blanket orders
are agreements you have with vendors to benefit from a predetermined pricing.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
product_supplierinfo_tree_view_inherit product.template.product.form.inherit product.supplierinfo xpath Inherits product.product_supplierinfo_tree_view
product_template_form_view_inherit product.template.form.inherit product.template group Inherits purchase.view_product_supplier_inherit
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.purchase.requisition res.config.settings div Inherits purchase_stock.res_config_settings_view_form_purchase
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo field Inherits product.product_supplierinfo_form_view
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_kanban purchase.requisition.kanban purchase.requisition kanban New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
view_purchase_requisition_type_form purchase.requisition.type.form purchase.requisition.type form New
view_purchase_requisition_type_kanban purchase.requisition.type.kanban purchase.requisition.type kanban New
view_purchase_requisition_type_tree purchase.requisition.type.tree purchase.requisition.type tree New
Models touched (13)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • purchase_requisition_id Many2one → purchase.requisition
    readonly=False related='purchase_requisition_line_id.requisition_id' string='Blanket order' args: 'purchase.requisition'
  • purchase_requisition_line_id Many2one → purchase.requisition.line
    args: 'purchase.requisition.line'
Public methods (0)

No public methods.

New fields (1)
  • purchase_requisition Selection
    default='rfq' help="Create a draft purchase order: Based on your product configuration, the system will create a draft purchase order.Propose a call for tender : If the 'purchase_requisition' module is installed and this option is selected, the system will create a draft call for tender." string='Procurement' args: [('rfq', 'Create a draft purchase order'), ('tenders', 'Propose a call for tenders')]
Public methods (0)

No public methods.

New fields (2)
  • is_quantity_copy Selection
    readonly=False related='requisition_id.is_quantity_copy'
  • requisition_id Many2one → purchase.requisition
    copy=False string='Purchase Agreement' args: 'purchase.requisition'
Public methods (3)
  • button_approve(self, force=False)
    @api.multi
  • create(self, vals)
    @api.model
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (19)
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    default=<expr> required=True args: 'res.currency', 'Currency'
  • date_end Datetime
    string='Agreement Deadline' track_visibility='onchange'
  • description Text
  • is_quantity_copy Selection
    readonly=True related='type_id.quantity_copy'
  • line_ids One2many → purchase.requisition.line
    copy=True states={'done': [('readonly', True)]} string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default='New' readonly=True required=True string='Agreement Reference'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • ordering_date Date
    string='Ordering Date' track_visibility='onchange'
  • origin Char
    string='Source Document'
  • picking_type_id Many2one → stock.picking.type
    default=_get_picking_in required=True args: 'stock.picking.type', 'Operation Type'
  • purchase_ids One2many → purchase.order
    states={'done': [('readonly', True)]} string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • schedule_date Date
    help='The expected and scheduled delivery date where all the products are received' index=True string='Delivery Date' track_visibility='onchange'
  • state Selection
    copy=False default='draft' required=True track_visibility='onchange' args: PURCHASE_REQUISITION_STATES, 'Status'
  • state_blanket_order Selection
    compute='_set_state' args: PURCHASE_REQUISITION_STATES
  • type_id Many2one → purchase.requisition.type
    default=_get_type_id required=True string='Agreement Type' args: 'purchase.requisition.type'
  • user_id Many2one → res.users
    default=<expr> string='Purchase Representative' args: 'res.users'
  • vendor_id Many2one → res.partner
    string='Vendor' args: 'res.partner'
  • warehouse_id Many2one → stock.warehouse
    string='Warehouse' args: 'stock.warehouse'
Public methods (6)
  • action_cancel(self)
    @api.multi
  • action_done(self)
    @api.multi
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
  • action_in_progress(self)
    @api.multi
  • action_open(self)
    @api.multi
  • unlink(self)

New fields (12)
  • account_analytic_id Many2one → account.analytic.account
    string='Analytic Account' args: 'account.analytic.account'
  • analytic_tag_ids Many2many → account.analytic.tag
    string='Analytic Tags' args: 'account.analytic.tag'
  • company_id Many2one → res.company
    default=<expr> readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • move_dest_id Many2one → stock.move
    args: 'stock.move', 'Downstream Move'
  • price_unit Float
    digits=dp.get_precision('Product Price') string='Unit Price'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') string='Quantity'
  • product_uom_id Many2one → uom.uom
    string='Product Unit of Measure' args: 'uom.uom'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered Quantities'
  • requisition_id Many2one → purchase.requisition
    ondelete='cascade' required=True string='Purchase Agreement' args: 'purchase.requisition'
  • schedule_date Date
    string='Scheduled Date'
  • supplier_info_ids One2many → product.supplierinfo
    args: 'product.supplierinfo', 'purchase_requisition_line_id'
Public methods (4)
  • create(self, vals)
    @api.model
  • create_supplier_info(self)
  • unlink(self)
  • write(self, vals)
    @api.multi

New fields (5)
  • exclusive Selection
    default='multiple' help='Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n\n Select multiple RFQ: allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders' required=True string='Agreement Selection Type' args: [('exclusive', 'Select only one RFQ (exclusive)'), ('multiple', 'Select multiple RFQ')]
  • line_copy Selection
    default='copy' required=True string='Lines' args: [('copy', 'Use lines of agreement'), ('none', 'Do not create RfQ lines automatically')]
  • name Char
    required=True string='Agreement Type' translate=True
  • quantity_copy Selection
    default='none' required=True string='Quantities' args: [('copy', 'Use quantities of agreement'), ('none', 'Set quantities manually')]
  • sequence Integer
    default=1
Public methods (0)

No public methods.

New fields (1)
  • requistion_line_ids One2many → purchase.requisition.line
    args: 'purchase.requisition.line', 'move_dest_id'
Public methods (0)

No public methods.

New fields (1)
  • requisition_line_ids One2many → purchase.requisition.line
    args: 'purchase.requisition.line', 'move_dest_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYPurchases
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Goffin Simon, Simon Lejeune, Jérome Maes, GitHub, David Arnold, Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, Laurent Smet, Adrien Dieudonne, amoyaux, Arnold Moyaux
WEBSITE
WEBSITEhttps://www.odoo.com/page/purchase
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - barcodes
    - web_planner
    - account
    - analytic
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Agreements.
===========================================================

Manage calls for tenders and blanket orders. Calls for tenders are used to get
competing offers from different vendors and select the best ones. Blanket orders
are agreements you have with vendors to benefit from a predetermined pricing.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
product_template_form_view_inherit product.template.form.inherit product.template group Inherits purchase.view_product_supplier_inherit
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form.inherit.purchase.requisition res.config.settings div Inherits purchase.res_config_settings_view_form_purchase
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_kanban purchase.requisition.kanban purchase.requisition kanban New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
view_purchase_requisition_type_form purchase.requisition.type.form purchase.requisition.type form New
view_purchase_requisition_type_kanban purchase.requisition.type.kanban purchase.requisition.type kanban New
view_purchase_requisition_type_tree purchase.requisition.type.tree purchase.requisition.type tree New
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • purchase_requisition Selection
    default='rfq' string='Procurement' args: [('rfq', 'Create a draft purchase order'), ('tenders', 'Propose a call for tenders')]
Public methods (0)

No public methods.

New fields (1)
  • requisition_id Many2one → purchase.requisition
    copy=False string='Purchase Agreement' args: 'purchase.requisition'
Public methods (3)
  • button_approve(self, force=False)
    @api.multi
  • create(self, vals)
    @api.model
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (17)
  • account_analytic_id Many2one → account.analytic.account
    args: 'account.analytic.account', 'Analytic Account'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • date_end Datetime
    string='Agreement Deadline'
  • description Text
  • line_ids One2many → purchase.requisition.line
    copy=True states={'done': [('readonly', True)]} string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default=<expr> required=True string='Agreement Reference'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • ordering_date Date
    string='Ordering Date'
  • origin Char
    string='Source Document'
  • picking_type_id Many2one → stock.picking.type
    default=_get_picking_in required=True args: 'stock.picking.type', 'Operation Type'
  • purchase_ids One2many → purchase.order
    states={'done': [('readonly', True)]} string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • schedule_date Date
    help='The expected and scheduled delivery date where all the products are received' index=True string='Delivery Date'
  • state Selection
    copy=False default='draft' required=True track_visibility='onchange' args: [('draft', 'Draft'), ('in_progress', 'Confirmed'), ('open', 'Bid Selection'), ('done', 'Done'), ('cancel', 'Cancelled')], 'Status'
  • type_id Many2one → purchase.requisition.type
    default=_get_type_id required=True string='Agreement Type' args: 'purchase.requisition.type'
  • user_id Many2one → res.users
    default=<expr> string='Responsible' args: 'res.users'
  • vendor_id Many2one → res.partner
    string='Vendor' args: 'res.partner'
  • warehouse_id Many2one → stock.warehouse
    string='Warehouse' args: 'stock.warehouse'
Public methods (5)
  • action_cancel(self)
    @api.multi
  • action_done(self)
    @api.multi
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
    @api.multi
  • action_in_progress(self)
    @api.multi
  • action_open(self)
    @api.multi

New fields (10)
  • account_analytic_id Many2one → account.analytic.account
    string='Analytic Account' args: 'account.analytic.account'
  • company_id Many2one → res.company
    default=<expr> readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • move_dest_id Many2one → stock.move
    args: 'stock.move', 'Downstream Move'
  • price_unit Float
    digits=dp.get_precision('Product Price') string='Unit Price'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') string='Quantity'
  • product_uom_id Many2one → product.uom
    string='Product Unit of Measure' args: 'product.uom'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered Quantities'
  • requisition_id Many2one → purchase.requisition
    ondelete='cascade' string='Purchase Agreement' args: 'purchase.requisition'
  • schedule_date Date
    string='Scheduled Date'
Public methods (0)

No public methods.

New fields (5)
  • exclusive Selection
    default='multiple' help='Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n\n Select multiple RFQ: allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders' required=True string='Agreement Selection Type' args: [('exclusive', 'Select only one RFQ (exclusive)'), ('multiple', 'Select multiple RFQ')]
  • line_copy Selection
    default='copy' required=True string='Lines' args: [('copy', 'Use lines of agreement'), ('none', 'Do not create RfQ lines automatically')]
  • name Char
    required=True string='Agreement Type' translate=True
  • quantity_copy Selection
    default='none' required=True string='Quantities' args: [('copy', 'Use quantities of agreement'), ('none', 'Set quantities manually')]
  • sequence Integer
    default=1
Public methods (0)

No public methods.

New fields (1)
  • requistion_line_ids One2many → purchase.requisition.line
    args: 'purchase.requisition.line', 'move_dest_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYPurchases
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Goffin Simon, Nicolas Martinelli, Julien Legros, Richard Mathot, qdp-odoo, Yannick Tivisse, Denis Vermylen (dve), Tanguy Charlier
WEBSITE
WEBSITEhttps://www.odoo.com/page/purchase
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:49
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
    - report
    - procurement
    - barcodes
    - web_planner
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Requisition.
===========================================================

When a purchase order is created, you now have the opportunity to save the
related requisition. This new object will regroup and will allow you to easily
keep track and order all your purchase orders.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
procurement_normal_form_view_inherit procurement.form.inherit procurement.order xpath Inherits procurement.procurement_form_view
product_template_form_view_inherit product.template.form.inherit product.template field Inherits stock.view_template_property_form
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
view_purchase_requisition_type_form purchase.requisition.type.form purchase.requisition.type form New
view_purchase_requisition_type_tree purchase.requisition.type.tree purchase.requisition.type tree New
Models touched (7)

New fields (1)
  • requisition_id Many2one → purchase.requisition
    string='Latest Requisition' args: 'purchase.requisition'
Public methods (1)
  • make_po(self)
    @api.multi

New fields (1)
  • purchase_requisition Selection
    default='rfq' string='Procurement' args: [('rfq', 'Create a draft purchase order'), ('tenders', 'Propose a call for tenders')]
Public methods (0)

No public methods.

New fields (1)
  • requisition_id Many2one → purchase.requisition
    copy=False string='Purchase Agreement' args: 'purchase.requisition'
Public methods (3)
  • button_confirm(self)
    @api.multi
  • create(self, vals)
    @api.model
  • write(self, vals)
    @api.multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (18)
  • account_analytic_id Many2one → account.analytic.account
    args: 'account.analytic.account', 'Analytic Account'
  • company_id Many2one → res.company
    default=<expr> required=True string='Company' args: 'res.company'
  • date_end Datetime
    string='Agreement Deadline'
  • description Text
  • line_ids One2many → purchase.requisition.line
    copy=True states={'done': [('readonly', True)]} string='Products to Purchase' args: 'purchase.requisition.line', 'requisition_id'
  • name Char
    copy=False default=<expr> required=True string='Agreement Reference'
  • order_count Integer
    compute='_compute_orders_number' string='Number of Orders'
  • ordering_date Date
    string='Ordering Date'
  • origin Char
    string='Source Document'
  • picking_type_id Many2one → stock.picking.type
    default=_get_picking_in required=True args: 'stock.picking.type', 'Picking Type'
  • procurement_id Many2one → procurement.order
    copy=False ondelete='set null' string='Procurement' args: 'procurement.order'
  • purchase_ids One2many → purchase.order
    states={'done': [('readonly', True)]} string='Purchase Orders' args: 'purchase.order', 'requisition_id'
  • schedule_date Date
    help='The expected and scheduled delivery date where all the products are received' index=True string='Delivery Date'
  • state Selection
    copy=False default='draft' required=True track_visibility='onchange' args: [('draft', 'Draft'), ('in_progress', 'Confirmed'), ('open', 'Bid Selection'), ('done', 'Done'), ('cancel', 'Cancelled')], 'Status'
  • type_id Many2one → purchase.requisition.type
    default=_get_type_id required=True string='Agreement Type' args: 'purchase.requisition.type'
  • user_id Many2one → res.users
    default=<expr> string='Responsible' args: 'res.users'
  • vendor_id Many2one → res.partner
    string='Vendor' args: 'res.partner'
  • warehouse_id Many2one → stock.warehouse
    string='Warehouse' args: 'stock.warehouse'
Public methods (5)
  • action_cancel(self)
    @api.multi
  • action_done(self)
    @api.multi
    Generate all purchase order based on selected lines, should only be called on one agreement at a time
  • action_draft(self)
    @api.multi
  • action_in_progress(self)
    @api.multi
  • action_open(self)
    @api.multi

New fields (9)
  • account_analytic_id Many2one → account.analytic.account
    string='Analytic Account' args: 'account.analytic.account'
  • company_id Many2one → res.company
    default=<expr> readonly=True related='requisition_id.company_id' store=True string='Company' args: 'res.company'
  • price_unit Float
    digits=dp.get_precision('Product Price') string='Unit Price'
  • product_id Many2one → product.product
    domain=[('purchase_ok', '=', True)] required=True string='Product' args: 'product.product'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') string='Quantity'
  • product_uom_id Many2one → product.uom
    string='Product Unit of Measure' args: 'product.uom'
  • qty_ordered Float
    compute='_compute_ordered_qty' string='Ordered Quantities'
  • requisition_id Many2one → purchase.requisition
    ondelete='cascade' string='Purchase Agreement' args: 'purchase.requisition'
  • schedule_date Date
    string='Scheduled Date'
Public methods (0)

No public methods.

New fields (5)
  • exclusive Selection
    default='multiple' help='Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n\n Select multiple RFQ: allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders' required=True string='Agreement Selection Type' args: [('exclusive', 'Select only one RFQ (exclusive)'), ('multiple', 'Select multiple RFQ')]
  • line_copy Selection
    default='copy' required=True string='Lines' args: [('copy', 'Use lines of agreement'), ('none', 'Do not create RfQ lines automatically')]
  • name Char
    required=True string='Agreement Type' translate=True
  • quantity_copy Selection
    default='none' required=True string='Quantities' args: [('copy', 'Use quantities of agreement'), ('none', 'Set quantities manually')]
  • sequence Integer
    default=1
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYPurchases
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Josse Colpaert, Denis Ledoux, Christophe Simonis, Cedric Snauwaert, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Richard Mathot, qdp-odoo, Géry Debongnie, Aaron Bohy, Yannick Tivisse, qsm-odoo
WEBSITE
WEBSITEhttps://www.odoo.com/page/purchase
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:31
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - bus
    - report
    - procurement
    - barcodes
    - web_planner
    - account
    - analytic
    - web_tip
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Requisition.
===========================================================

When a purchase order is created, you now have the opportunity to save the
related requisition. This new object will regroup and will allow you to easily
keep track and order all your purchase orders.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
assets_backend purchase requisition assets ir.ui.view qweb Inherits web.assets_backend
procurement_normal_form_view_inherit procurement.form.inherit procurement.order xpath Inherits procurement.procurement_form_view
product_template_form_view_inherit product.template.form.inherit product.template field Inherits stock.view_template_property_form
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_line_tree_tender purchase.order.line.tree.tender purchase.order.line tree New
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
view_bid_line_qty Quantity to Purchase bid.line.qty form New
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_partner Choose Vendor purchase.requisition.partner form New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Randhir Mayatra (OpenERP), Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Ajay Chauhan (OpenERP), Foram Katharotiya (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Vo Minh Thu, Josse Colpaert, Arnaud Pineux, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Denis Ledoux, Fabien Meghazi, Christophe Simonis, Xavier Morel, Goffin Simon, Bhumi Thakkar (Open ERP), Cedric Snauwaert, Simon Lejeune, Guewen Baconnier, Nicolas Lempereur, Anand Patel (OpenERP), Richard Mathot, qdp-odoo, Géry Debongnie, Darshan Kalola (OpenERP Trainee), Aaron Bohy, Bharat R. Devnani (OpenERP), Richard Mathot (OpenERP), ged-odoo, openerp-sle, sgo@tinyerp.com, Rakesh Sindhav (OpenERP), Jacques-Etienne Baudoux
WEBSITE
WEBSITEhttps://www.odoo.com/page/purchase
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - stock_account
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - web
    - report
    - procurement
    - board
    - web_kanban_gauge
    - web_kanban_sparkline
    - account
    - analytic
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Requisition.
===========================================================

When a purchase order is created, you now have the opportunity to save the
related requisition. This new object will regroup and will allow you to easily
keep track and order all your purchase orders.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
assets_backend purchase requisition assets ir.ui.view qweb Inherits web.assets_backend
procurement_normal_form_view_inherit procurement.form.inherit procurement.order xpath Inherits procurement.procurement_form_view
product_template_form_view_inherit product.template.form.inherit product.template field Inherits stock.view_template_property_form
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_line_tree_tender purchase.order.line.tree.tender purchase.order.line tree New
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
view_bid_line_qty Quantity to Purchase bid.line.qty form New
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_partner Choose Supplier purchase.requisition.partner form New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/7.0/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Jagdish Panchal (Open ERP), Twinkle Christian (OpenERP), Cecile Tonglet, Rucha (Open ERP), Atul Patel (OpenERP), Jalpesh Patel (OpenERP), Randhir Mayatra (OpenERP), Stephane Wirtel, Odoo Translation Bot, Turkesh Patel (Open ERP), Numerigraphe - Lionel Sausin, Christophe Matthieu, DBR (OpenERP), Antonin Bourguignon, Martin Trigaux, Ajay Chauhan (OpenERP), Foram Katharotiya (OpenERP), Bhumika (OpenERP), Purnendu Singh (OpenERP), Saurang Suthar (OpenERP), Fabien Pinckaers, Antony Lesuisse, Bharat Devnani (OpenERP), Saurang Suthar, Olivier Dony, Twinkle (OpenERP), Divyesh Makwana (Open ERP), Thibault Delavallée, Vo Minh Thu, Hardik, pso (OpenERP), Sbh (Openerp), Amit Patel (OpenERP), Launchpad Translations on behalf of openerp, vta vta@openerp.com, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Nimesh (Open ERP), Denis Ledoux, Mayur Maheshwari (OpenERP), Jigar Amin - OpenERP, Sanjay Gohel (Open ERP), Alexis de Lattre, Christophe Simonis, Dharti Ratani (OpenERP), Frédéric van der Essen, Phil Frost, Dharti Ratani (Open ERP)
WEBSITE
WEBSITEhttp://www.openerp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:43:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - stock
    - product
    - base
    - process
    - web
    - decimal_precision
    - mail
    - base_setup
    - web_kanban
    - account
    - analytic
    - board
    - edi
    - email_template
    - procurement
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Requisition.
===========================================================

When a purchase order is created, you now have the opportunity to save the
related requisition. This new object will regroup and will allow you to easily
keep track and order all your purchase orders.

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
procurement_normal_form_view_inherit procurement.form.inherit procurement.order xpath Inherits procurement.procurement_form_view
product_normal_form_view_inherit product.form.inherit product.product field Inherits procurement.product_form_view_procurement_button
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_partner Purchase Requisition purchase.requisition.partner form New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/6.1/purchase_requisition
VERSION
VERSION 0.1
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Rucha (Open ERP), Stephane Wirtel, DBR (OpenERP), Harry (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Vo Minh Thu, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Mayur Maheshwari (OpenERP), vro, niv-openerp, Xavier ALT, Xavier Morel, Carlos Vásquez, Bogdan Stanciu, ksa (Open ERP), Els Van Vossel, Israel Fermin Montilla, Hardik Ansodariy (OpenERP), rch-openerp, aag (OpenERP), ron@tinyerp.com, Kirti Savalia (OpenERP), Atik Agewan (OpenERP)
WEBSITE
WEBSITEhttp://www.openerp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:41:35
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - purchase
    - stock
    - product
    - base
    - process
    - decimal_precision
    - account
    - base_setup
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
    - procurement
    - mrp
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows you to manage your Purchase Requisition.
===========================================================

When a purchase order is created, you now have the opportunity to save the related requisition.
This new object will regroup and will allow you to easily keep track and order all your purchase orders.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
procurement_normal_form_view_inherit procurement.form.inherit procurement.order xpath Inherits procurement.procurement_form_view
product_normal_form_view_inherit product.form.inherit product.product field Inherits product.product_normal_form_view
purchase_order_form_inherit purchase.order.form.inherit purchase.order field Inherits purchase.purchase_order_form
purchase_order_search_inherit purchase.order.list.select.inherit purchase.order xpath Inherits purchase.view_purchase_order_filter
request_for_quotation_inherit request.for.quotation.select.inherit purchase.order xpath Inherits purchase.view_request_for_quotation_filter
view_purchase_requisition_filter purchase.requisition.list.select purchase.requisition search New
view_purchase_requisition_form purchase.requisition.form purchase.requisition form New
view_purchase_requisition_partner Purchase Requisition purchase.requisition.partner form New
view_purchase_requisition_tree purchase.requisition.tree purchase.requisition tree New
Models touched (0)

No models found for this module.