Purchase Requisition Bid Selection

purchase_requisition_bid_selection
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_requisition_bid_selection
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/purchase-workflow:
    - purchase_rfq_bid_workflow
    - purchase_requisition_multicurrency
odoo/odoo:
    - purchase_requisition
    - 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 (16)
XML IDNameModelTypeStatus
action_modal_confirm_different_quantity action.modal purchase.action_modal form New
ask_selection_reasons action.modal purchase.action_modal.ask_selection_reasons form New
ask_validity action.modal purchase.action_modal.ask_validity form New
assets_backend purchase requisition assets ir.ui.view qweb Inherits purchase_requisition.assets_backend
modal_confirm_close_selection action.modal purchase.action_modal form New
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
report_purchaserequisitions_document report_purchaserequisitions_document ir.ui.view qweb New
view_purchase_order_form purchase.order.inherit purchase.order xpath Inherits purchase_rfq_bid_workflow.view_purchase_order_form
view_purchase_order_form2 purchase.order.inherit purchase.order xpath Inherits purchase_requisition.purchase_order_form_inherit
view_purchase_order_line_form purchase.order.line.form.inherit purchase.order.line field Inherits purchase.purchase_order_line_form
view_purchase_order_line_search purchase.order.line.inherit purchase.order.line xpath Inherits purchase.purchase_order_line_search
view_purchase_order_line_tree purchase.order.line.inherit purchase.order.line xpath Inherits purchase_requisition.purchase_order_line_tree_tender
view_purchase_requisition_form purchase.requisition.form.inherit purchase.requisition xpath Inherits purchase_requisition_multicurrency.view_purchase_requisition_form
view_purchase_requisition_partner_draftbid Choose Supplier purchase.requisition.partner form New
view_update_bid_internal_remark Update bid internal remark update.bid.internal.remark form New
view_update_remark Update remark update.remark form New
Models touched (12)

New fields (1)
  • selection_reasons Text
    required=True
Public methods (0)

No public methods.

New fields (1)
  • validity Date
    required=True args: 'New end of validity'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (11)
  • bid_eligible Boolean
  • bid_internal_remark Text
    args: 'Internal remarks'
  • bid_partial Boolean
    help='True if the bid has been partially selected' readonly=True args: 'Bid partially selected'
  • country_of_origin Many2one → res.country
    args: 'res.country'
  • delivery_remark Text
    args: 'Delivery Remarks'
  • keep_in_draft Boolean
    help='Technical field used to prevent the PO that is automatically generated from a Tender to be validated. It is checked on the workflow transition.' args: 'Prevent validation of purchase order.'
  • meets_specifications Boolean
  • requisition_id Many2one
    copy=True
  • terms_of_payment Char
  • volume_estimated Float
    args: 'Volume estimated (m3)'
  • weight_estimated Float
    args: 'Weight estimated (kg)'
Public methods (1)
  • copy(self, default=None)
    @api.one
    Need to set origin after copy because original copy clears origin

New fields (0)

No new fields.

Public methods (1)
  • read_group(self, *args, **kwargs)
    Do not aggregate price and qty. We need to do it this way as there is no group_operator that can be set to prevent aggregating float

