Purchase Request to RFQ

purchase_request_to_rfq
REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/10.0/purchase_request_to_rfq
VERSION
VERSION 1.1.3
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent, Acsone SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent, Acsone SA/NV
COMMITTERS
COMMITTERSGitHub, Jordi Ballester Alomar, OCA Transbot, AaronHForgeFlow, ahenriquez, oca-travis, Weblate, OCA-git-bot, hparfr, Benjamin Willig, Aaron Henriquez
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/purchase-workflow:
    - purchase_request
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

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
purchase_order_form purchase.order.form purchase.order xpath Inherits purchase.purchase_order_form
purchase_order_line_form2 purchase.order.line.form2 purchase.order.line field Inherits purchase.purchase_order_line_form2
purchase_order_line_form2_sub purchase.order.line.form2 purchase.order.line form New
purchase_order_line_search_sub purchase.order.line.search purchase.order.line search New
purchase_order_line_tree purchase.order.line.tree purchase.order.line xpath Inherits purchase.purchase_order_line_tree
purchase_order_line_tree_sub purchase.order.line.tree purchase.order.line tree New
purchase_request_line_form purchase.request.line.form purchase.request.line notebook Inherits purchase_request.purchase_request_line_form
purchase_request_line_search purchase.request.line.search purchase.request.line field Inherits purchase_request.purchase_request_line_search
purchase_request_line_tree purchase.request.line.tree purchase.request.line field Inherits purchase_request.purchase_request_line_tree
view_purchase_request_form purchase.request.form purchase.request xpath Inherits purchase_request.view_purchase_request_form
view_purchase_request_line_make_purchase_order Purchase Request Line Make Purchase Order purchase.request.line.make.purchase.order form New
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • button_confirm(self)
    @api.multi

New fields (1)
  • purchase_request_lines Many2many → purchase.request.line
    copy=False readonly=True args: 'purchase.request.line', 'purchase_request_purchase_order_line_rel', 'purchase_order_line_id', 'purchase_request_line_id', 'Purchase Request Lines'
Public methods (1)
  • action_openRequestLineTreeView(self)
    @api.multi
    :return dict: dictionary value for created view

New fields (3)
  • purchase_lines Many2many → purchase.order.line
    copy=False readonly=True args: 'purchase.order.line', 'purchase_request_purchase_order_line_rel', 'purchase_request_line_id', 'purchase_order_line_id', 'Purchase Order Lines'
  • purchase_state Selection
    compute='_compute_purchase_state' selection=<expr> store=True string='Purchase Status'
  • purchased_qty Float
    compute='_compute_purchased_qty' digits=dp.get_precision('Product Unit of Measure') string='Quantity in RFQ or PO'
Public methods (1)
  • unlink(self)
    @api.multi

New fields (3)
  • item_ids One2many → purchase.request.line.make.purchase.order.item
    string='Items' args: 'purchase.request.line.make.purchase.order.item', 'wiz_id'
  • purchase_order_id Many2one → purchase.order
    domain=[('state', '=', 'draft')] required=False string='Purchase Order' args: 'purchase.order'
  • supplier_id Many2one → res.partner
    domain=[('supplier', '=', True)] required=False string='Supplier' args: 'res.partner'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • make_purchase_order(self)
    @api.multi

New fields (8)
  • keep_description Boolean
    default=False help='Set true if you want to keep the descriptions provided in the wizard in the new PO.' string='Copy descriptions to new PO'
  • line_id Many2one → purchase.request.line
    readonly=True required=True string='Purchase Request Line' args: 'purchase.request.line'
  • name Char
    required=True string='Description'
  • product_id Many2one → product.product
    string='Product' args: 'product.product'
  • product_qty Float
    digits=dp.get_precision('Product Unit of Measure') readonly=True string='Quantity to purchase'
  • product_uom_id Many2one → product.uom
    readonly=True string='UoM' args: 'product.uom'
  • request_id Many2one → purchase.request
    readonly=True related='line_id.request_id' string='Purchase Request' args: 'purchase.request'
  • wiz_id Many2one → purchase.request.line.make.purchase.order
    ondelete='cascade' readonly=True required=True string='Wizard' args: 'purchase.request.line.make.purchase.order'
Public methods (1)
  • onchange_product_id(self)
    @api.onchange('product_id')

New fields (0)

No new fields.

