Repository
odoo/odoo · module folder
Module version
0.1
Category
Supply Chain/Purchase
Folder size
3.06 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-08-15 22:44:21
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, Thibault Delavallée, Odoo Translation Bot, 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), Lulu Grimalkin (lugr), rare-odoo, Lancelot Semal, srap-odoo, saurabh, jodh-odoo, msho-odoo, Youssef
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
purchase_requisition_sale, purchase_requisition_stock
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 form Inherits product.product_supplierinfo_tree_view
purchase_order_form_inherit purchase.order.form.inherit purchase.order form 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 list 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 form Inherits purchase.res_config_settings_view_form_purchase
supplier_info_form_inherit product.supplierinfo.requisition.view product.supplierinfo form 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
HTTP endpoints (0)

No HTTP endpoints found for this module.

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.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…