New fields (9)
  • bid_eligible Boolean
    related='order_id.bid_eligible' store=True
  • country_of_origin Many2one → res.country
    related='order_id.country_of_origin' args: 'res.country'
  • incoterm_address Char
    related='order_id.incoterm_address' args: 'Incoterms place'
  • incoterm_id Many2one → stock.incoterms
    related='order_id.incoterm_id' store=True string='Incoterm' args: 'stock.incoterms'
  • meets_specifications Boolean
    related='order_id.meets_specifications' store=True
  • payment_term_id Many2one → account.payment.term
    related='order_id.payment_term_id' args: 'account.payment.term'
  • remark Text
    args: 'Remarks / Conditions'
  • requisition_line_id Many2one → purchase.requisition.line
    readonly=True args: 'purchase.requisition.line', 'Call for Bid Line'
  • terms_of_payment Char
    related='order_id.terms_of_payment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (13)
  • bid_ids One2many → purchase.order
    comodel_name='purchase.order' domain=[('type', '=', 'bid')] inverse_name='requisition_id'
  • bid_receipt_mode Selection
    default='open' help='- Open : The bids can be opened when received and encoded. \n- Closed : The bids can be marked as received but they have to be opened \nall at the same time after an opening ceremony (probably specific to public sector).' required=True args: [('open', 'Open'), ('sealed', 'Sealed')], 'Bid Receipt Mode'
  • bid_tendering_mode Selection
    default='open' help='- Restricted : you select yourself the bidders and generate a RFQ for each of those. \n- Open : anybody can bid (you have to advertise the call for bids) and you directly encode the bids you received. You are still able to generate RFQ if you want to contact usual bidders.' required=True args: [('open', 'Open'), ('restricted', 'Restricted')], 'Call for Bids Mode'
  • budget Float
  • date_end Datetime
    help="All bids received after that date won't be valid (probably specific to public sector)." args: 'Bid Submission Deadline'
  • delivery_remark Text
    args: 'Delivery Remarks'
  • eligible_bid_ids One2many → purchase.order
    comodel_name='purchase.order' domain=[('type', '=', 'bid'), ('state', 'in', ('draftbid', 'bid')), ('bid_eligible', '=', True)] inverse_name='requisition_id'
  • pricelist_id Many2one → product.pricelist
    domain=[('type', '=', 'purchase')] help='If set that pricelist will be used to generate the RFQ.Mostely used to ask a requisition in a given currency.' args: 'product.pricelist', 'Pricelist'
  • req_incoterm_address Char
    help='Incoterm Place of Delivery. International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'Requested Incoterms Place'
  • req_incoterm_id Many2one → stock.incoterms
    help='Default value requested to the supplier. International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'stock.incoterms', 'Requested Incoterms'
  • req_payment_term_id Many2one → account.payment.term
    help='Default value requested to the supplier.' args: 'account.payment.term', 'Requested Payment Term'
  • req_terms_of_payment Char
    args: 'Requested Terms of Payment'
  • selection_reasons Text
    copy=False
Public methods (18)
  • act_tender_closed(self)
    @api.multi
  • ask_confirmation_to_close_selection(self)
    @api.multi
  • ask_selection_reasons(self)
    @api.multi
  • ask_validity(self)
    @api.multi
  • cancel_unconfirmed_quotations(self, tender)
    @api.model
    Called from generate_po. Cancel only draft and sent rfq
  • check_valid_quotation(self, quotation)
    @api.model
  • confirm_selection(self)
    @api.multi
    Check all quantities have been sourced
  • generate_po(self)
    @api.multi
  • open_po(self)
    @api.multi
    This opens po view to view all generated po associated to the call for bids
  • open_product_line(self, cr, uid, ids, context=None)
    Filter to show only lines from bids received. Group by requisition line instead of product for unicity.
  • open_rfq(self)
    @api.multi
    This opens rfq view to view all generated rfq/bids associated to the call for bids
  • quotation_selected(self, quotation)
    @api.model
    Predicate that checks if a quotation has at least one line chosen :param quotation: record of 'purchase.order' :returns: True if one line has been chosen
  • tender_cancel(self)
    @api.multi
    Cancel call for bids and try to cancel related RFQs/PO
  • tender_closed(self)
    @api.multi
  • tender_open(self)
    @api.multi
    Cancel RFQ that have not been sent. Ensure that there are RFQs."
  • tender_selected(self)
    @api.multi
  • update_selection_reasons(self)
    @api.multi
  • update_validity(self)
    @api.multi

New fields (2)
  • purchase_line_ids One2many → purchase.order.line
    readonly=True args: 'purchase.order.line', 'requisition_line_id', 'Bids Lines'
  • remark Text
    args: 'Remarks / Conditions'
Public methods (1)
  • name_get(self)
    @api.multi

New fields (0)

No new fields.

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

New fields (1)
  • bid_internal_remark Text
    default=get_default_remark
Public methods (2)
  • get_default_remark(self)
  • update_remark(self)
    @api.multi

New fields (1)
  • remark Text
    default=get_default_remark