Public methods (1)
  • do_transfer(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/9.0/purchase_request_to_rfq
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent, Acsone SA/NV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent, Acsone SA/NV
COMMITTERS
COMMITTERSStéphane Bidoul, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), Jordi Ballester Alomar, Jordi Ballester, OCA Transbot, ahenriquez, jbeficent, Moises Lopez - https://www.vauxoo.com/, Sergio Teruel Albert, Jonathan Nemry (ACSONE), aheficent, Sylvain GARANCHER, Zakaria Makrelouf
WEBSITE
WEBSITEhttp://www.eficent.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/purchase-workflow:
    - purchase_request
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

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
purchase_order_form purchase.order.form purchase.order xpath Inherits purchase.purchase_order_form
purchase_order_line_form2 purchase.order.line.form2 purchase.order.line field Inherits purchase.purchase_order_line_form2
purchase_order_line_form2_sub purchase.order.line.form2 purchase.order.line form New
purchase_order_line_search_sub purchase.order.line.search purchase.order.line search New
purchase_order_line_tree purchase.order.line.tree purchase.order.line xpath Inherits purchase.purchase_order_line_tree
purchase_order_line_tree_sub purchase.order.line.tree purchase.order.line tree New
purchase_request_line_form purchase.request.line.form purchase.request.line notebook Inherits purchase_request.purchase_request_line_form
purchase_request_line_search purchase.request.line.search purchase.request.line field Inherits purchase_request.purchase_request_line_search
purchase_request_line_tree purchase.request.line.tree purchase.request.line field Inherits purchase_request.purchase_request_line_tree
view_purchase_request_form purchase.request.form purchase.request xpath Inherits purchase_request.view_purchase_request_form
view_purchase_request_line_make_purchase_order Purchase Request Line Make Purchase Order purchase.request.line.make.purchase.order form New
Models touched (6)

New fields (0)

No new fields.

Public methods (3)
  • button_cancel(self)
    @api.multi
    Filters the Purchase Orders (POs): * POs with purchase request(s) related go to cancel_po_from_request method. * POs with no purchase request related are returned to super.
  • button_confirm(self)
    @api.multi
  • cancel_po_from_request(self)
    @api.multi
    Filter PO lines of PO that are related to some purchase request (PR). * Lines which have no relation to PRs are processed with a copy of standard code. * Lines with relation to PRs aren't processed. The purpose of this is to leave on hands of the purchase requests the task of cancelling procurements which originated them.

New fields (1)
  • purchase_request_lines Many2many → purchase.request.line
    copy=False readonly=True args: 'purchase.request.line', 'purchase_request_purchase_order_line_rel', 'purchase_order_line_id', 'purchase_request_line_id', 'Purchase Request Lines'
Public methods (2)
  • action_openRequestLineTreeView(self)
    @api.multi
    :return dict: dictionary value for created view
  • unlink(self)
    @api.multi

New fields (3)
  • purchase_lines Many2many → purchase.order.line
    copy=False readonly=True args: 'purchase.order.line', 'purchase_request_purchase_order_line_rel', 'purchase_request_line_id', 'purchase_order_line_id', 'Purchase Order Lines'
  • purchase_state Selection
    compute='_compute_purchase_state' selection=<expr> store=True string='Purchase Status'
  • purchased_qty Float
    compute='_compute_purchased_qty' string='Quantity in RFQ or PO'
Public methods (1)
  • unlink(self)
    @api.multi

New fields (3)
  • item_ids One2many → purchase.request.line.make.purchase.order.item
    string='Items' args: 'purchase.request.line.make.purchase.order.item', 'wiz_id'
  • purchase_order_id Many2one → purchase.order
    domain=[('state', '=', 'draft')] required=False string='Purchase Order' args: 'purchase.order'
  • supplier_id Many2one → res.partner
    domain=[('supplier', '=', True)] required=False string='Supplier' args: 'res.partner'
Public methods (2)
  • default_get(self, fields)
    @api.model
    Default values for wizard, if there is more than one supplier on lines the supplier field is empty otherwise is the unique line supplier.
  • make_purchase_order(self)
    @api.multi

New fields (8)
  • keep_description Boolean
    default=False help='Set true if you want to keep the descriptions provided in the wizard in the new PO.' string='Copy descriptions to new PO'
  • line_id Many2one → purchase.request.line
    readonly=True required=True string='Purchase Request Line' args: 'purchase.request.line'
  • name Char
    required=True string='Description'
  • product_id Many2one → product.product
    string='Product' args: 'product.product'
  • product_qty Float
    digits=dp.get_precision('Product UoS') readonly=True string='Quantity to purchase'
  • product_uom_id Many2one → product.uom
    readonly=True string='UoM' args: 'product.uom'
  • request_id Many2one → purchase.request
    readonly=True related='line_id.request_id' string='Purchase Request' args: 'purchase.request'
  • wiz_id Many2one → purchase.request.line.make.purchase.order
    ondelete='cascade' readonly=True required=True string='Wizard' args: 'purchase.request.line.make.purchase.order'
