| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/vertical-ngo |
| GIT | |
| GIT | https://github.com/OCA/vertical-ngo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/vertical-ngo/tree/10.0/logistic_requisition |
| VERSION | |
| VERSION | 1.4.1 |
| CATEGORY | |
| CATEGORY | Purchase Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Stéphane Bidoul (ACSONE) |
| WEBSITE | |
| WEBSITE | http://www.camptocamp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:04 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/purchase-workflow: - purchase_requisition_bid_selection - purchase_rfq_bid_workflow - purchase_requisition_multicurrency - framework_agreement - purchase_requisition_delivery_address - purchase_requisition_auto_rfq - purchase_requisition_transport_document - purchase_transport_document - purchase_origin_address - purchase_delivery_address OCA/sale-workflow: - sale_sourced_by_line - sale_procurement_group_by_line - sale_owner_stock_sourcing - sale_validity - sale_quotation_sourcing - sale_exception OCA/server-tools: - base_exception OCA/stock-logistics-transport: - sale_transport_multi_address - stock_transport_multi_address - purchase_requisition_transport_multi_address - purchase_transport_multi_address - transport_information OCA/stock-logistics-workflow: - stock_ownership_availability_rules OCA/vertical-ngo: - logistic_order - logistic_consignee - ngo_purchase - framework_agreement_requisition - ngo_purchase_requisition odoo/odoo: - sale_stock - sale - sales_team - base - base_setup - web_kanban - web - bus - web_tour - account - product - decimal_precision - report - analytic - web_planner - procurement - stock_account - stock - barcodes - stock_dropshipping - purchase - purchase_requisition - delivery |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_form |
purchase_order_form | purchase.order | div | Inherits ngo_purchase.purchase_order_form |
quant_search_view |
stock.quant.search | stock.quant | filter | Inherits stock.quant_search_view |
report_logistic_requisition |
report_logistic_requisition | ir.ui.view | qweb | New |
report_logistic_requisition_document |
report_logistic_requisition_document | ir.ui.view | qweb | New |
view_logistic_requisition_cancel |
Reason for the cancellation | logistic.requisition.cancel | form | New |
view_logistic_requisition_cancel_reason_form |
Logistics Requisition Cancel Reason | logistic.requisition.cancel.reason | form | New |
view_logistic_requisition_cancel_reason_tree |
Logistics Requisition Cancel Reason | logistic.requisition.cancel.reason | tree | New |
view_logistic_requisition_cost_estimate |
Logistics Requisition Cost Estimate | logistic.requisition.cost.estimate | form | New |
view_logistic_requisition_filter |
logistic.requisition.list.select | logistic.requisition | search | New |
view_logistic_requisition_form |
logistic.requisition.form | logistic.requisition | form | New |
view_logistic_requisition_line_assign_wizard |
Assign Requisition Line | logistic.requisition.line.assign | form | New |
view_logistic_requisition_line_calendar |
logistic.requisition.line.tree | logistic.requisition.line | calendar | New |
view_logistic_requisition_line_filter |
logistic.requisition.line.list.select | logistic.requisition.line | search | New |
view_logistic_requisition_line_form |
logistic.requisition.line.form | logistic.requisition.line | form | New |
view_logistic_requisition_line_kanban |
logistic.requisition.line.kanban | logistic.requisition.line | kanban | New |
view_logistic_requisition_line_tree |
logistic.requisition.line.tree | logistic.requisition.line | tree | New |
view_logistic_requisition_source_filter |
logistic.requisition.source.list.select | logistic.requisition.source | search | New |
view_logistic_requisition_source_form |
logistic.requisition.source.form | logistic.requisition.source | form | New |
view_logistic_requisition_source_tree |
logistic.requisition.source.tree | logistic.requisition.source | tree | New |
view_logistic_requisition_tree |
logistic.requisition.tree | logistic.requisition | tree | New |
view_order_form1 |
sale.order.form | sale.order | h1 | Inherits sale_transport_multi_address.view_order_form |
view_order_form2 |
sale.order.form | sale.order | xpath | Inherits sale_sourced_by_line.view_order_form_form |
view_order_form3 |
sale.order.form | sale.order | xpath | Inherits sale_owner_stock_sourcing.view_order_form_inherit |
view_order_form4 |
sale.order.form | sale.order | xpath | Inherits logistic_order.view_order_form |
view_order_line_form2_lr |
sale.order.line.form2.lr | sale.order.line | button | Inherits sale.view_order_line_form2 |
analytic_id
Many2one → account.analytic.account
states=REQ_STATES
args: 'account.analytic.account', 'Project'
cancel_reason_id
Many2one → logistic.requisition.cancel.reason
copy=False
ondelete='restrict'
readonly=True
string='Reason for Cancellation'
args: 'logistic.requisition.cancel.reason'
ce_count
Integer
compute='_count_cost_estimates'
string='CE count'
company_id
Many2one → res.company
default=<expr>
readonly=True
args: 'res.company', 'Company'
consignee_id
Many2one → res.partner
domain=[('is_consignee', '=', True)]
states=REQ_STATES
args: 'res.partner', 'Consignee'
consignee_shipping_id
Many2one → res.partner
states=REQ_STATES
args: 'res.partner', 'Delivery Address'
country_id
Many2one → res.country
select=True
states=REQ_STATES
string='Country'
args: 'res.country'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='pricelist_id.currency_id'
store=True
string='Currency'
date
Datetime
default=fields.Datetime.now
required=True
states=REQ_STATES
args: 'Requisition Date'
date_delivery
Date
required=True
states=REQ_STATES
args: 'Desired Delivery Date'
incoterm_address
Char
help='Incoterm Place of Delivery. International Commercial Terms are a series of predefined commercial terms used in international transactions.'
states=REQ_STATES
args: 'Incoterm Place'
incoterm_id
Many2one → stock.incoterms
help='International Commercial Terms are a series of predefined commercial terms used in international transactions.'
states=REQ_STATES
args: 'stock.incoterms', 'Incoterm'
line_ids
One2many → logistic.requisition.line
copy=True
states={'done': [('readonly', True)]}
string='Products to Purchase'
args: 'logistic.requisition.line', 'requisition_id'
name
Char
copy=False
default='/'
readonly=True
required=True
args: 'Reference'
note
Text
states=REQ_STATES
args: 'Remarks / Description'
partner_id
Many2one → res.partner
domain=[('customer', '=', True)]
required=True
states=REQ_STATES
args: 'res.partner', 'Requestor'
po_count
Integer
compute='_count_purchase_orders'
string='PO count'
pricelist_id
Many2one → product.pricelist
help='Pricelist that represents the currency for current logistics requisition.'
required=True
states=REQ_STATES
args: 'product.pricelist', 'Pricelist'
requisition_type
Selection
default='standard'
required=True
selection=_get_requisition_type_selection
states=REQ_STATES
string='Type'
shipping_note
Text
states=REQ_STATES
args: 'Delivery / Shipping Remarks'
source_document
Char
states=REQ_STATES
args: 'Source Document'
sourced
Float
compute='_get_sourced'
string='Sourced'
state
Selection
copy=False
default='draft'
readonly=True
required=True
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done'), ('cancel', 'Cancelled')]
user_id
Many2one → res.users
default=<expr>
help='Mobilization Officer or Logistics Coordinator in charge of the Logistics Requisition'
required=True
states=REQ_STATES
args: 'res.users', 'Business Unit Officer'
action_open_lr_cost_estimate(self)
action_open_lr_purchases(self)
button_confirm(self)
button_create_cost_estimate(self)
button_reset(self)
button_view_lines(self)
button_view_source_lines(self)
create(self, vals)
get_partner_requisition(self)
get_requisition_type_selection(self)
onchange_consignee_id_set_consignee_shipping_id(self)
onchange_consignee_id_set_country_id(self)
onchange_partner_id(self)
reason_id
Many2one → logistic.requisition.cancel.reason
required=True
string='Reason'
args: 'logistic.requisition.cancel.reason'
confirm_cancel(self)
name
Char
required=True
translate=True
args: 'Reason'
No public methods.
line_ids
Many2many → logistic.requisition.line
readonly=True
string='Sourced Lines'
args: 'logistic.requisition.line', 'requisition_cost_estimate_sourced_line', 'wizard_id', 'line_id'
requisition_id
Many2one → logistic.requisition
readonly=True
required=True
string='Logistics Requisition'
args: 'logistic.requisition'
skipped_line_ids
Many2many → logistic.requisition.line
readonly=True
string='Skipped Lines'
args: 'logistic.requisition.line', 'requisition_cost_estimate_skipped_line', 'wizard_id', 'line_id'
cost_estimate(self)
default_get(self, fields_list)
account_id
Many2one → account.account
comodel_name='account.account'
readonly=True
related='product_id.property_account_income'
string='Nominal Account'
amount_total
Float
compute='_get_total_cost'
digits=dp.get_precision('Account')
store=True
string='Total Amount'
consignee_id
Many2one
co_model='res.partner'
related='requisition_id.consignee_id'
string='Consignee'
consignee_shipping_id
Many2one
co_model='res.partner'
related='requisition_id.consignee_shipping_id'
string='Delivery Address'
cost_estimate_id
Many2one → sale.order
copy=False
readonly=True
string='Cost Estimate'
args: 'sale.order'
country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
related='requisition_id.country_id'
store=True
string='Country'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='requisition_id.currency_id'
store=True
string='Currency'
date_delivery
Date
required=True
states=REQUEST_STATES
args: 'Desired Delivery Date'
description
Text
required=True
states=REQUEST_STATES
args: 'Description'
incoterm_address
Char
help='Incoterm Place of Delivery. International Commercial Terms are a series of predefined commercial terms used in international transactions.'
related='requisition_id.incoterm_address'
string='Incoterm Place'
incoterm_id
Many2one
co_model='stock.incoterms'
help='International Commercial Terms are a series of predefined commercial terms used in international transactions.'
related='requisition_id.incoterm_id'
string='Incoterm'
logistic_user_id
Many2one → res.users
help='User in charge of the Logistics Requisition Line'
states=REQUEST_STATES
track_visibility='never'
args: 'res.users', 'Assigned To'
name
Char
copy=False
default='/'
readonly=True
args: 'Line No.'
note
Text
product_id
Many2one → product.product
states=REQUEST_STATES
args: 'product.product', 'Product'
requested_qty
Float
default=1.0
digits=dp.get_precision('Product UoM')
states=REQUEST_STATES
args: 'Quantity'
requested_uom_id
Many2one → product.uom
required=True
states=REQUEST_STATES
args: 'product.uom', 'Product UoM'
requestor_id
Many2one
co_model='res.partner'
related='requisition_id.partner_id'
string='Requestor'
requisition_id
Many2one → logistic.requisition
ondelete='cascade'
readonly=True
required=True
args: 'logistic.requisition', 'Requisition'
requisition_type
Selection
readonly=True
related='requisition_id.requisition_type'
selection=LogisticsRequisition._get_requisition_type_selection
string='Requisition Type'
shipping_note
Text
related='requisition_id.shipping_note'
string='Delivery / Shipping Remarks'
source_ids
One2many → logistic.requisition.source
states={'sourced': [('readonly', True)], 'quoted': [('readonly', True)]}
string='Source Lines'
args: 'logistic.requisition.source', 'requisition_line_id'
state
Selection
copy=False
default='draft'
help='Draft: Created\nConfirmed: Requisition has been confirmed\nAssigned: Waiting the creation of a quote\nSourced: The line has been sourced from procurement or warehouse\nQuoted: Quotation made for the line\nCancelled: The requisition has been cancelled'
readonly=True
required=True
string='State'
args: STATES
stock_count
Integer
compute='_stock_count'
action_view_stock(self)
button_cancel(self)
button_create_cost_estimate(self)
button_create_po_requisition(self)
button_open_cost_estimate(self)
button_reset(self)
button_sourced(self)
create(self, vals)
name_get(self)
onchange_product_id(self)
write(self, vals)
logistic_user_id
Many2one → res.users
help='Logistics Specialist in charge of the Logistics Requisition Line'
required=True
args: 'res.users', 'Logistics Specialist'
assign(self)
consignee_shipping_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='requisition_line_id.requisition_id.consignee_shipping_id'
string='Delivery Address'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='requisition_line_id.requisition_id.currency_id'
string='Currency'
default_source_address
Many2one → res.partner
comodel_name='res.partner'
compute='_default_source_address'
readonly=True
string='Default source'
dispatch_location_id
Many2one → stock.location
comodel_name='stock.location'
readonly=True
related='dispatch_warehouse_id.lot_stock_id'
store=True
string='Dispatch Location'
dispatch_warehouse_id
Many2one → stock.warehouse
states=SOURCED_STATES
string='Dispatch From'
args: 'stock.warehouse'
location_partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='dispatch_warehouse_id.partner_id'
string='Location Address'
name
Char
copy=False
default='/'
readonly=True
args: 'Source Name'
origin
Char
po_requisition_id
Many2one → purchase.requisition
comodel_name='purchase.requisition'
readonly=True
related='purchase_requisition_line_id.requisition_id'
string='Purchase Requisition'
price_is
Selection
help='When the price is an estimation, the final price may change. I.e. it is not based on a request for quotation.'
required=True
string='Price is'
args: PRICE_IS_SELECTION
proposed_product_id
Many2one → product.product
required=True
states=SOURCED_STATES
string='Proposed Product'
args: 'product.product'
proposed_qty
Float
default=1
digits=dp.get_precision('Product UoM')
states=SOURCED_STATES
args: 'Proposed Qty'
proposed_uom_id
Many2one → product.uom
states=SOURCED_STATES
string='Proposed UoM'
args: 'product.uom'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
compute='_get_purchase_line_id'
readonly=True
string='Purchase Order Line'
purchase_requisition_line_id
Many2one → purchase.requisition.line
copy=False
ondelete='set null'
readonly=True
args: 'purchase.requisition.line', 'Purchase Requisition Line'
requisition_id
Many2one → logistic.requisition
comodel_name='logistic.requisition'
readonly=True
related='requisition_line_id.requisition_id'
store=True
string='Logistics Requisition'
requisition_line_id
Many2one → logistic.requisition.line
ondelete='cascade'
readonly=True
required=True
string='Requisition Line'
args: 'logistic.requisition.line'
selectable_bid_line_ids
Many2many → purchase.requisition.line
comodel_name='purchase.requisition.line'
compute='_get_selectable_bid_line_ids'
selectable_purchase_req_ids
Many2many → purchase.order
comodel_name='purchase.order'
compute='_get_selectable_purchase_req_ids'
selected_bid_id
Many2one → purchase.order
comodel_name='purchase.order'
readonly=True
related='selected_bid_line_id.order_id'
string='Selected Bid'
selected_bid_line_id
Many2one → purchase.order.line
copy=False
ondelete='restrict'
readonly=True
args: 'purchase.order.line', 'Bid Selected Line'
sourcing_method
Selection
default='other'
oldname='procurement_method'
required=True
states=SOURCED_STATES
string='Sourcing Method'
args: [('procurement', 'Go to Tender'), ('reuse_bid', 'Use Existing Bid'), ('wh_dispatch', 'Warehouse Dispatch'), ('fw_agreement', 'Framework Agreement'), ('other', 'Other')]
state
Selection
readonly=True
related='requisition_line_id.state'
selection=LogisticsRequisitionLine.STATES
string="Line's State"
stock_owner_id
Many2one → res.partner
comodel_name='res.partner'
string='Stock owner'
supplier_partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='selected_bid_line_id.order_id.partner_id'
string='Supplier Address'
total_cost
Float
compute='_get_total_cost'
digits=dp.get_precision('Account')
store=True
string='Total Cost'
unit_cost
Float
digits=dp.get_precision('Account')
states=SOURCED_STATES
args: 'Unit Cost'
action_create_po_requisition(self)
action_open_po_requisition(self)
create(self, vals)
onchange_dispatch_warehouse_id(self)
onchange_po_requisition_id(self)
onchange_selected_bid_id(self)
onchange_selected_bid_line_id(self)
onchange_sourcing_method(self)
open_po_requisition(self, purch_req=None)
No new fields.
Public methods (1)action_po_assign(self)
logistic_order_count
Integer
compute='_count_logistic_order'
transport_mode_id
Many2one → transport.mode
transport_vehicle_id
Many2one → transport.vehicle
action_open_logistic_orders(self)
from_bid_line_id
Many2one → purchase.order.line
readonly=True
args: 'purchase.order.line', 'Generated from bid'
lo_line_ids
One2many → sale.order.line
comodel_name='sale.order.line'
inverse_name='sourced_by'
lr_source_line_id
Many2one → logistic.requisition.source
ondelete='restrict'
readonly=True
args: 'logistic.requisition.source', 'Logistics Requisition Source'
po_line_from_bid_ids
One2many → purchase.order.line
readonly=True
args: 'purchase.order.line', 'from_bid_line_id', 'Lines generated by the bid'
copy_data(self, cr, uid, res_id, default=None, context=None)
unlink(self)
write(self, vals)
transport_mode_id
Many2one → transport.mode
transport_vehicle_id
Many2one → transport.vehicle
tender_closed(self)
logistic_requisition_source_ids
One2many → logistic.requisition.source
readonly=True
string='Logistics Requisition Source Lines'
args: 'logistic.requisition.source', 'purchase_requisition_line_id'
No public methods.
No new fields.
Public methods (0)No public methods.
lr_count
Integer
compute='_count_logistic_requisition'
lr_purchase_count
Integer
compute='_count_lr_purchase'
lr_source_count
Integer
compute='_count_lr_source'
requisition_id
Many2one → logistic.requisition
copy=False
ondelete='restrict'
args: 'logistic.requisition', 'Logistics Requisition'
action_accepted(self)
action_open_logistic_requisition(self)
action_open_lr_purchases(self)
action_open_lr_sources(self)
lr_source_id
Many2one → logistic.requisition.source
readonly=True
args: 'logistic.requisition.source', 'Logistics Requisition Source'
price_is
Selection
default='fixed'
help='When the price is an estimation, the final price may change. I.e. it is not based on a request for quotation.'
string='Price is'
args: LogisticsRequisitionSource.PRICE_IS_SELECTION
sourced_by
Many2one
domain="[('product_id', '=', product_id), ('order_id.state', 'in', ['draftpo', 'confirmed'])]"
sourcing_method
Selection
related='lr_source_id.sourcing_method'
selection=[('procurement', 'Go to Tender'), ('reuse_bid', 'Use Existing Bid'), ('wh_dispatch', 'Warehouse Dispatch'), ('fw_agreement', 'Framework Agreement'), ('other', 'Other')]
product_id_change_with_wh(self, cr, uid, ids, pricelist, product, qty=0, uom=False, qty_uos=0, uos=False, name='', partner_id=False, lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, warehouse_id=False, context=None)
po_line_id
Many2one
domain="[('product_id', '=', product_id), ('order_id.state', 'in', ['draftpo', 'confirmed'])]"
No public methods.
No new fields.
Public methods (2)name_get(self, cr, user, ids, context=None)
name_search(self, name, args=None, operator='ilike', limit=100)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/vertical-ngo |
| GIT | |
| GIT | https://github.com/OCA/vertical-ngo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/vertical-ngo/tree/9.0/logistic_requisition |
| VERSION | |
| VERSION | 1.4.1 |
| CATEGORY | |
| CATEGORY | Purchase Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Stéphane Bidoul (ACSONE) |
| WEBSITE | |
| WEBSITE | http://www.camptocamp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:25 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/purchase-workflow: - purchase_requisition_bid_selection - purchase_rfq_bid_workflow - purchase_requisition_multicurrency - framework_agreement - purchase_requisition_delivery_address - purchase_requisition_auto_rfq - purchase_requisition_transport_document - purchase_transport_document - purchase_origin_address - purchase_delivery_address OCA/sale-workflow: - sale_sourced_by_line - sale_procurement_group_by_line - sale_owner_stock_sourcing - sale_validity - sale_quotation_sourcing - sale_exception OCA/server-tools: - web_context_tunnel OCA/stock-logistics-transport: - sale_transport_multi_address - stock_transport_multi_address - purchase_requisition_transport_multi_address - purchase_transport_multi_address - transport_information OCA/stock-logistics-workflow: - stock_ownership_availability_rules OCA/vertical-ngo: - logistic_order - logistic_consignee - ngo_purchase - framework_agreement_requisition - ngo_purchase_requisition odoo/odoo: - sale_stock - sale - sales_team - base - base_setup - web_kanban - web - bus - account - product - decimal_precision - report - analytic - web_tip - web_planner - procurement - stock_account - stock - barcodes - stock_dropshipping - purchase - purchase_requisition - delivery |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_form |
purchase_order_form | purchase.order | div | Inherits ngo_purchase.purchase_order_form |
quant_search_view |
stock.quant.search | stock.quant | filter | Inherits stock.quant_search_view |
report_logistic_requisition |
report_logistic_requisition | ir.ui.view | qweb | New |
report_logistic_requisition_document |
report_logistic_requisition_document | ir.ui.view | qweb | New |
view_logistic_requisition_cancel |
Reason for the cancellation | logistic.requisition.cancel | form | New |
view_logistic_requisition_cancel_reason_form |
Logistics Requisition Cancel Reason | logistic.requisition.cancel.reason | form | New |
view_logistic_requisition_cancel_reason_tree |
Logistics Requisition Cancel Reason | logistic.requisition.cancel.reason | tree | New |
view_logistic_requisition_cost_estimate |
Logistics Requisition Cost Estimate | logistic.requisition.cost.estimate | form | New |
view_logistic_requisition_filter |
logistic.requisition.list.select | logistic.requisition | search | New |
view_logistic_requisition_form |
logistic.requisition.form | logistic.requisition | form | New |
view_logistic_requisition_line_assign_wizard |
Assign Requisition Line | logistic.requisition.line.assign | form | New |
view_logistic_requisition_line_calendar |
logistic.requisition.line.tree | logistic.requisition.line | calendar | New |
view_logistic_requisition_line_filter |
logistic.requisition.line.list.select | logistic.requisition.line | search | New |
view_logistic_requisition_line_form |
logistic.requisition.line.form | logistic.requisition.line | form | New |
view_logistic_requisition_line_kanban |
logistic.requisition.line.kanban | logistic.requisition.line | kanban | New |
view_logistic_requisition_line_tree |
logistic.requisition.line.tree | logistic.requisition.line | tree | New |
view_logistic_requisition_source_filter |
logistic.requisition.source.list.select | logistic.requisition.source | search | New |
view_logistic_requisition_source_form |
logistic.requisition.source.form | logistic.requisition.source | form | New |
view_logistic_requisition_source_tree |
logistic.requisition.source.tree | logistic.requisition.source | tree | New |
view_logistic_requisition_tree |
logistic.requisition.tree | logistic.requisition | tree | New |
view_order_form1 |
sale.order.form | sale.order | h1 | Inherits sale_transport_multi_address.view_order_form |
view_order_form2 |
sale.order.form | sale.order | xpath | Inherits sale_sourced_by_line.view_order_form_form |
view_order_form3 |
sale.order.form | sale.order | xpath | Inherits sale_owner_stock_sourcing.view_order_form_inherit |
view_order_form4 |
sale.order.form | sale.order | xpath | Inherits logistic_order.view_order_form |
view_order_line_form2_lr |
sale.order.line.form2.lr | sale.order.line | button | Inherits sale.view_order_line_form2 |
analytic_id
Many2one → account.analytic.account
states=REQ_STATES
args: 'account.analytic.account', 'Project'
cancel_reason_id
Many2one → logistic.requisition.cancel.reason
copy=False
ondelete='restrict'
readonly=True
string='Reason for Cancellation'
args: 'logistic.requisition.cancel.reason'
ce_count
Integer
compute='_count_cost_estimates'
string='CE count'
company_id
Many2one → res.company
default=<expr>
readonly=True
args: 'res.company', 'Company'
consignee_id
Many2one → res.partner
domain=[('is_consignee', '=', True)]
states=REQ_STATES
args: 'res.partner', 'Consignee'
consignee_shipping_id
Many2one → res.partner
states=REQ_STATES
args: 'res.partner', 'Delivery Address'
country_id
Many2one → res.country
select=True
states=REQ_STATES
string='Country'
args: 'res.country'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='pricelist_id.currency_id'
store=True
string='Currency'
date
Datetime
default=fields.Datetime.now
required=True
states=REQ_STATES
args: 'Requisition Date'
date_delivery
Date
required=True
states=REQ_STATES
args: 'Desired Delivery Date'
incoterm_address
Char
help='Incoterm Place of Delivery. International Commercial Terms are a series of predefined commercial terms used in international transactions.'
states=REQ_STATES
args: 'Incoterm Place'
incoterm_id
Many2one → stock.incoterms
help='International Commercial Terms are a series of predefined commercial terms used in international transactions.'
states=REQ_STATES
args: 'stock.incoterms', 'Incoterm'
line_ids
One2many → logistic.requisition.line
copy=True
states={'done': [('readonly', True)]}
string='Products to Purchase'
args: 'logistic.requisition.line', 'requisition_id'
name
Char
copy=False
default='/'
readonly=True
required=True
args: 'Reference'
note
Text
states=REQ_STATES
args: 'Remarks / Description'
partner_id
Many2one → res.partner
domain=[('customer', '=', True)]
required=True
states=REQ_STATES
args: 'res.partner', 'Requestor'
po_count
Integer
compute='_count_purchase_orders'
string='PO count'
pricelist_id
Many2one → product.pricelist
help='Pricelist that represents the currency for current logistics requisition.'
required=True
states=REQ_STATES
args: 'product.pricelist', 'Pricelist'
requisition_type
Selection
default='standard'
required=True
selection=_get_requisition_type_selection
states=REQ_STATES
string='Type'
shipping_note
Text
states=REQ_STATES
args: 'Delivery / Shipping Remarks'
source_document
Char
states=REQ_STATES
args: 'Source Document'
sourced
Float
compute='_get_sourced'
string='Sourced'
state
Selection
copy=False
default='draft'
readonly=True
required=True
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done'), ('cancel', 'Cancelled')]
user_id
Many2one → res.users
default=<expr>
help='Mobilization Officer or Logistics Coordinator in charge of the Logistics Requisition'
required=True
states=REQ_STATES
args: 'res.users', 'Business Unit Officer'
action_open_lr_cost_estimate(self)
action_open_lr_purchases(self)
button_confirm(self)
button_create_cost_estimate(self)
button_reset(self)
button_view_lines(self)
button_view_source_lines(self)
create(self, vals)
get_partner_requisition(self)
get_requisition_type_selection(self)
onchange_consignee_id_set_consignee_shipping_id(self)
onchange_consignee_id_set_country_id(self)
onchange_partner_id(self)
reason_id
Many2one → logistic.requisition.cancel.reason
required=True
string='Reason'
args: 'logistic.requisition.cancel.reason'
confirm_cancel(self)
name
Char
required=True
translate=True
args: 'Reason'
No public methods.
line_ids
Many2many → logistic.requisition.line
readonly=True
string='Sourced Lines'
args: 'logistic.requisition.line', 'requisition_cost_estimate_sourced_line', 'wizard_id', 'line_id'
requisition_id
Many2one → logistic.requisition
readonly=True
required=True
string='Logistics Requisition'
args: 'logistic.requisition'
skipped_line_ids
Many2many → logistic.requisition.line
readonly=True
string='Skipped Lines'
args: 'logistic.requisition.line', 'requisition_cost_estimate_skipped_line', 'wizard_id', 'line_id'
cost_estimate(self)
default_get(self, fields_list)
account_id
Many2one → account.account
comodel_name='account.account'
readonly=True
related='product_id.property_account_income'
string='Nominal Account'
amount_total
Float
compute='_get_total_cost'
digits=dp.get_precision('Account')
store=True
string='Total Amount'
consignee_id
Many2one
co_model='res.partner'
related='requisition_id.consignee_id'
string='Consignee'
consignee_shipping_id
Many2one
co_model='res.partner'
related='requisition_id.consignee_shipping_id'
string='Delivery Address'
cost_estimate_id
Many2one → sale.order
copy=False
readonly=True
string='Cost Estimate'
args: 'sale.order'
country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
related='requisition_id.country_id'
store=True
string='Country'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='requisition_id.currency_id'
store=True
string='Currency'
date_delivery
Date
required=True
states=REQUEST_STATES
args: 'Desired Delivery Date'
description
Text
required=True
states=REQUEST_STATES
args: 'Description'
incoterm_address
Char
help='Incoterm Place of Delivery. International Commercial Terms are a series of predefined commercial terms used in international transactions.'
related='requisition_id.incoterm_address'
string='Incoterm Place'
incoterm_id
Many2one
co_model='stock.incoterms'
help='International Commercial Terms are a series of predefined commercial terms used in international transactions.'
related='requisition_id.incoterm_id'
string='Incoterm'
logistic_user_id
Many2one → res.users
help='User in charge of the Logistics Requisition Line'
states=REQUEST_STATES
track_visibility='never'
args: 'res.users', 'Assigned To'
name
Char
copy=False
default='/'
readonly=True
args: 'Line No.'
note
Text
product_id
Many2one → product.product
states=REQUEST_STATES
args: 'product.product', 'Product'
requested_qty
Float
default=1.0
digits=dp.get_precision('Product UoM')
states=REQUEST_STATES
args: 'Quantity'
requested_uom_id
Many2one → product.uom
required=True
states=REQUEST_STATES
args: 'product.uom', 'Product UoM'
requestor_id
Many2one
co_model='res.partner'
related='requisition_id.partner_id'
string='Requestor'
requisition_id
Many2one → logistic.requisition
ondelete='cascade'
readonly=True
required=True
args: 'logistic.requisition', 'Requisition'
requisition_type
Selection
readonly=True
related='requisition_id.requisition_type'
selection=LogisticsRequisition._get_requisition_type_selection
string='Requisition Type'
shipping_note
Text
related='requisition_id.shipping_note'
string='Delivery / Shipping Remarks'
source_ids
One2many → logistic.requisition.source
states={'sourced': [('readonly', True)], 'quoted': [('readonly', True)]}
string='Source Lines'
args: 'logistic.requisition.source', 'requisition_line_id'
state
Selection
copy=False
default='draft'
help='Draft: Created\nConfirmed: Requisition has been confirmed\nAssigned: Waiting the creation of a quote\nSourced: The line has been sourced from procurement or warehouse\nQuoted: Quotation made for the line\nCancelled: The requisition has been cancelled'
readonly=True
required=True
string='State'
args: STATES
stock_count
Integer
compute='_stock_count'
action_view_stock(self)
button_cancel(self)
button_create_cost_estimate(self)
button_create_po_requisition(self)
button_open_cost_estimate(self)
button_reset(self)
button_sourced(self)
create(self, vals)
name_get(self)
onchange_product_id(self)
write(self, vals)
logistic_user_id
Many2one → res.users
help='Logistics Specialist in charge of the Logistics Requisition Line'
required=True
args: 'res.users', 'Logistics Specialist'
assign(self)
consignee_shipping_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='requisition_line_id.requisition_id.consignee_shipping_id'
string='Delivery Address'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='requisition_line_id.requisition_id.currency_id'
string='Currency'
default_source_address
Many2one → res.partner
comodel_name='res.partner'
compute='_default_source_address'
readonly=True
string='Default source'
dispatch_location_id
Many2one → stock.location
comodel_name='stock.location'
readonly=True
related='dispatch_warehouse_id.lot_stock_id'
store=True
string='Dispatch Location'
dispatch_warehouse_id
Many2one → stock.warehouse
states=SOURCED_STATES
string='Dispatch From'
args: 'stock.warehouse'
location_partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='dispatch_warehouse_id.partner_id'
string='Location Address'
name
Char
copy=False
default='/'
readonly=True
args: 'Source Name'
origin
Char
po_requisition_id
Many2one → purchase.requisition
comodel_name='purchase.requisition'
readonly=True
related='purchase_requisition_line_id.requisition_id'
string='Purchase Requisition'
price_is
Selection
help='When the price is an estimation, the final price may change. I.e. it is not based on a request for quotation.'
required=True
string='Price is'
args: PRICE_IS_SELECTION
proposed_product_id
Many2one → product.product
required=True
states=SOURCED_STATES
string='Proposed Product'
args: 'product.product'
proposed_qty
Float
default=1
digits=dp.get_precision('Product UoM')
states=SOURCED_STATES
args: 'Proposed Qty'
proposed_uom_id
Many2one → product.uom
states=SOURCED_STATES
string='Proposed UoM'
args: 'product.uom'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
compute='_get_purchase_line_id'
readonly=True
string='Purchase Order Line'
purchase_requisition_line_id
Many2one → purchase.requisition.line
copy=False
ondelete='set null'
readonly=True
args: 'purchase.requisition.line', 'Purchase Requisition Line'
requisition_id
Many2one → logistic.requisition
comodel_name='logistic.requisition'
readonly=True
related='requisition_line_id.requisition_id'
store=True
string='Logistics Requisition'
requisition_line_id
Many2one → logistic.requisition.line
ondelete='cascade'
readonly=True
required=True
string='Requisition Line'
args: 'logistic.requisition.line'
selectable_bid_line_ids
Many2many → purchase.requisition.line
comodel_name='purchase.requisition.line'
compute='_get_selectable_bid_line_ids'
selectable_purchase_req_ids
Many2many → purchase.order
comodel_name='purchase.order'
compute='_get_selectable_purchase_req_ids'
selected_bid_id
Many2one → purchase.order
comodel_name='purchase.order'
readonly=True
related='selected_bid_line_id.order_id'
string='Selected Bid'
selected_bid_line_id
Many2one → purchase.order.line
copy=False
ondelete='restrict'
readonly=True
args: 'purchase.order.line', 'Bid Selected Line'
sourcing_method
Selection
default='other'
oldname='procurement_method'
required=True
states=SOURCED_STATES
string='Sourcing Method'
args: [('procurement', 'Go to Tender'), ('reuse_bid', 'Use Existing Bid'), ('wh_dispatch', 'Warehouse Dispatch'), ('fw_agreement', 'Framework Agreement'), ('other', 'Other')]
state
Selection
readonly=True
related='requisition_line_id.state'
selection=LogisticsRequisitionLine.STATES
string="Line's State"
stock_owner_id
Many2one → res.partner
comodel_name='res.partner'
string='Stock owner'
supplier_partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='selected_bid_line_id.order_id.partner_id'
string='Supplier Address'
total_cost
Float
compute='_get_total_cost'
digits=dp.get_precision('Account')
store=True
string='Total Cost'
unit_cost
Float
digits=dp.get_precision('Account')
states=SOURCED_STATES
args: 'Unit Cost'
action_create_po_requisition(self)
action_open_po_requisition(self)
create(self, vals)
onchange_dispatch_warehouse_id(self)
onchange_po_requisition_id(self)
onchange_selected_bid_id(self)
onchange_selected_bid_line_id(self)
onchange_sourcing_method(self)
open_po_requisition(self, purch_req=None)
No new fields.
Public methods (1)action_po_assign(self)
logistic_order_count
Integer
compute='_count_logistic_order'
transport_mode_id
Many2one → transport.mode
transport_vehicle_id
Many2one → transport.vehicle
action_open_logistic_orders(self)
from_bid_line_id
Many2one → purchase.order.line
readonly=True
args: 'purchase.order.line', 'Generated from bid'
lo_line_ids
One2many → sale.order.line
comodel_name='sale.order.line'
inverse_name='sourced_by'
lr_source_line_id
Many2one → logistic.requisition.source
ondelete='restrict'
readonly=True
args: 'logistic.requisition.source', 'Logistics Requisition Source'
po_line_from_bid_ids
One2many → purchase.order.line
readonly=True
args: 'purchase.order.line', 'from_bid_line_id', 'Lines generated by the bid'
copy_data(self, cr, uid, res_id, default=None, context=None)
unlink(self)
write(self, vals)
transport_mode_id
Many2one → transport.mode
transport_vehicle_id
Many2one → transport.vehicle
tender_closed(self)
logistic_requisition_source_ids
One2many → logistic.requisition.source
readonly=True
string='Logistics Requisition Source Lines'
args: 'logistic.requisition.source', 'purchase_requisition_line_id'
No public methods.
No new fields.
Public methods (0)No public methods.
lr_count
Integer
compute='_count_logistic_requisition'
lr_purchase_count
Integer
compute='_count_lr_purchase'
lr_source_count
Integer
compute='_count_lr_source'
requisition_id
Many2one → logistic.requisition
copy=False
ondelete='restrict'
args: 'logistic.requisition', 'Logistics Requisition'
action_accepted(self)
action_open_logistic_requisition(self)
action_open_lr_purchases(self)
action_open_lr_sources(self)
lr_source_id
Many2one → logistic.requisition.source
readonly=True
args: 'logistic.requisition.source', 'Logistics Requisition Source'
price_is
Selection
default='fixed'
help='When the price is an estimation, the final price may change. I.e. it is not based on a request for quotation.'
string='Price is'
args: LogisticsRequisitionSource.PRICE_IS_SELECTION
sourced_by
Many2one
domain="[('product_id', '=', product_id), ('order_id.state', 'in', ['draftpo', 'confirmed'])]"
sourcing_method
Selection
related='lr_source_id.sourcing_method'
selection=[('procurement', 'Go to Tender'), ('reuse_bid', 'Use Existing Bid'), ('wh_dispatch', 'Warehouse Dispatch'), ('fw_agreement', 'Framework Agreement'), ('other', 'Other')]
product_id_change_with_wh(self, cr, uid, ids, pricelist, product, qty=0, uom=False, qty_uos=0, uos=False, name='', partner_id=False, lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, warehouse_id=False, context=None)
po_line_id
Many2one
domain="[('product_id', '=', product_id), ('order_id.state', 'in', ['draftpo', 'confirmed'])]"
No public methods.
No new fields.
Public methods (2)name_get(self, cr, user, ids, context=None)
name_search(self, name, args=None, operator='ilike', limit=100)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/vertical-ngo |
| GIT | |
| GIT | https://github.com/OCA/vertical-ngo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/vertical-ngo/tree/8.0/logistic_requisition |
| VERSION | |
| VERSION | 1.4.1 |
| CATEGORY | |
| CATEGORY | Purchase Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Yannick Vaucher, Guewen Baconnier, Alexandre Fayolle, Joël Grand-Guillaume, Leonardo Pistone, Stéphane Bidoul (ACSONE), Nicolas Bessi (nbessi), Sandy, OCA-git-bot, Quentin Theuret |
| WEBSITE | |
| WEBSITE | http://www.camptocamp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:28 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/purchase-workflow: - purchase_requisition_bid_selection - purchase_rfq_bid_workflow - purchase_requisition_multicurrency - framework_agreement - purchase_requisition_delivery_address - purchase_requisition_auto_rfq - purchase_requisition_transport_document - purchase_transport_document - purchase_origin_address - purchase_delivery_address OCA/sale-workflow: - sale_sourced_by_line - sale_procurement_group_by_line - sale_owner_stock_sourcing - sale_validity - sale_quotation_sourcing - sale_exceptions OCA/server-tools: - web_context_tunnel OCA/stock-logistics-transport: - sale_transport_multi_address - stock_transport_multi_address - purchase_requisition_transport_multi_address - purchase_transport_multi_address - transport_information OCA/stock-logistics-workflow: - stock_ownership_availability_rules OCA/vertical-ngo: - logistic_order - logistic_consignee - ngo_purchase - framework_agreement_requisition - ngo_purchase_requisition odoo/odoo: - sale_stock - sale - sales_team - base - base_setup - web_kanban - web - web_kanban_sparkline - account_voucher - account - product - decimal_precision - report - analytic - board - edi - email_template - procurement - stock_account - stock - web_kanban_gauge - stock_dropshipping - purchase - purchase_requisition - delivery |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase_order_form |
purchase_order_form | purchase.order | div | Inherits ngo_purchase.purchase_order_form |
quant_search_view |
stock.quant.search | stock.quant | filter | Inherits stock.quant_search_view |
report_logistic_requisition |
report_logistic_requisition | ir.ui.view | qweb | New |
report_logistic_requisition_document |
report_logistic_requisition_document | ir.ui.view | qweb | New |
view_logistic_requisition_cancel |
Reason for the cancellation | logistic.requisition.cancel | form | New |
view_logistic_requisition_cancel_reason_form |
Logistics Requisition Cancel Reason | logistic.requisition.cancel.reason | form | New |
view_logistic_requisition_cancel_reason_tree |
Logistics Requisition Cancel Reason | logistic.requisition.cancel.reason | tree | New |
view_logistic_requisition_cost_estimate |
Logistics Requisition Cost Estimate | logistic.requisition.cost.estimate | form | New |
view_logistic_requisition_filter |
logistic.requisition.list.select | logistic.requisition | search | New |
view_logistic_requisition_form |
logistic.requisition.form | logistic.requisition | form | New |
view_logistic_requisition_line_assign_wizard |
Assign Requisition Line | logistic.requisition.line.assign | form | New |
view_logistic_requisition_line_calendar |
logistic.requisition.line.tree | logistic.requisition.line | calendar | New |
view_logistic_requisition_line_filter |
logistic.requisition.line.list.select | logistic.requisition.line | search | New |
view_logistic_requisition_line_form |
logistic.requisition.line.form | logistic.requisition.line | form | New |
view_logistic_requisition_line_kanban |
logistic.requisition.line.kanban | logistic.requisition.line | kanban | New |
view_logistic_requisition_line_tree |
logistic.requisition.line.tree | logistic.requisition.line | tree | New |
view_logistic_requisition_source_filter |
logistic.requisition.source.list.select | logistic.requisition.source | search | New |
view_logistic_requisition_source_form |
logistic.requisition.source.form | logistic.requisition.source | form | New |
view_logistic_requisition_source_tree |
logistic.requisition.source.tree | logistic.requisition.source | tree | New |
view_logistic_requisition_tree |
logistic.requisition.tree | logistic.requisition | tree | New |
view_order_form1 |
sale.order.form | sale.order | h1 | Inherits sale_transport_multi_address.view_order_form |
view_order_form2 |
sale.order.form | sale.order | xpath | Inherits sale_sourced_by_line.view_order_form_form |
view_order_form3 |
sale.order.form | sale.order | xpath | Inherits sale_owner_stock_sourcing.view_order_form_inherit |
view_order_form4 |
sale.order.form | sale.order | xpath | Inherits logistic_order.view_order_form |
view_order_line_form2_lr |
sale.order.line.form2.lr | sale.order.line | button | Inherits sale.view_order_line_form2 |
analytic_id
Many2one → account.analytic.account
states=REQ_STATES
args: 'account.analytic.account', 'Project'
cancel_reason_id
Many2one → logistic.requisition.cancel.reason
copy=False
ondelete='restrict'
readonly=True
string='Reason for Cancellation'
args: 'logistic.requisition.cancel.reason'
ce_count
Integer
compute='_count_cost_estimates'
string='CE count'
company_id
Many2one → res.company
default=<expr>
readonly=True
args: 'res.company', 'Company'
consignee_id
Many2one → res.partner
domain=[('is_consignee', '=', True)]
states=REQ_STATES
args: 'res.partner', 'Consignee'
consignee_shipping_id
Many2one → res.partner
states=REQ_STATES
args: 'res.partner', 'Delivery Address'
country_id
Many2one → res.country
select=True
states=REQ_STATES
string='Country'
args: 'res.country'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='pricelist_id.currency_id'
store=True
string='Currency'
date
Datetime
default=fields.Datetime.now
required=True
states=REQ_STATES
args: 'Requisition Date'
date_delivery
Date
required=True
states=REQ_STATES
args: 'Desired Delivery Date'
incoterm_address
Char
help='Incoterm Place of Delivery. International Commercial Terms are a series of predefined commercial terms used in international transactions.'
states=REQ_STATES
args: 'Incoterm Place'
incoterm_id
Many2one → stock.incoterms
help='International Commercial Terms are a series of predefined commercial terms used in international transactions.'
states=REQ_STATES
args: 'stock.incoterms', 'Incoterm'
line_ids
One2many → logistic.requisition.line
copy=True
states={'done': [('readonly', True)]}
string='Products to Purchase'
args: 'logistic.requisition.line', 'requisition_id'
name
Char
copy=False
default='/'
readonly=True
required=True
args: 'Reference'
note
Text
states=REQ_STATES
args: 'Remarks / Description'
partner_id
Many2one → res.partner
domain=[('customer', '=', True)]
required=True
states=REQ_STATES
args: 'res.partner', 'Requestor'
po_count
Integer
compute='_count_purchase_orders'
string='PO count'
pricelist_id
Many2one → product.pricelist
help='Pricelist that represents the currency for current logistics requisition.'
required=True
states=REQ_STATES
args: 'product.pricelist', 'Pricelist'
requisition_type
Selection
default='standard'
required=True
selection=_get_requisition_type_selection
states=REQ_STATES
string='Type'
shipping_note
Text
states=REQ_STATES
args: 'Delivery / Shipping Remarks'
source_document
Char
states=REQ_STATES
args: 'Source Document'
sourced
Float
compute='_get_sourced'
string='Sourced'
state
Selection
copy=False
default='draft'
readonly=True
required=True
string='State'
args: [('draft', 'Draft'), ('confirmed', 'Confirmed'), ('done', 'Done'), ('cancel', 'Cancelled')]
user_id
Many2one → res.users
default=<expr>
help='Mobilization Officer or Logistics Coordinator in charge of the Logistics Requisition'
required=True
states=REQ_STATES
args: 'res.users', 'Business Unit Officer'
action_open_lr_cost_estimate(self)
action_open_lr_purchases(self)
button_confirm(self)
button_create_cost_estimate(self)
button_reset(self)
button_view_lines(self)
button_view_source_lines(self)
create(self, vals)
get_partner_requisition(self)
get_requisition_type_selection(self)
onchange_consignee_id_set_consignee_shipping_id(self)
onchange_consignee_id_set_country_id(self)
onchange_partner_id(self)
reason_id
Many2one → logistic.requisition.cancel.reason
required=True
string='Reason'
args: 'logistic.requisition.cancel.reason'
confirm_cancel(self)
name
Char
required=True
translate=True
args: 'Reason'
No public methods.
line_ids
Many2many → logistic.requisition.line
readonly=True
string='Sourced Lines'
args: 'logistic.requisition.line', 'requisition_cost_estimate_sourced_line', 'wizard_id', 'line_id'
requisition_id
Many2one → logistic.requisition
readonly=True
required=True
string='Logistics Requisition'
args: 'logistic.requisition'
skipped_line_ids
Many2many → logistic.requisition.line
readonly=True
string='Skipped Lines'
args: 'logistic.requisition.line', 'requisition_cost_estimate_skipped_line', 'wizard_id', 'line_id'
cost_estimate(self)
default_get(self, fields_list)
account_id
Many2one → account.account
comodel_name='account.account'
readonly=True
related='product_id.property_account_income'
string='Nominal Account'
amount_total
Float
compute='_get_total_cost'
digits=dp.get_precision('Account')
store=True
string='Total Amount'
consignee_id
Many2one
co_model='res.partner'
related='requisition_id.consignee_id'
string='Consignee'
consignee_shipping_id
Many2one
co_model='res.partner'
related='requisition_id.consignee_shipping_id'
string='Delivery Address'
cost_estimate_id
Many2one → sale.order
copy=False
readonly=True
string='Cost Estimate'
args: 'sale.order'
country_id
Many2one → res.country
comodel_name='res.country'
readonly=True
related='requisition_id.country_id'
store=True
string='Country'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='requisition_id.currency_id'
store=True
string='Currency'
date_delivery
Date
required=True
states=REQUEST_STATES
args: 'Desired Delivery Date'
description
Text
required=True
states=REQUEST_STATES
args: 'Description'
incoterm_address
Char
help='Incoterm Place of Delivery. International Commercial Terms are a series of predefined commercial terms used in international transactions.'
related='requisition_id.incoterm_address'
string='Incoterm Place'
incoterm_id
Many2one
co_model='stock.incoterms'
help='International Commercial Terms are a series of predefined commercial terms used in international transactions.'
related='requisition_id.incoterm_id'
string='Incoterm'
logistic_user_id
Many2one → res.users
help='User in charge of the Logistics Requisition Line'
states=REQUEST_STATES
track_visibility='never'
args: 'res.users', 'Assigned To'
name
Char
copy=False
default='/'
readonly=True
args: 'Line No.'
note
Text
product_id
Many2one → product.product
states=REQUEST_STATES
args: 'product.product', 'Product'
requested_qty
Float
default=1.0
digits=dp.get_precision('Product UoM')
states=REQUEST_STATES
args: 'Quantity'
requested_uom_id
Many2one → product.uom
required=True
states=REQUEST_STATES
args: 'product.uom', 'Product UoM'
requestor_id
Many2one
co_model='res.partner'
related='requisition_id.partner_id'
string='Requestor'
requisition_id
Many2one → logistic.requisition
ondelete='cascade'
readonly=True
required=True
args: 'logistic.requisition', 'Requisition'
requisition_type
Selection
readonly=True
related='requisition_id.requisition_type'
selection=LogisticsRequisition._get_requisition_type_selection
string='Requisition Type'
shipping_note
Text
related='requisition_id.shipping_note'
string='Delivery / Shipping Remarks'
source_ids
One2many → logistic.requisition.source
states={'sourced': [('readonly', True)], 'quoted': [('readonly', True)]}
string='Source Lines'
args: 'logistic.requisition.source', 'requisition_line_id'
state
Selection
copy=False
default='draft'
help='Draft: Created\nConfirmed: Requisition has been confirmed\nAssigned: Waiting the creation of a quote\nSourced: The line has been sourced from procurement or warehouse\nQuoted: Quotation made for the line\nCancelled: The requisition has been cancelled'
readonly=True
required=True
string='State'
args: STATES
stock_count
Integer
compute='_stock_count'
action_view_stock(self)
button_cancel(self)
button_create_cost_estimate(self)
button_create_po_requisition(self)
button_open_cost_estimate(self)
button_reset(self)
button_sourced(self)
create(self, vals)
name_get(self)
onchange_product_id(self)
write(self, vals)
logistic_user_id
Many2one → res.users
help='Logistics Specialist in charge of the Logistics Requisition Line'
required=True
args: 'res.users', 'Logistics Specialist'
assign(self)
consignee_shipping_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='requisition_line_id.requisition_id.consignee_shipping_id'
string='Delivery Address'
currency_id
Many2one → res.currency
comodel_name='res.currency'
readonly=True
related='requisition_line_id.requisition_id.currency_id'
string='Currency'
default_source_address
Many2one → res.partner
comodel_name='res.partner'
compute='_default_source_address'
readonly=True
string='Default source'
dispatch_location_id
Many2one → stock.location
comodel_name='stock.location'
readonly=True
related='dispatch_warehouse_id.lot_stock_id'
store=True
string='Dispatch Location'
dispatch_warehouse_id
Many2one → stock.warehouse
states=SOURCED_STATES
string='Dispatch From'
args: 'stock.warehouse'
location_partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='dispatch_warehouse_id.partner_id'
string='Location Address'
name
Char
copy=False
default='/'
readonly=True
args: 'Source Name'
origin
Char
po_requisition_id
Many2one → purchase.requisition
comodel_name='purchase.requisition'
readonly=True
related='purchase_requisition_line_id.requisition_id'
string='Purchase Requisition'
price_is
Selection
help='When the price is an estimation, the final price may change. I.e. it is not based on a request for quotation.'
required=True
string='Price is'
args: PRICE_IS_SELECTION
proposed_product_id
Many2one → product.product
required=True
states=SOURCED_STATES
string='Proposed Product'
args: 'product.product'
proposed_qty
Float
default=1
digits=dp.get_precision('Product UoM')
states=SOURCED_STATES
args: 'Proposed Qty'
proposed_uom_id
Many2one → product.uom
states=SOURCED_STATES
string='Proposed UoM'
args: 'product.uom'
purchase_line_id
Many2one → purchase.order.line
comodel_name='purchase.order.line'
compute='_get_purchase_line_id'
readonly=True
string='Purchase Order Line'
purchase_requisition_line_id
Many2one → purchase.requisition.line
copy=False
ondelete='set null'
readonly=True
args: 'purchase.requisition.line', 'Purchase Requisition Line'
requisition_id
Many2one → logistic.requisition
comodel_name='logistic.requisition'
readonly=True
related='requisition_line_id.requisition_id'
store=True
string='Logistics Requisition'
requisition_line_id
Many2one → logistic.requisition.line
ondelete='cascade'
readonly=True
required=True
string='Requisition Line'
args: 'logistic.requisition.line'
selectable_bid_line_ids
Many2many → purchase.requisition.line
comodel_name='purchase.requisition.line'
compute='_get_selectable_bid_line_ids'
selectable_purchase_req_ids
Many2many → purchase.order
comodel_name='purchase.order'
compute='_get_selectable_purchase_req_ids'
selected_bid_id
Many2one → purchase.order
comodel_name='purchase.order'
readonly=True
related='selected_bid_line_id.order_id'
string='Selected Bid'
selected_bid_line_id
Many2one → purchase.order.line
copy=False
ondelete='restrict'
readonly=True
args: 'purchase.order.line', 'Bid Selected Line'
sourcing_method
Selection
default='other'
oldname='procurement_method'
required=True
states=SOURCED_STATES
string='Sourcing Method'
args: [('procurement', 'Go to Tender'), ('reuse_bid', 'Use Existing Bid'), ('wh_dispatch', 'Warehouse Dispatch'), ('fw_agreement', 'Framework Agreement'), ('other', 'Other')]
state
Selection
readonly=True
related='requisition_line_id.state'
selection=LogisticsRequisitionLine.STATES
string="Line's State"
stock_owner_id
Many2one → res.partner
comodel_name='res.partner'
string='Stock owner'
supplier_partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='selected_bid_line_id.order_id.partner_id'
string='Supplier Address'
total_cost
Float
compute='_get_total_cost'
digits=dp.get_precision('Account')
store=True
string='Total Cost'
unit_cost
Float
digits=dp.get_precision('Account')
states=SOURCED_STATES
args: 'Unit Cost'
action_create_po_requisition(self)
action_open_po_requisition(self)
create(self, vals)
onchange_dispatch_warehouse_id(self)
onchange_po_requisition_id(self)
onchange_selected_bid_id(self)
onchange_selected_bid_line_id(self)
onchange_sourcing_method(self)
open_po_requisition(self, purch_req=None)
No new fields.
Public methods (1)action_po_assign(self)
logistic_order_count
Integer
compute='_count_logistic_order'
transport_mode_id
Many2one → transport.mode
transport_vehicle_id
Many2one → transport.vehicle
action_open_logistic_orders(self)
from_bid_line_id
Many2one → purchase.order.line
readonly=True
args: 'purchase.order.line', 'Generated from bid'
lo_line_ids
One2many → sale.order.line
comodel_name='sale.order.line'
inverse_name='sourced_by'
lr_source_line_id
Many2one → logistic.requisition.source
ondelete='restrict'
readonly=True
args: 'logistic.requisition.source', 'Logistics Requisition Source'
po_line_from_bid_ids
One2many → purchase.order.line
readonly=True
args: 'purchase.order.line', 'from_bid_line_id', 'Lines generated by the bid'
copy_data(self, cr, uid, res_id, default=None, context=None)
unlink(self)
write(self, vals)
transport_mode_id
Many2one → transport.mode
transport_vehicle_id
Many2one → transport.vehicle
tender_closed(self)
logistic_requisition_source_ids
One2many → logistic.requisition.source
readonly=True
string='Logistics Requisition Source Lines'
args: 'logistic.requisition.source', 'purchase_requisition_line_id'
No public methods.
No new fields.
Public methods (0)No public methods.
lr_count
Integer
compute='_count_logistic_requisition'
lr_purchase_count
Integer
compute='_count_lr_purchase'
lr_source_count
Integer
compute='_count_lr_source'
requisition_id
Many2one → logistic.requisition
copy=False
ondelete='restrict'
args: 'logistic.requisition', 'Logistics Requisition'
action_accepted(self)
action_open_logistic_requisition(self)
action_open_lr_purchases(self)
action_open_lr_sources(self)
lr_source_id
Many2one → logistic.requisition.source
readonly=True
args: 'logistic.requisition.source', 'Logistics Requisition Source'
price_is
Selection
default='fixed'
help='When the price is an estimation, the final price may change. I.e. it is not based on a request for quotation.'
string='Price is'
args: LogisticsRequisitionSource.PRICE_IS_SELECTION
sourced_by
Many2one
domain="[('product_id', '=', product_id), ('order_id.state', 'in', ['draftpo', 'confirmed'])]"
sourcing_method
Selection
related='lr_source_id.sourcing_method'
selection=[('procurement', 'Go to Tender'), ('reuse_bid', 'Use Existing Bid'), ('wh_dispatch', 'Warehouse Dispatch'), ('fw_agreement', 'Framework Agreement'), ('other', 'Other')]
product_id_change_with_wh(self, cr, uid, ids, pricelist, product, qty=0, uom=False, qty_uos=0, uos=False, name='', partner_id=False, lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False, warehouse_id=False, context=None)
po_line_id
Many2one
domain="[('product_id', '=', product_id), ('order_id.state', 'in', ['draftpo', 'confirmed'])]"
No public methods.
No new fields.
Public methods (2)name_get(self, cr, user, ids, context=None)
name_search(self, name, args=None, operator='ilike', limit=100)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/vertical-ngo |
| GIT | |
| GIT | https://github.com/OCA/vertical-ngo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/vertical-ngo/tree/7.0/logistic_requisition |
| VERSION | |
| VERSION | 0.2 |
| CATEGORY | |
| CATEGORY | Purchase Management |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | Yannick Vaucher, Romain Deheele, Guewen Baconnier, Alexandre Fayolle, Matthieu Dietrich, Joel Grand-Guillaume, Nicolas Bessi, Jacques-Etienne Baudoux |
| WEBSITE | |
| WEBSITE | http://www.camptocamp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:07:17 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/purchase-workflow: - purchase_group_hooks OCA/sale-reporting: - sale_order_webkit OCA/sale-workflow: - sale_validity - sale_sourced_by_line - sale_dropshipping OCA/stock-logistics-warehouse: - stock_location_ownership OCA/vertical-ngo: - transport_plan - logistic_order OCA/webkit-tools: - base_headers_webkit odoo/odoo: - sale - account_voucher - account - base_setup - base - web_kanban - web - product - process - decimal_precision - analytic - board - edi - email_template - purchase - stock - procurement - sale_stock - delivery - report_webkit |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module allows you to manage your Logistic Requisitions.
============================================================
A Logistic requisition express a need that is requested somewhere. It allows to
manage the sourcing of the needs before making a cost estimate to the requestor.
This invert the logic that is in standard in OpenERP in the way that the sourcing
of the procuremnt is made before the order confirmation and we built the link incase
of validation. In standard, th SO confirmation generate the procurement then it
generate the needed procurement.
The sourcing can be of various type:
* Warehouse dispatch: You will deliver the requested goods from one of your
stock location
* Procurement : You will go for tender to chose the best supplier for the
requiredgoods
* Framework agreement : You will use the existing Framework agreement
* Other : Nothing of those choices. In that case, the line can be selected
and included in either a PO or a tender
The simple process is the following:
* LR are recorded as the to represent the need of the customer/requestor
* LR are confirm and sourced of different way (dispatch, tender, ..)
* If sourced from tender, you need to go all along the tendering process (CBA).
Once you chose one bid, the system will automatically put back the prices
information on the sourcing line of the LR.
* You can create a cost estimate from sourced LR lines for your
resquestor/customer
* If the requestor accept the cost estimate, his validation will automatically:
* Create the link between the chosen winning bid and the line sourced this way.
A new draft PO will be generatedand managed as drop shipping.
* Lines sourced as a dispatch will create a delivery order.
* Lines sourced a LTA will create a PO of type LTA
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
purchase.board_purchase_form |
board.purchase.form | board.board | form | New |
view_create_requisition_from_source |
Create Purchase Requisition From Requisition Source | logistic.requisition.source.create.requisition | form | New |
view_logistic_requisition_cancel |
Reason for the cancellation | logistic.requisition.cancel | form | New |
view_logistic_requisition_cancel_reason_form |
Logistic Requisition Cancel Reason | logistic.requisition.cancel.reason | form | New |
view_logistic_requisition_cancel_reason_tree |
Logistic Requisition Cancel Reason | logistic.requisition.cancel.reason | tree | New |
view_logistic_requisition_cost_estimate |
Logistic Requisition Cost Estimate | logistic.requisition.cost.estimate | form | New |
view_logistic_requisition_filter |
logistic.requisition.list.select | logistic.requisition | search | New |
view_logistic_requisition_form |
logistic.requisition.form | logistic.requisition | form | New |
view_logistic_requisition_line_assign_wizard |
Assign Requisition Line | logistic.requisition.line.assign | form | New |
view_logistic_requisition_line_calendar |
logistic.requisition.line.tree | logistic.requisition.line | calendar | New |
view_logistic_requisition_line_filter |
logistic.requisition.line.list.select | logistic.requisition.line | search | New |
view_logistic_requisition_line_form |
logistic.requisition.line.form | logistic.requisition.line | form | New |
view_logistic_requisition_line_kanban |
logistic.requisition.line.kanban | logistic.requisition.line | kanban | New |
view_logistic_requisition_line_tree |
logistic.requisition.line.tree | logistic.requisition.line | tree | New |
view_logistic_requisition_source_filter |
logistic.requisition.source.list.select | logistic.requisition.source | search | New |
view_logistic_requisition_source_form |
logistic.requisition.source.form | logistic.requisition.source | form | New |
view_logistic_requisition_source_transport_wizard |
Transport plan for Requisition Source | logistic.requisition.source.transport.plan | form | New |
view_logistic_requisition_source_tree |
logistic.requisition.source.tree | logistic.requisition.source | tree | New |
view_logistic_requisition_tree |
logistic.requisition.tree | logistic.requisition | tree | New |
view_order_form |
sale.order.form | sale.order | xpath | Inherits sale.view_order_form |
view_order_form_prebook |
account code in sale order line | sale.order | xpath | Inherits sale_validity.view_order_form_validity |
view_order_line_form2_lr |
sale.order.line.form2.lr | sale.order.line | button | Inherits sale.view_order_line_form2 |
view_purchase_requisition_form |
purchase.requisition.form.inherit | purchase.requisition | xpath | Inherits purchase_requisition_extended.view_purchase_requisition_form |
view_transport_plan_form |
transport.plan.form | transport.plan | xpath | Inherits transport_plan.view_transport_plan_form |
No new fields.
Public methods (11)button_confirm(self, cr, uid, ids, context=None)
button_create_cost_estimate(self, cr, uid, ids, context=None)
button_reset(self, cr, uid, ids, context=None)
button_view_lines(self, cr, uid, ids, context=None)
button_view_source_lines(self, cr, uid, ids, context=None)
copy(self, cr, uid, id, default=None, context=None)
create(self, cr, uid, vals, context=None)
get_partner_requisition(self, cr, uid, ids, context=None)
onchange_consignee_id(self, cr, uid, ids, consignee_id, context=None)
onchange_partner_id(self, cr, uid, ids, part, context=None)
onchange_validate(self, cr, uid, ids, validate_id, date_validate, date_field_name, context=None)
No new fields.
Public methods (1)confirm_cancel(self, cr, uid, ids, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (2)cost_estimate(self, cr, uid, ids, context=None)
default_get(self, cr, uid, fields_list, context=None)
No new fields.
Public methods (12)button_cancel(self, cr, uid, ids, context=None)
button_create_cost_estimate(self, cr, uid, ids, context=None)
button_open_cost_estimate(self, cr, uid, ids, context=None)
button_reset(self, cr, uid, ids, context=None)
button_sourced(self, cr, uid, ids, context=None)
copy_data(self, cr, uid, id, default=None, context=None)
create(self, cr, uid, vals, context=None)
name_get(self, cr, user, ids, context=None)
onchange_product_id(self, cr, uid, ids, product_id, requested_uom_id, context=None)
view_price_by_location(self, cr, uid, ids, context=None)
view_stock_by_location(self, cr, uid, ids, context=None)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (1)assign(self, cr, uid, ids, context=None)
No new fields.
Public methods (7)action_create_po_requisition(self, cr, uid, ids, pricelist=None, context=None)
action_open_po_requisition(self, cr, uid, ids, context=None)
copy_data(self, cr, uid, id, default=None, context=None)
create(self, cr, uid, vals, context=None)
onchange_dispatch_location_id(self, cr, uid, ids, dispatch_location_id, context=None)
onchange_selected_bid_id(self, cr, uid, ids, selected_bid_id, context=None)
onchange_transport_plan_id(self, cr, uid, ids, transport_plan_id, context=None)
No new fields.
Public methods (2)create_po_requisition(self, cr, uid, ids, context=None)
default_get(self, cr, uid, fields_list, context=None)
No new fields.
Public methods (1)create_and_affect(self, cr, uid, ids, context=None)
No new fields.
Public methods (1)action_po_assign(self, cr, uid, ids, context=None)
No new fields.
Public methods (2)action_picking_create(self, cr, uid, ids, context=None)
validate_service_product_procurement(self, cr, uid, ids, context=None)
No new fields.
Public methods (2)unlink(self, cr, uid, ids, context=None)
write(self, cr, uid, ids, vals, context=None)
No new fields.
Public methods (1)close_callforbids_ok(self, cr, uid, ids, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)copy(self, cr, uid, id, default=None, context=None)
No new fields.
Public methods (2)button_confirm(self, cr, uid, ids, context=None)
copy_data(self, cr, uid, id, default=None, context=None)
No new fields.
Public methods (1)name_get(self, cr, user, ids, context=None)
No new fields.
Public methods (0)No public methods.