Public methods (2)
  • get_default_remark(self)
  • update_remark(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_requisition_bid_selection
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/purchase-workflow:
    - purchase_rfq_bid_workflow
    - purchase_requisition_multicurrency
OCA/server-tools:
    - web_context_tunnel
odoo/odoo:
    - purchase_requisition
    - 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 (16)
XML IDNameModelTypeStatus
action_modal_confirm_different_quantity action.modal purchase.action_modal form New
ask_selection_reasons action.modal purchase.action_modal.ask_selection_reasons form New
ask_validity action.modal purchase.action_modal.ask_validity form New
assets_backend purchase requisition assets ir.ui.view qweb Inherits purchase_requisition.assets_backend
modal_confirm_close_selection action.modal purchase.action_modal form New
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
report_purchaserequisitions_document report_purchaserequisitions_document ir.ui.view qweb New
view_purchase_order_form purchase.order.inherit purchase.order xpath Inherits purchase_rfq_bid_workflow.view_purchase_order_form
view_purchase_order_form2 purchase.order.inherit purchase.order xpath Inherits purchase_requisition.purchase_order_form_inherit
view_purchase_order_line_form purchase.order.line.form.inherit purchase.order.line field Inherits purchase.purchase_order_line_form
view_purchase_order_line_search purchase.order.line.inherit purchase.order.line xpath Inherits purchase.purchase_order_line_search
view_purchase_order_line_tree purchase.order.line.inherit purchase.order.line xpath Inherits purchase_requisition.purchase_order_line_tree_tender
view_purchase_requisition_form purchase.requisition.form.inherit purchase.requisition xpath Inherits purchase_requisition_multicurrency.view_purchase_requisition_form
view_purchase_requisition_partner_draftbid Choose Supplier purchase.requisition.partner form New
view_update_bid_internal_remark Update bid internal remark update.bid.internal.remark form New
view_update_remark Update remark update.remark form New
Models touched (12)

New fields (1)
  • selection_reasons Text
    required=True
Public methods (0)

No public methods.

New fields (1)
  • validity Date
    required=True args: 'New end of validity'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (11)
  • bid_eligible Boolean
  • bid_internal_remark Text
    args: 'Internal remarks'
  • bid_partial Boolean
    help='True if the bid has been partially selected' readonly=True args: 'Bid partially selected'
  • country_of_origin Many2one → res.country
    args: 'res.country'
  • delivery_remark Text
    args: 'Delivery Remarks'
  • keep_in_draft Boolean
    help='Technical field used to prevent the PO that is automatically generated from a Tender to be validated. It is checked on the workflow transition.' args: 'Prevent validation of purchase order.'
  • meets_specifications Boolean
  • requisition_id Many2one
    copy=True
  • terms_of_payment Char
  • volume_estimated Float
    args: 'Volume estimated (m3)'
  • weight_estimated Float
    args: 'Weight estimated (kg)'
Public methods (1)
  • copy(self, default=None)
    @api.one
    Need to set origin after copy because original copy clears origin

New fields (0)

No new fields.

Public methods (1)
  • read_group(self, *args, **kwargs)
    Do not aggregate price and qty. We need to do it this way as there is no group_operator that can be set to prevent aggregating float

New fields (9)
  • bid_eligible Boolean
    related='order_id.bid_eligible' store=True
  • country_of_origin Many2one → res.country
    related='order_id.country_of_origin' args: 'res.country'
  • incoterm_address Char
    related='order_id.incoterm_address' args: 'Incoterms place'
  • incoterm_id Many2one → stock.incoterms
    related='order_id.incoterm_id' store=True string='Incoterm' args: 'stock.incoterms'
  • meets_specifications Boolean
    related='order_id.meets_specifications' store=True
  • payment_term_id Many2one → account.payment.term
    related='order_id.payment_term_id' args: 'account.payment.term'
  • remark Text
    args: 'Remarks / Conditions'
  • requisition_line_id Many2one → purchase.requisition.line
    readonly=True args: 'purchase.requisition.line', 'Call for Bid Line'
  • terms_of_payment Char
    related='order_id.terms_of_payment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (13)
  • bid_ids One2many → purchase.order
    comodel_name='purchase.order' domain=[('type', '=', 'bid')] inverse_name='requisition_id'
  • bid_receipt_mode Selection
    default='open' help='- Open : The bids can be opened when received and encoded. \n- Closed : The bids can be marked as received but they have to be opened \nall at the same time after an opening ceremony (probably specific to public sector).' required=True args: [('open', 'Open'), ('sealed', 'Sealed')], 'Bid Receipt Mode'
  • bid_tendering_mode Selection
    default='open' help='- Restricted : you select yourself the bidders and generate a RFQ for each of those. \n- Open : anybody can bid (you have to advertise the call for bids) and you directly encode the bids you received. You are still able to generate RFQ if you want to contact usual bidders.' required=True args: [('open', 'Open'), ('restricted', 'Restricted')], 'Call for Bids Mode'
  • budget Float
  • date_end Datetime
    help="All bids received after that date won't be valid (probably specific to public sector)." args: 'Bid Submission Deadline'
  • delivery_remark Text
    args: 'Delivery Remarks'
  • eligible_bid_ids One2many → purchase.order
    comodel_name='purchase.order' domain=[('type', '=', 'bid'), ('state', 'in', ('draftbid', 'bid')), ('bid_eligible', '=', True)] inverse_name='requisition_id'
  • pricelist_id Many2one → product.pricelist
    domain=[('type', '=', 'purchase')] help='If set that pricelist will be used to generate the RFQ.Mostely used to ask a requisition in a given currency.' args: 'product.pricelist', 'Pricelist'
  • req_incoterm_address Char
    help='Incoterm Place of Delivery. International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'Requested Incoterms Place'
  • req_incoterm_id Many2one → stock.incoterms
    help='Default value requested to the supplier. International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'stock.incoterms', 'Requested Incoterms'
  • req_payment_term_id Many2one → account.payment.term
    help='Default value requested to the supplier.' args: 'account.payment.term', 'Requested Payment Term'
  • req_terms_of_payment Char
    args: 'Requested Terms of Payment'
  • selection_reasons Text
    copy=False
Public methods (18)
  • act_tender_closed(self)
    @api.multi
  • ask_confirmation_to_close_selection(self)
    @api.multi
  • ask_selection_reasons(self)
    @api.multi
  • ask_validity(self)
    @api.multi
  • cancel_unconfirmed_quotations(self, tender)
    @api.model
    Called from generate_po. Cancel only draft and sent rfq
  • check_valid_quotation(self, quotation)
    @api.model
  • confirm_selection(self)
    @api.multi
    Check all quantities have been sourced
  • generate_po(self)
    @api.multi
  • open_po(self)
    @api.multi
    This opens po view to view all generated po associated to the call for bids
  • open_product_line(self, cr, uid, ids, context=None)
    Filter to show only lines from bids received. Group by requisition line instead of product for unicity.
  • open_rfq(self)
    @api.multi
    This opens rfq view to view all generated rfq/bids associated to the call for bids
  • quotation_selected(self, quotation)
    @api.model
    Predicate that checks if a quotation has at least one line chosen :param quotation: record of 'purchase.order' :returns: True if one line has been chosen
  • tender_cancel(self)
    @api.multi
    Cancel call for bids and try to cancel related RFQs/PO
  • tender_closed(self)
    @api.multi
  • tender_open(self)
    @api.multi
    Cancel RFQ that have not been sent. Ensure that there are RFQs."
  • tender_selected(self)
    @api.multi
  • update_selection_reasons(self)
    @api.multi
  • update_validity(self)
    @api.multi

New fields (2)
  • purchase_line_ids One2many → purchase.order.line
    readonly=True args: 'purchase.order.line', 'requisition_line_id', 'Bids Lines'
  • remark Text
    args: 'Remarks / Conditions'
Public methods (1)
  • name_get(self)
    @api.multi

New fields (0)

No new fields.

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

New fields (1)
  • bid_internal_remark Text
    default=get_default_remark
Public methods (2)
  • get_default_remark(self)
  • update_remark(self)
    @api.multi

New fields (1)
  • remark Text
    default=get_default_remark
Public methods (2)
  • get_default_remark(self)
  • update_remark(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_requisition_bid_selection
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYPurchase Management
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSStéphane Bidoul, Yannick Vaucher, Alexandre Fayolle, Joël Grand-Guillaume, Leonardo Pistone, Stéphane Bidoul (ACSONE), Pierre Verkest, OCA Transbot, oca-travis, Weblate
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/purchase-workflow:
    - purchase_rfq_bid_workflow
    - purchase_requisition_multicurrency
OCA/server-tools:
    - web_context_tunnel
odoo/odoo:
    - purchase_requisition
    - 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 (16)
XML IDNameModelTypeStatus
action_modal_confirm_different_quantity action.modal purchase.action_modal form New
ask_selection_reasons action.modal purchase.action_modal.ask_selection_reasons form New
ask_validity action.modal purchase.action_modal.ask_validity form New
assets_backend purchase requisition assets ir.ui.view qweb Inherits purchase_requisition.assets_backend
modal_confirm_close_selection action.modal purchase.action_modal form New
report_purchaserequisitions report_purchaserequisitions ir.ui.view qweb New
report_purchaserequisitions_document report_purchaserequisitions_document ir.ui.view qweb New
view_purchase_order_form purchase.order.inherit purchase.order xpath Inherits purchase_rfq_bid_workflow.view_purchase_order_form
view_purchase_order_form2 purchase.order.inherit purchase.order xpath Inherits purchase_requisition.purchase_order_form_inherit
view_purchase_order_line_form purchase.order.line.form.inherit purchase.order.line field Inherits purchase.purchase_order_line_form
view_purchase_order_line_search purchase.order.line.inherit purchase.order.line xpath Inherits purchase.purchase_order_line_search
view_purchase_order_line_tree purchase.order.line.inherit purchase.order.line xpath Inherits purchase_requisition.purchase_order_line_tree_tender
view_purchase_requisition_form purchase.requisition.form.inherit purchase.requisition xpath Inherits purchase_requisition_multicurrency.view_purchase_requisition_form
view_purchase_requisition_partner_draftbid Choose Supplier purchase.requisition.partner form New
view_update_bid_internal_remark Update bid internal remark update.bid.internal.remark form New
view_update_remark Update remark update.remark form New
Models touched (12)

New fields (1)
  • selection_reasons Text
    required=True
Public methods (0)

No public methods.

New fields (1)
  • validity Date
    required=True args: 'New end of validity'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (11)
  • bid_eligible Boolean
  • bid_internal_remark Text
    args: 'Internal remarks'
  • bid_partial Boolean
    help='True if the bid has been partially selected' readonly=True args: 'Bid partially selected'
  • country_of_origin Many2one → res.country
    args: 'res.country'
  • delivery_remark Text
    args: 'Delivery Remarks'
  • keep_in_draft Boolean
    help='Technical field used to prevent the PO that is automatically generated from a Tender to be validated. It is checked on the workflow transition.' args: 'Prevent validation of purchase order.'
  • meets_specifications Boolean
  • requisition_id Many2one
    copy=True
  • terms_of_payment Char
  • volume_estimated Float
    args: 'Volume estimated (m3)'
  • weight_estimated Float
    args: 'Weight estimated (kg)'
Public methods (1)
  • copy(self, default=None)
    @api.one
    Need to set origin after copy because original copy clears origin

New fields (0)

No new fields.

Public methods (1)
  • read_group(self, *args, **kwargs)
    Do not aggregate price and qty. We need to do it this way as there is no group_operator that can be set to prevent aggregating float

New fields (9)
  • bid_eligible Boolean
    related='order_id.bid_eligible' store=True
  • country_of_origin Many2one → res.country
    related='order_id.country_of_origin' args: 'res.country'
  • incoterm_address Char
    related='order_id.incoterm_address' args: 'Incoterms place'
  • incoterm_id Many2one → stock.incoterms
    related='order_id.incoterm_id' store=True string='Incoterm' args: 'stock.incoterms'
  • meets_specifications Boolean
    related='order_id.meets_specifications' store=True
  • payment_term_id Many2one → account.payment.term
    related='order_id.payment_term_id' args: 'account.payment.term'
  • remark Text
    args: 'Remarks / Conditions'
  • requisition_line_id Many2one → purchase.requisition.line
    readonly=True args: 'purchase.requisition.line', 'Call for Bid Line'
  • terms_of_payment Char
    related='order_id.terms_of_payment'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (13)
  • bid_ids One2many → purchase.order
    comodel_name='purchase.order' domain=[('type', '=', 'bid')] inverse_name='requisition_id'
  • bid_receipt_mode Selection
    default='open' help='- Open : The bids can be opened when received and encoded. \n- Closed : The bids can be marked as received but they have to be opened \nall at the same time after an opening ceremony (probably specific to public sector).' required=True args: [('open', 'Open'), ('sealed', 'Sealed')], 'Bid Receipt Mode'
  • bid_tendering_mode Selection
    default='open' help='- Restricted : you select yourself the bidders and generate a RFQ for each of those. \n- Open : anybody can bid (you have to advertise the call for bids) and you directly encode the bids you received. You are still able to generate RFQ if you want to contact usual bidders.' required=True args: [('open', 'Open'), ('restricted', 'Restricted')], 'Call for Bids Mode'
  • budget Float
  • date_end Datetime
    help="All bids received after that date won't be valid (probably specific to public sector)." args: 'Bid Submission Deadline'
  • delivery_remark Text
    args: 'Delivery Remarks'
  • eligible_bid_ids One2many → purchase.order
    comodel_name='purchase.order' domain=[('type', '=', 'bid'), ('state', 'in', ('draftbid', 'bid')), ('bid_eligible', '=', True)] inverse_name='requisition_id'
  • pricelist_id Many2one → product.pricelist
    domain=[('type', '=', 'purchase')] help='If set that pricelist will be used to generate the RFQ.Mostely used to ask a requisition in a given currency.' args: 'product.pricelist', 'Pricelist'
  • req_incoterm_address Char
    help='Incoterm Place of Delivery. International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'Requested Incoterms Place'
  • req_incoterm_id Many2one → stock.incoterms
    help='Default value requested to the supplier. International Commercial Terms are a series of predefined commercial terms used in international transactions.' args: 'stock.incoterms', 'Requested Incoterms'
  • req_payment_term_id Many2one → account.payment.term
    help='Default value requested to the supplier.' args: 'account.payment.term', 'Requested Payment Term'
  • req_terms_of_payment Char
    args: 'Requested Terms of Payment'
  • selection_reasons Text
    copy=False
Public methods (18)
  • act_tender_closed(self)
    @api.multi
  • ask_confirmation_to_close_selection(self)
    @api.multi
  • ask_selection_reasons(self)
    @api.multi
  • ask_validity(self)
    @api.multi
  • cancel_unconfirmed_quotations(self, tender)
    @api.model
    Called from generate_po. Cancel only draft and sent rfq
  • check_valid_quotation(self, quotation)
    @api.model
  • confirm_selection(self)
    @api.multi
    Check all quantities have been sourced
  • generate_po(self)
    @api.multi
  • open_po(self)
    @api.multi
    This opens po view to view all generated po associated to the call for bids
  • open_product_line(self, cr, uid, ids, context=None)
    Filter to show only lines from bids received. Group by requisition line instead of product for unicity.
  • open_rfq(self)
    @api.multi
    This opens rfq view to view all generated rfq/bids associated to the call for bids
  • quotation_selected(self, quotation)
    @api.model
    Predicate that checks if a quotation has at least one line chosen :param quotation: record of 'purchase.order' :returns: True if one line has been chosen
  • tender_cancel(self)
    @api.multi
    Cancel call for bids and try to cancel related RFQs/PO
  • tender_closed(self)
    @api.multi
  • tender_open(self)
    @api.multi
    Cancel RFQ that have not been sent. Ensure that there are RFQs."
  • tender_selected(self)
    @api.multi
  • update_selection_reasons(self)
    @api.multi
  • update_validity(self)
    @api.multi

New fields (2)
  • purchase_line_ids One2many → purchase.order.line
    readonly=True args: 'purchase.order.line', 'requisition_line_id', 'Bids Lines'
  • remark Text
    args: 'Remarks / Conditions'
Public methods (1)
  • name_get(self)
    @api.multi

New fields (0)

No new fields.

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

New fields (1)
  • bid_internal_remark Text
    default=get_default_remark
Public methods (2)
  • get_default_remark(self)
  • update_remark(self)
    @api.multi

New fields (1)
  • remark Text
    default=get_default_remark
Public methods (2)
  • get_default_remark(self)
  • update_remark(self)
    @api.multi