Public methods (1)
  • onchange_product_id(self)
    @api.onchange('product_id')

New fields (0)

No new fields.

Public methods (1)
  • do_transfer(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/8.0/purchase_request_to_rfq
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Eficent
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Eficent
COMMITTERS
COMMITTERSStéphane Bidoul, Alexandre Fayolle, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, jbeficent, Moises Lopez - https://www.vauxoo.com/, oca-travis, Weblate, Jonathan Nemry (ACSONE), Levent Karakaş
WEBSITE
WEBSITEhttp://www.eficent.com/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/purchase-workflow:
    - purchase_request
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

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
purchase_order_form purchase.order.form purchase.order xpath Inherits purchase.purchase_order_form
purchase_order_line_form purchase.order.line.form purchase.order.line notebook Inherits purchase.purchase_order_line_form
purchase_order_line_form2 purchase.order.line.form2 purchase.order.line field Inherits purchase.purchase_order_line_form2
purchase_order_line_tree purchase.order.line.tree purchase.order.line tree Inherits purchase.purchase_order_line_tree
purchase_request_line_form purchase.request.line.form purchase.request.line notebook Inherits purchase_request.purchase_request_line_form
purchase_request_line_search purchase.request.line.search purchase.request.line field Inherits purchase_request.purchase_request_line_search
purchase_request_line_tree purchase.request.line.tree purchase.request.line field Inherits purchase_request.purchase_request_line_tree
view_purchase_request_form purchase.request.form purchase.request xpath Inherits purchase_request.view_purchase_request_form
view_purchase_request_line_make_purchase_order Purchase Request Line Make Purchase Order purchase.request.line.make.purchase.order form New
Models touched (6)

New fields (0)

No new fields.

Public methods (1)
  • wkf_confirm_order(self)
    @api.multi

New fields (2)
  • has_purchase_request_lines Boolean
    compute='_compute_has_purchase_request_lines' string='Has Purchase Request Lines'
  • purchase_request_lines Many2many → purchase.request.line
    copy=False readonly=True args: 'purchase.request.line', 'purchase_request_purchase_order_line_rel', 'purchase_order_line_id', 'purchase_request_line_id', 'Purchase Request Lines'
Public methods (1)
  • action_openRequestLineTreeView(self)
    @api.multi
    :return dict: dictionary value for created view

New fields (3)
  • purchase_lines Many2many → purchase.order.line
    copy=False readonly=True args: 'purchase.order.line', 'purchase_request_purchase_order_line_rel', 'purchase_request_line_id', 'purchase_order_line_id', 'Purchase Order Lines'
  • purchase_state Selection
    compute='_compute_purchase_state' default='none' selection=_PURCHASE_ORDER_LINE_STATE store=True string='Purchase Status'
  • purchased_qty Float
    compute='_compute_purchased_qty' string='Quantity in RFQ or PO'
Public methods (1)
  • unlink(self)
    @api.multi

New fields (3)
  • item_ids One2many → purchase.request.line.make.purchase.order.item
    string='Items' args: 'purchase.request.line.make.purchase.order.item', 'wiz_id'
  • purchase_order_id Many2one → purchase.order
    domain=[('state', '=', 'draft')] required=False string='Purchase Order' args: 'purchase.order'
  • supplier_id Many2one → res.partner
    domain=[('supplier', '=', True)] required=False string='Supplier' args: 'res.partner'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • make_purchase_order(self)
    @api.multi

New fields (7)
  • line_id Many2one → purchase.request.line
    readonly=True required=True string='Purchase Request Line' args: 'purchase.request.line'
  • name Char
    required=True string='Description'
  • product_id Many2one → product.product
    string='Product' args: 'product.product'
  • product_qty Float
    digits_compute=dp.get_precision('Product UoS') string='Quantity to purchase'
  • product_uom_id Many2one → product.uom
    string='UoM' args: 'product.uom'
  • request_id Many2one → purchase.request
    readonly=True related='line_id.request_id' string='Purchase Request' args: 'purchase.request'
  • wiz_id Many2one → purchase.request.line.make.purchase.order
    ondelete='cascade' readonly=True required=True string='Wizard' args: 'purchase.request.line.make.purchase.order'
Public methods (1)
  • onchange_product_id(self)
    @api.onchange('product_id', 'product_uom_id')

New fields (0)

No new fields.

Public methods (1)
  • do_transfer(self)
    @api.multi