| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-request |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-request.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-request/tree/19.0/stock_request |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow |
| COMMITTERS | |
| COMMITTERS | Kiril Vangelovski, Weblate, OCA-git-bot, oca-ci, LauraCForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-request |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:40:49 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - base_setup - web - bus - web_tour - html_editor - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module was written to allow users to request products that are frequently stocked by the company, to be transferred to their chosen location. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock_request | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_request_order_form |
stock.request.order.form | stock.request.order | form | New |
stock_request_order_search |
stock.request.order.search | stock.request.order | search | New |
stock_request_order_tree |
stock.request.order.tree | stock.request.order | list | New |
stock_request_search |
stock.request.search | stock.request | search | New |
view_move_form |
stock.move.form | stock.move | field | Inherits stock.view_move_form |
view_picking_form |
stock.picking.form | stock.picking | div | Inherits stock.view_picking_form |
view_stock_request_allocation_form |
stock.request.allocation.form | stock.request.allocation | form | New |
view_stock_request_allocation_tree |
stock.request.allocation.tree | stock.request.allocation | list | New |
view_stock_request_form |
stock.request.form | stock.request | form | New |
view_stock_request_tree |
stock.request.tree | stock.request | list | New |
stock_request_allow_virtual_loc
Boolean
string='Allow Virtual locations on Stock Requests'
stock_request_check_available_first
Boolean
string='Check available stock first'
No public methods.
group_stock_request_order
Boolean
implied_group='stock_request.group_stock_request_order'
module_stock_request_analytic
Boolean
string='Stock Requests Analytic integration'
module_stock_request_kanban
Boolean
string='Stock Requests Kanban integration'
module_stock_request_mrp
Boolean
string='Stock Request for Manufacturing'
module_stock_request_purchase
Boolean
string='Stock Requests for Purchases'
module_stock_request_submit
Boolean
string='Submitted state in Stock Requests'
stock_request_allow_virtual_loc
Boolean
readonly=False
related='company_id.stock_request_allow_virtual_loc'
stock_request_check_available_first
Boolean
readonly=False
related='company_id.stock_request_check_available_first'
No public methods.
No new fields.
Public methods (0)No public methods.
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_move_id'
string='Stock Request Allocation'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
copy_data(self, default=None)
No new fields.
Public methods (0)No public methods.
stock_request_count
Integer
compute='_compute_stock_request_ids'
args: 'Stock Request #'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
action_view_stock_request(self)
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_request_id'
string='Stock Request Allocation'
company_id
Many2one
expected_date
Datetime
help='Date when you expect to receive the goods.'
index=True
required=True
location_id
Many2one
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
order_id
Many2one → stock.request.order
readonly=True
args: 'stock.request.order'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
required=True
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
product_id
Many2one
product_uom_id
Many2one
product_uom_qty
Float
qty_cancelled
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity cancelled'
readonly=True
store=True
qty_done
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity completed'
readonly=True
store=True
qty_in_progress
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity in progress.'
readonly=True
store=True
reference_ids
Many2many
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('open', 'In progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
string='Status'
tracking=True
warehouse_id
Many2one
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_transfer(self)
check_cancel(self)
check_done(self)
check_order_company(self)
check_order_expected_date(self)
check_order_location(self)
check_order_picking_policy(self)
check_order_reference_ids(self)
check_order_requested_by(self)
check_order_warehouse_id(self)
create(self, vals_list)
unlink(self)
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
allowed_uom_ids
Many2many → uom.uom
comodel_name='uom.uom'
compute='_compute_allowed_uom_ids'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
required=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits='Product Unit of Measure'
help='Quantity in the default UoM of the product'
store=True
args: 'Real Quantity'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
default=<expr>
domain="[('id', 'in', allowed_uom_ids)]"
required=True
string='Product Unit of Measure'
product_uom_qty
Float
digits='Product Unit of Measure'
help='Quantity, specified in the unit of measure indicated in the request.'
required=True
args: 'Quantity'
reference_ids
Many2many → stock.reference
help='Moves created through this stock request will be grouped using these references. If none are given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'stock.reference', 'References'
route_id
Many2one → stock.route
domain="[('id', 'in', route_ids)]"
ondelete='restrict'
string='Route'
args: 'stock.route'
route_ids
Many2many → stock.route
compute='_compute_route_ids'
readonly=True
string='Routes'
args: 'stock.route'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
required=True
string='Warehouse'
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_location_id(self)
onchange_product_id(self)
onchange_warehouse_id(self)
allocated_product_qty
Float
copy=False
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Allocated Quantity'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='stock_request_id.company_id'
store=True
string='Company'
open_product_qty
Float
compute='_compute_open_product_qty'
args: 'Open Quantity'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='stock_request_id.product_id'
string='Product'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
readonly=True
related='stock_request_id.product_uom_id'
string='UoM'
requested_product_qty
Float
compute='_compute_requested_product_qty'
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Requested Quantity'
requested_product_uom_qty
Float
help='Quantity of the stock request allocated to the stock move, in the UoM of the Stock Request'
args: 'Requested Quantity (UoM)'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
ondelete='cascade'
required=True
string='Stock Move'
stock_request_id
Many2one → stock.request
comodel_name='stock.request'
ondelete='cascade'
required=True
string='Stock Request'
No public methods.
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
required=True
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
required=True
string='Location'
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
copy=False
default='/'
readonly=True
required=True
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
required=True
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
reference_ids
Many2many → stock.reference
column1='stock_request_order_id'
column2='stock_reference_id'
comodel_name='stock.reference'
help='Moves created through this stock request will be grouped using these references. If none are given, the moves generated by procurement rules will be grouped into one big picking.'
relation='stock_request_order_stock_reference_rel'
string='References'
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one → stock.route
compute='_compute_route_id'
help='The route related to a stock request order'
inverse='_inverse_route_id'
readonly=True
store=True
args: 'stock.route'
route_ids
Many2many → stock.route
compute='_compute_route_ids'
readonly=True
store=True
string='Routes'
args: 'stock.route'
state
Selection
compute='_compute_state'
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_order_states
store=True
string='Status'
tracking=True
stock_request_count
Integer
compute='_compute_stock_request_count'
readonly=True
string='Stock requests'
stock_request_ids
One2many → stock.request
copy=True
inverse_name='order_id'
args: 'stock.request'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
required=True
string='Warehouse'
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_stock_requests(self)
action_view_transfer(self)
change_childs(self)
create(self, vals_list)
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_expected_date(self)
onchange_location_id(self)
onchange_picking_policy(self)
onchange_reference_ids(self)
onchange_requested_by(self)
onchange_warehouse_id(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)run(self, procurements, raise_user_error=True)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-request |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-request.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-request/tree/18.0/stock_request |
| VERSION | |
| VERSION | 1.1.4 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, oca-ci, Saran440, Joan Sisquella, ThiagoMForgeFlow, LauraCForgeFlow, Celina Devigili |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-request |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:30:14 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - base_setup - web - bus - web_tour - html_editor - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module was written to allow users to request products that are frequently stocked by the company, to be transferred to their chosen location. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock_request | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_request_order_form |
stock.request.order.form | stock.request.order | form | New |
stock_request_order_search |
stock.request.order.search | stock.request.order | search | New |
stock_request_order_tree |
stock.request.order.tree | stock.request.order | list | New |
stock_request_search |
stock.request.search | stock.request | search | New |
view_move_form |
stock.move.form | stock.move | field | Inherits stock.view_move_form |
view_picking_form |
stock.picking.form | stock.picking | div | Inherits stock.view_picking_form |
view_stock_request_allocation_form |
stock.request.allocation.form | stock.request.allocation | form | New |
view_stock_request_allocation_tree |
stock.request.allocation.tree | stock.request.allocation | list | New |
view_stock_request_form |
stock.request.form | stock.request | form | New |
view_stock_request_tree |
stock.request.tree | stock.request | list | New |
No new fields.
Public methods (1)run(self, procurements, raise_user_error=True)
stock_request_allow_virtual_loc
Boolean
string='Allow Virtual locations on Stock Requests'
stock_request_check_available_first
Boolean
string='Check available stock first'
No public methods.
group_stock_request_order
Boolean
implied_group='stock_request.group_stock_request_order'
module_stock_request_analytic
Boolean
string='Stock Requests Analytic integration'
module_stock_request_kanban
Boolean
string='Stock Requests Kanban integration'
module_stock_request_mrp
Boolean
string='Stock Request for Manufacturing'
module_stock_request_purchase
Boolean
string='Stock Requests for Purchases'
module_stock_request_submit
Boolean
string='Submitted state in Stock Requests'
stock_request_allow_virtual_loc
Boolean
readonly=False
related='company_id.stock_request_allow_virtual_loc'
stock_request_check_available_first
Boolean
readonly=False
related='company_id.stock_request_check_available_first'
No public methods.
No new fields.
Public methods (0)No public methods.
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_move_id'
string='Stock Request Allocation'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
copy_data(self, default=None)
No new fields.
Public methods (0)No public methods.
stock_request_count
Integer
compute='_compute_stock_request_ids'
args: 'Stock Request #'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
action_view_stock_request(self)
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_request_id'
string='Stock Request Allocation'
company_id
Many2one
expected_date
Datetime
help='Date when you expect to receive the goods.'
index=True
required=True
location_id
Many2one
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
order_id
Many2one → stock.request.order
readonly=True
args: 'stock.request.order'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
required=True
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one
product_id
Many2one
product_uom_id
Many2one
product_uom_qty
Float
qty_cancelled
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity cancelled'
readonly=True
store=True
qty_done
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity completed'
readonly=True
store=True
qty_in_progress
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity in progress.'
readonly=True
store=True
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('open', 'In progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
string='Status'
tracking=True
warehouse_id
Many2one
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_transfer(self)
check_cancel(self)
check_done(self)
check_order_company(self)
check_order_expected_date(self)
check_order_location(self)
check_order_picking_policy(self)
check_order_procurement_group(self)
check_order_requested_by(self)
check_order_warehouse_id(self)
create(self, vals_list)
unlink(self)
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
allowed_uom_categ_id
Many2one
related='product_id.uom_id.category_id'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
required=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits='Product Unit of Measure'
help='Quantity in the default UoM of the product'
store=True
args: 'Real Quantity'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
default=<expr>
domain="[('category_id', '=?', allowed_uom_categ_id)]"
required=True
string='Product Unit of Measure'
product_uom_qty
Float
digits='Product Unit of Measure'
help='Quantity, specified in the unit of measure indicated in the request.'
required=True
args: 'Quantity'
route_id
Many2one → stock.route
domain="[('id', 'in', route_ids)]"
ondelete='restrict'
string='Route'
args: 'stock.route'
route_ids
Many2many → stock.route
compute='_compute_route_ids'
readonly=True
string='Routes'
args: 'stock.route'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
required=True
string='Warehouse'
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_location_id(self)
onchange_product_id(self)
onchange_warehouse_id(self)
allocated_product_qty
Float
copy=False
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Allocated Quantity'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='stock_request_id.company_id'
store=True
string='Company'
open_product_qty
Float
compute='_compute_open_product_qty'
args: 'Open Quantity'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='stock_request_id.product_id'
string='Product'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
readonly=True
related='stock_request_id.product_uom_id'
string='UoM'
requested_product_qty
Float
compute='_compute_requested_product_qty'
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Requested Quantity'
requested_product_uom_qty
Float
help='Quantity of the stock request allocated to the stock move, in the UoM of the Stock Request'
args: 'Requested Quantity (UoM)'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
ondelete='cascade'
required=True
string='Stock Move'
stock_request_id
Many2one → stock.request
comodel_name='stock.request'
ondelete='cascade'
required=True
string='Stock Request'
No public methods.
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
required=True
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
required=True
string='Location'
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
copy=False
default='/'
readonly=True
required=True
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
required=True
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one → stock.route
compute='_compute_route_id'
help='The route related to a stock request order'
inverse='_inverse_route_id'
readonly=True
store=True
args: 'stock.route'
route_ids
Many2many → stock.route
compute='_compute_route_ids'
readonly=True
store=True
string='Routes'
args: 'stock.route'
state
Selection
compute='_compute_state'
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_order_states
store=True
string='Status'
tracking=True
stock_request_count
Integer
compute='_compute_stock_request_count'
readonly=True
string='Stock requests'
stock_request_ids
One2many → stock.request
copy=True
inverse_name='order_id'
args: 'stock.request'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
required=True
string='Warehouse'
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_stock_requests(self)
action_view_transfer(self)
change_childs(self)
create(self, vals_list)
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_expected_date(self)
onchange_location_id(self)
onchange_picking_policy(self)
onchange_procurement_group_id(self)
onchange_requested_by(self)
onchange_warehouse_id(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-request |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-request.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-request/tree/17.0/stock_request |
| VERSION | |
| VERSION | 1.1.6 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Lois Rilo, Carlos Lopez, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Joan Sisquella, bobrador, andrea, Celina Devigili |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-request |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 19:20:07 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | This module was written to allow users to request products that are frequently stocked by the company, to be transferred to their chosen location. |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock_request | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_request_order_form |
stock.request.order.form | stock.request.order | form | New |
stock_request_order_search |
stock.request.order.search | stock.request.order | search | New |
stock_request_order_tree |
stock.request.order.tree | stock.request.order | tree | New |
stock_request_search |
stock.request.search | stock.request | search | New |
view_move_form |
stock.move.form | stock.move | group | Inherits stock.view_move_form |
view_picking_form |
stock.picking.form | stock.picking | div | Inherits stock.view_picking_form |
view_stock_move_operations |
stock.move.operations.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_request_allocation_form |
stock.request.allocation.form | stock.request.allocation | form | New |
view_stock_request_allocation_tree |
stock.request.allocation.tree | stock.request.allocation | tree | New |
view_stock_request_form |
stock.request.form | stock.request | form | New |
view_stock_request_tree |
stock.request.tree | stock.request | tree | New |
No new fields.
Public methods (1)run(self, procurements, raise_user_error=True)
stock_request_allow_virtual_loc
Boolean
string='Allow Virtual locations on Stock Requests'
stock_request_check_available_first
Boolean
string='Check available stock first'
stock_request_check_order_requested_by
Boolean
default=True
string='Only allow edit stock request orders if requested by the same user'
No public methods.
check_order_requested_by
Boolean
readonly=False
related='company_id.stock_request_check_order_requested_by'
group_stock_request_order
Boolean
implied_group='stock_request.group_stock_request_order'
module_stock_request_analytic
Boolean
string='Stock Requests Analytic integration'
module_stock_request_kanban
Boolean
string='Stock Requests Kanban integration'
module_stock_request_mrp
Boolean
string='Stock Request for Manufacturing'
module_stock_request_purchase
Boolean
string='Stock Requests for Purchases'
module_stock_request_submit
Boolean
string='Submitted state in Stock Requests'
stock_request_allow_virtual_loc
Boolean
readonly=False
related='company_id.stock_request_allow_virtual_loc'
stock_request_check_available_first
Boolean
readonly=False
related='company_id.stock_request_check_available_first'
No public methods.
No new fields.
Public methods (0)No public methods.
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_move_id'
string='Stock Request Allocation'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
copy_data(self, default=None)
No new fields.
Public methods (0)No public methods.
stock_request_count
Integer
compute='_compute_stock_request_ids'
args: 'Stock Request #'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
action_view_stock_request(self)
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_request_id'
string='Stock Request Allocation'
company_id
Many2one
expected_date
Datetime
help='Date when you expect to receive the goods.'
index=True
required=True
location_id
Many2one
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
order_id
Many2one → stock.request.order
readonly=True
args: 'stock.request.order'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
required=True
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one
product_id
Many2one
product_uom_id
Many2one
product_uom_qty
Float
qty_cancelled
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity cancelled'
readonly=True
store=True
qty_done
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity completed'
readonly=True
store=True
qty_in_progress
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity in progress.'
readonly=True
store=True
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('open', 'In progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
string='Status'
tracking=True
warehouse_id
Many2one
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_transfer(self)
check_cancel(self)
check_done(self)
check_order_company(self)
check_order_expected_date(self)
check_order_location(self)
check_order_picking_policy(self)
check_order_procurement_group(self)
check_order_requested_by(self)
check_order_warehouse_id(self)
create(self, vals_list)
unlink(self)
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
allowed_uom_categ_id
Many2one
related='product_id.uom_id.category_id'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
required=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits='Product Unit of Measure'
help='Quantity in the default UoM of the product'
store=True
args: 'Real Quantity'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
default=<expr>
domain="[('category_id', '=?', allowed_uom_categ_id)]"
required=True
string='Product Unit of Measure'
product_uom_qty
Float
digits='Product Unit of Measure'
help='Quantity, specified in the unit of measure indicated in the request.'
required=True
args: 'Quantity'
route_id
Many2one → stock.route
domain="[('id', 'in', route_ids)]"
ondelete='restrict'
string='Route'
args: 'stock.route'
route_ids
Many2many → stock.route
compute='_compute_route_ids'
readonly=True
string='Routes'
args: 'stock.route'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
required=True
string='Warehouse'
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_location_id(self)
onchange_product_id(self)
onchange_warehouse_id(self)
allocated_product_qty
Float
copy=False
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Allocated Quantity'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='stock_request_id.company_id'
store=True
string='Company'
open_product_qty
Float
compute='_compute_open_product_qty'
args: 'Open Quantity'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='stock_request_id.product_id'
string='Product'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
readonly=True
related='stock_request_id.product_uom_id'
string='UoM'
requested_product_qty
Float
compute='_compute_requested_product_qty'
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Requested Quantity'
requested_product_uom_qty
Float
help='Quantity of the stock request allocated to the stock move, in the UoM of the Stock Request'
args: 'Requested Quantity (UoM)'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
ondelete='cascade'
required=True
string='Stock Move'
stock_request_id
Many2one → stock.request
comodel_name='stock.request'
ondelete='cascade'
required=True
string='Stock Request'
No public methods.
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
required=True
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
required=True
string='Location'
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
copy=False
default='/'
readonly=True
required=True
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
required=True
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one → stock.route
compute='_compute_route_id'
help='The route related to a stock request order'
inverse='_inverse_route_id'
readonly=True
store=True
args: 'stock.route'
route_ids
Many2many → stock.route
compute='_compute_route_ids'
readonly=True
store=True
string='Routes'
args: 'stock.route'
state
Selection
compute='_compute_state'
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_order_states
store=True
string='Status'
tracking=True
stock_request_count
Integer
compute='_compute_stock_request_count'
readonly=True
string='Stock requests'
stock_request_ids
One2many → stock.request
copy=True
inverse_name='order_id'
args: 'stock.request'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
required=True
string='Warehouse'
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_stock_requests(self)
action_view_transfer(self)
change_childs(self)
create(self, vals_list)
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_expected_date(self)
onchange_location_id(self)
onchange_picking_policy(self)
onchange_procurement_group_id(self)
onchange_requested_by(self)
onchange_warehouse_id(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-request |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-request.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-request/tree/16.0/stock_request |
| VERSION | |
| VERSION | 1.1.3 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow |
| COMMITTERS | |
| COMMITTERS | Lois Rilo, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Joan Sisquella |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-request |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:50 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes_gs1_nomenclature - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock_request | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_request_order_form |
stock.request.order.form | stock.request.order | form | New |
stock_request_order_search |
stock.request.order.search | stock.request.order | search | New |
stock_request_order_tree |
stock.request.order.tree | stock.request.order | tree | New |
stock_request_search |
stock.request.search | stock.request | search | New |
view_move_form |
stock.move.form | stock.move | group | Inherits stock.view_move_form |
view_picking_form |
stock.picking.form | stock.picking | div | Inherits stock.view_picking_form |
view_stock_move_operations |
stock.move.operations.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_request_allocation_form |
stock.request.allocation.form | stock.request.allocation | form | New |
view_stock_request_allocation_tree |
stock.request.allocation.tree | stock.request.allocation | tree | New |
view_stock_request_form |
stock.request.form | stock.request | form | New |
view_stock_request_tree |
stock.request.tree | stock.request | tree | New |
No new fields.
Public methods (1)run(self, procurements, raise_user_error=True)
stock_request_allow_virtual_loc
Boolean
string='Allow Virtual locations on Stock Requests'
stock_request_check_available_first
Boolean
string='Check available stock first'
No public methods.
group_stock_request_order
Boolean
implied_group='stock_request.group_stock_request_order'
module_stock_request_analytic
Boolean
string='Stock Requests Analytic integration'
module_stock_request_kanban
Boolean
string='Stock Requests Kanban integration'
module_stock_request_mrp
Boolean
string='Stock Request for Manufacturing'
module_stock_request_purchase
Boolean
string='Stock Requests for Purchases'
module_stock_request_submit
Boolean
string='Submitted state in Stock Requests'
stock_request_allow_virtual_loc
Boolean
readonly=False
related='company_id.stock_request_allow_virtual_loc'
stock_request_check_available_first
Boolean
readonly=False
related='company_id.stock_request_check_available_first'
No public methods.
No new fields.
Public methods (0)No public methods.
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_move_id'
string='Stock Request Allocation'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
copy_data(self, default=None)
No new fields.
Public methods (0)No public methods.
stock_request_count
Integer
compute='_compute_stock_request_ids'
args: 'Stock Request #'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
action_view_stock_request(self)
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_request_id'
string='Stock Request Allocation'
company_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
expected_date
Datetime
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
location_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
states={'draft': [('readonly', False)]}
order_id
Many2one → stock.request.order
readonly=True
args: 'stock.request.order'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_qty
Float
readonly=True
states={'draft': [('readonly', False)]}
qty_cancelled
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity cancelled'
readonly=True
store=True
qty_done
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity completed'
readonly=True
store=True
qty_in_progress
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity in progress.'
readonly=True
store=True
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('open', 'In progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
string='Status'
tracking=True
warehouse_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_transfer(self)
check_cancel(self)
check_done(self)
check_order_company(self)
check_order_expected_date(self)
check_order_location(self)
check_order_picking_policy(self)
check_order_procurement_group(self)
check_order_requested_by(self)
check_order_warehouse_id(self)
create(self, vals_list)
unlink(self)
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
allowed_uom_categ_id
Many2one
related='product_id.uom_id.category_id'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
required=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits='Product Unit of Measure'
help='Quantity in the default UoM of the product'
store=True
args: 'Real Quantity'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
default=<expr>
domain="[('category_id', '=?', allowed_uom_categ_id)]"
required=True
string='Product Unit of Measure'
product_uom_qty
Float
digits='Product Unit of Measure'
help='Quantity, specified in the unit of measure indicated in the request.'
required=True
args: 'Quantity'
route_id
Many2one → stock.route
domain="[('id', 'in', route_ids)]"
ondelete='restrict'
string='Route'
args: 'stock.route'
route_ids
Many2many → stock.route
compute='_compute_route_ids'
readonly=True
string='Routes'
args: 'stock.route'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
required=True
string='Warehouse'
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_location_id(self)
onchange_product_id(self)
onchange_warehouse_id(self)
allocated_product_qty
Float
copy=False
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Allocated Quantity'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='stock_request_id.company_id'
store=True
string='Company'
open_product_qty
Float
compute='_compute_open_product_qty'
args: 'Open Quantity'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='stock_request_id.product_id'
string='Product'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
readonly=True
related='stock_request_id.product_uom_id'
string='UoM'
requested_product_qty
Float
compute='_compute_requested_product_qty'
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Requested Quantity'
requested_product_uom_qty
Float
help='Quantity of the stock request allocated to the stock move, in the UoM of the Stock Request'
args: 'Requested Quantity (UoM)'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
ondelete='cascade'
required=True
string='Stock Move'
stock_request_id
Many2one → stock.request
comodel_name='stock.request'
ondelete='cascade'
required=True
string='Stock Request'
No public methods.
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Location'
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
copy=False
default='/'
readonly=True
required=True
states={'draft': [('readonly', False)]}
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'procurement.group', 'Procurement Group'
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one → stock.route
compute='_compute_route_id'
help='The route related to a stock request order'
inverse='_inverse_route_id'
readonly=True
states={'draft': [('readonly', False)]}
store=True
args: 'stock.route'
route_ids
Many2many → stock.route
compute='_compute_route_ids'
readonly=True
store=True
string='Routes'
args: 'stock.route'
state
Selection
compute='_compute_state'
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_order_states
store=True
string='Status'
tracking=True
stock_request_count
Integer
compute='_compute_stock_request_count'
readonly=True
string='Stock requests'
stock_request_ids
One2many → stock.request
copy=True
inverse_name='order_id'
args: 'stock.request'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Warehouse'
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_stock_requests(self)
action_view_transfer(self)
change_childs(self)
create(self, vals_list)
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_expected_date(self)
onchange_location_id(self)
onchange_picking_policy(self)
onchange_procurement_group_id(self)
onchange_requested_by(self)
onchange_warehouse_id(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-warehouse |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-warehouse.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-warehouse/tree/15.0/stock_request |
| VERSION | |
| VERSION | 1.8.3 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, GitHub, Lois Rilo, Víctor Martínez, nicolas, Weblate, OCA-git-bot, oca-ci, Joan Sisquella, Bernat Puig Font, OriolMForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:33 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock_request | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_request_order_form |
stock.request.order.form | stock.request.order | form | New |
stock_request_order_search |
stock.request.order.search | stock.request.order | search | New |
stock_request_order_tree |
stock.request.order.tree | stock.request.order | tree | New |
stock_request_search |
stock.request.search | stock.request | search | New |
view_move_form |
stock.move.form | stock.move | group | Inherits stock.view_move_form |
view_picking_form |
stock.picking.form | stock.picking | div | Inherits stock.view_picking_form |
view_stock_move_operations |
stock.move.operations.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_request_allocation_form |
stock.request.allocation.form | stock.request.allocation | form | New |
view_stock_request_allocation_tree |
stock.request.allocation.tree | stock.request.allocation | tree | New |
view_stock_request_form |
stock.request.form | stock.request | form | New |
view_stock_request_tree |
stock.request.tree | stock.request | tree | New |
No new fields.
Public methods (1)run(self, procurements, raise_user_error=True)
stock_request_allow_virtual_loc
Boolean
string='Allow Virtual locations on Stock Requests'
stock_request_check_available_first
Boolean
string='Check available stock first'
No public methods.
group_stock_request_order
Boolean
implied_group='stock_request.group_stock_request_order'
module_stock_request_analytic
Boolean
string='Stock Requests Analytic integration'
module_stock_request_kanban
Boolean
string='Stock Requests Kanban integration'
module_stock_request_mrp
Boolean
string='Stock Request for Manufacturing'
module_stock_request_purchase
Boolean
string='Stock Requests for Purchases'
module_stock_request_submit
Boolean
string='Submitted state in Stock Requests'
stock_request_allow_virtual_loc
Boolean
readonly=False
related='company_id.stock_request_allow_virtual_loc'
stock_request_check_available_first
Boolean
readonly=False
related='company_id.stock_request_check_available_first'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_move_id'
string='Stock Request Allocation'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
copy_data(self, default=None)
No new fields.
Public methods (0)No public methods.
stock_request_count
Integer
compute='_compute_stock_request_ids'
args: 'Stock Request #'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
action_view_stock_request(self)
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_request_id'
string='Stock Request Allocation'
company_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
expected_date
Datetime
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
location_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
states={'draft': [('readonly', False)]}
order_id
Many2one → stock.request.order
readonly=True
args: 'stock.request.order'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_qty
Float
readonly=True
states={'draft': [('readonly', False)]}
qty_cancelled
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity cancelled'
readonly=True
store=True
qty_done
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity completed'
readonly=True
store=True
qty_in_progress
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity in progress.'
readonly=True
store=True
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('open', 'In progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
string='Status'
tracking=True
warehouse_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_transfer(self)
check_cancel(self)
check_done(self)
check_order_company(self)
check_order_expected_date(self)
check_order_location(self)
check_order_picking_policy(self)
check_order_procurement_group(self)
check_order_requested_by(self)
check_order_warehouse_id(self)
create(self, vals)
unlink(self)
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
allowed_uom_categ_id
Many2one
related='product_id.uom_id.category_id'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
required=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits='Product Unit of Measure'
help='Quantity in the default UoM of the product'
store=True
args: 'Real Quantity'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
default=<expr>
domain="[('category_id', '=?', allowed_uom_categ_id)]"
required=True
string='Product Unit of Measure'
product_uom_qty
Float
digits='Product Unit of Measure'
help='Quantity, specified in the unit of measure indicated in the request.'
required=True
args: 'Quantity'
route_id
Many2one → stock.location.route
domain="[('id', 'in', route_ids)]"
ondelete='restrict'
string='Route'
args: 'stock.location.route'
route_ids
Many2many → stock.location.route
compute='_compute_route_ids'
readonly=True
string='Routes'
args: 'stock.location.route'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
required=True
string='Warehouse'
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_location_id(self)
onchange_product_id(self)
onchange_warehouse_id(self)
allocated_product_qty
Float
copy=False
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Allocated Quantity'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='stock_request_id.company_id'
store=True
string='Company'
open_product_qty
Float
compute='_compute_open_product_qty'
args: 'Open Quantity'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='stock_request_id.product_id'
string='Product'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
readonly=True
related='stock_request_id.product_uom_id'
string='UoM'
requested_product_qty
Float
compute='_compute_requested_product_qty'
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Requested Quantity'
requested_product_uom_qty
Float
help='Quantity of the stock request allocated to the stock move, in the UoM of the Stock Request'
args: 'Requested Quantity (UoM)'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
ondelete='cascade'
required=True
string='Stock Move'
stock_request_id
Many2one → stock.request
comodel_name='stock.request'
ondelete='cascade'
required=True
string='Stock Request'
No public methods.
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Location'
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
copy=False
default='/'
readonly=True
required=True
states={'draft': [('readonly', False)]}
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'procurement.group', 'Procurement Group'
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users'
route_id
Many2one → stock.location.route
compute='_compute_route_id'
domain="[('id', 'in', route_ids)]"
help='The route related to a stock request order'
inverse='_inverse_route_id'
readonly=True
states={'draft': [('readonly', False)]}
store=True
args: 'stock.location.route'
route_ids
Many2many → stock.location.route
compute='_compute_route_ids'
readonly=True
string='Routes'
args: 'stock.location.route'
state
Selection
compute='_compute_state'
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_order_states
store=True
string='Status'
tracking=True
stock_request_count
Integer
compute='_compute_stock_request_count'
readonly=True
string='Stock requests'
stock_request_ids
One2many → stock.request
copy=True
inverse_name='order_id'
args: 'stock.request'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Warehouse'
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_stock_requests(self)
action_view_transfer(self)
change_childs(self)
create(self, vals)
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_expected_date(self)
onchange_location_id(self)
onchange_picking_policy(self)
onchange_procurement_group_id(self)
onchange_requested_by(self)
onchange_warehouse_id(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-warehouse |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-warehouse.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-warehouse/tree/14.0/stock_request |
| VERSION | |
| VERSION | 1.9.0 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, Denis Roussel, Enric Tobella, Lois Rilo, Nils Hamerlinck, Florent Xicluna, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Jesús Alan Ramos Rodríguez, oca-ci, Kitti U, newtratip, OriolMForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:56 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock_request | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_request_order_form |
stock.request.order.form | stock.request.order | form | New |
stock_request_order_search |
stock.request.order.search | stock.request.order | search | New |
stock_request_order_tree |
stock.request.order.tree | stock.request.order | tree | New |
stock_request_search |
stock.request.search | stock.request | search | New |
view_move_form |
stock.move.form | stock.move | group | Inherits stock.view_move_form |
view_picking_form |
stock.picking.form | stock.picking | div | Inherits stock.view_picking_form |
view_stock_move_operations |
stock.move.operations.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_request_allocation_form |
stock.request.allocation.form | stock.request.allocation | form | New |
view_stock_request_allocation_tree |
stock.request.allocation.tree | stock.request.allocation | tree | New |
view_stock_request_form |
stock.request.form | stock.request | form | New |
view_stock_request_tree |
stock.request.tree | stock.request | tree | New |
No new fields.
Public methods (1)run(self, procurements, raise_user_error=True)
stock_request_allow_virtual_loc
Boolean
string='Allow Virtual locations on Stock Requests'
stock_request_check_available_first
Boolean
string='Check available stock first'
No public methods.
group_stock_request_order
Boolean
implied_group='stock_request.group_stock_request_order'
module_stock_request_analytic
Boolean
string='Stock Requests Analytic integration'
module_stock_request_kanban
Boolean
string='Stock Requests Kanban integration'
module_stock_request_mrp
Boolean
string='Stock Request for Manufacturing'
module_stock_request_purchase
Boolean
string='Stock Requests for Purchases'
module_stock_request_submit
Boolean
string='Submitted state in Stock Requests'
stock_request_allow_virtual_loc
Boolean
readonly=False
related='company_id.stock_request_allow_virtual_loc'
stock_request_check_available_first
Boolean
readonly=False
related='company_id.stock_request_check_available_first'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_move_id'
string='Stock Request Allocation'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
copy_data(self, default=None)
No new fields.
Public methods (0)No public methods.
stock_request_count
Integer
compute='_compute_stock_request_ids'
args: 'Stock Request #'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
action_view_stock_request(self)
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_request_id'
string='Stock Request Allocation'
company_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
expected_date
Datetime
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Expected Date'
lead_days_date
Date
compute='_compute_lead_days'
location_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
states={'draft': [('readonly', False)]}
order_id
Many2one → stock.request.order
readonly=True
args: 'stock.request.order'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_qty
Float
readonly=True
states={'draft': [('readonly', False)]}
qty_cancelled
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity cancelled'
readonly=True
store=True
args: 'Qty Cancelled'
qty_done
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity completed'
readonly=True
store=True
args: 'Qty Done'
qty_in_progress
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity in progress.'
readonly=True
store=True
args: 'Qty In Progress'
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users', 'Requested by'
route_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
rule_ids
Many2many → stock.rule
compute='_compute_rules'
string='Rules used'
args: 'stock.rule'
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=[('draft', 'Draft'), ('open', 'In progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
string='Status'
tracking=True
warehouse_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_transfer(self)
check_cancel(self)
check_done(self)
check_order_company(self)
check_order_expected_date(self)
check_order_location(self)
check_order_picking_policy(self)
check_order_procurement_group(self)
check_order_requested_by(self)
check_order_warehouse_id(self)
create(self, vals)
unlink(self)
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
allowed_uom_categ_id
Many2one
related='product_id.uom_id.category_id'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
required=True
string='Location'
name
Char
copy=False
default='/'
readonly=True
required=True
args: 'Name'
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits='Product Unit of Measure'
help='Quantity in the default UoM of the product'
store=True
args: 'Real Quantity'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
default=<expr>
domain="[('category_id', '=?', allowed_uom_categ_id)]"
required=True
string='Product Unit of Measure'
product_uom_qty
Float
digits='Product Unit of Measure'
help='Quantity, specified in the unit of measure indicated in the request.'
required=True
args: 'Quantity'
route_id
Many2one → stock.location.route
domain="[('id', 'in', route_ids)]"
ondelete='restrict'
string='Route'
args: 'stock.location.route'
route_ids
Many2many → stock.location.route
compute='_compute_route_ids'
readonly=True
string='Routes'
args: 'stock.location.route'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
required=True
string='Warehouse'
default_get(self, fields)
get_parents(self)
onchange_company_id(self)
onchange_location_id(self)
onchange_product_id(self)
onchange_warehouse_id(self)
allocated_product_qty
Float
copy=False
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Allocated Quantity'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='stock_request_id.company_id'
store=True
string='Company'
open_product_qty
Float
compute='_compute_open_product_qty'
args: 'Open Quantity'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='stock_request_id.product_id'
string='Product'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
readonly=True
related='stock_request_id.product_uom_id'
string='UoM'
requested_product_qty
Float
compute='_compute_requested_product_qty'
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Requested Quantity'
requested_product_uom_qty
Float
help='Quantity of the stock request allocated to the stock move, in the UoM of the Stock Request'
args: 'Requested Quantity (UoM)'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
ondelete='cascade'
required=True
string='Stock Move'
stock_request_id
Many2one → stock.request
comodel_name='stock.request'
ondelete='cascade'
required=True
string='Stock Request'
No public methods.
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Expected Date'
location_id
Many2one → stock.location
comodel_name='stock.location'
domain="not allow_virtual_location and [('usage', 'in', ['internal', 'transit'])] or []"
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Location'
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
copy=False
default='/'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Name'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'procurement.group', 'Procurement Group'
requested_by
Many2one → res.users
default=<expr>
required=True
tracking=True
args: 'res.users', 'Requested by'
state
Selection
compute='_compute_state'
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_order_states
store=True
string='Status'
tracking=True
stock_request_count
Integer
compute='_compute_stock_request_count'
readonly=True
string='Stock requests'
stock_request_ids
One2many → stock.request
copy=True
inverse_name='order_id'
args: 'stock.request'
warehouse_id
Many2one → stock.warehouse
check_company=True
comodel_name='stock.warehouse'
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Warehouse'
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_stock_requests(self)
action_view_transfer(self)
change_childs(self)
create(self, vals)
default_get(self, fields)
onchange_company_id(self)
onchange_expected_date(self)
onchange_location_id(self)
onchange_picking_policy(self)
onchange_procurement_group_id(self)
onchange_requested_by(self)
onchange_warehouse_id(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-warehouse |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-warehouse.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-warehouse/tree/13.0/stock_request |
| VERSION | |
| VERSION | 1.7.3 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), ForgeFlow |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), ForgeFlow |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, mreficent, Enric Tobella, Lois Rilo, Carlos Lopez, OCA Transbot, Adrien Peiffer, Nicolás Mac Rouillon, oca-travis, OCA-git-bot, Kitti U, hveficent, Alba Riera, HviorForgeFlow, Juan Carreras, OriolMForgeFlow |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:12 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - base_setup - web - bus - web_tour - uom - barcodes |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock_request | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_request_order_form |
stock.request.order.form | stock.request.order | form | New |
stock_request_order_search |
stock.request.order.search | stock.request.order | search | New |
stock_request_order_tree |
stock.request.order.tree | stock.request.order | tree | New |
stock_request_pivot |
stock.request.pivot | stock.request | pivot | New |
stock_request_pivot_search |
stock.request.pivot.search | stock.request | filter | Inherits stock_request.stock_request_search |
stock_request_search |
stock.request.search | stock.request | search | New |
view_move_form |
stock.move.form | stock.move | group | Inherits stock.view_move_form |
view_picking_form |
stock.picking.form | stock.picking | div | Inherits stock.view_picking_form |
view_stock_move_operations |
stock.move.operations.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_request_allocation_form |
stock.request.allocation.form | stock.request.allocation | form | New |
view_stock_request_allocation_tree |
stock.request.allocation.tree | stock.request.allocation | tree | New |
view_stock_request_form |
stock.request.form | stock.request | form | New |
view_stock_request_tree |
stock.request.tree | stock.request | tree | New |
No new fields.
Public methods (1)run(self, procurements)
stock_request_allow_virtual_loc
Boolean
string='Allow Virtual locations on Stock Requests'
No public methods.
group_stock_request_order
Boolean
implied_group='stock_request.group_stock_request_order'
module_stock_request_analytic
Boolean
string='Stock Requests Analytic integration'
module_stock_request_kanban
Boolean
string='Stock Requests Kanban integration'
module_stock_request_mrp
Boolean
string='Stock Request for Manufacturing'
module_stock_request_purchase
Boolean
string='Stock Requests for Purchases'
module_stock_request_submit
Boolean
string='Submitted state in Stock Requests'
stock_request_allow_virtual_loc
Boolean
readonly=False
related='company_id.stock_request_allow_virtual_loc'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_move_id'
string='Stock Request Allocation'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
copy_data(self, default=None)
No new fields.
Public methods (0)No public methods.
stock_request_count
Integer
compute='_compute_stock_request_ids'
args: 'Stock Request #'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
action_view_stock_request(self)
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_request_id'
string='Stock Request Allocation'
company_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
expected_date
Datetime
default=<expr>
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Expected Date'
location_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
states={'draft': [('readonly', False)]}
order_id
Many2one → stock.request.order
readonly=True
args: 'stock.request.order'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_qty
Float
readonly=True
states={'draft': [('readonly', False)]}
qty_cancelled
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity cancelled'
readonly=True
store=True
args: 'Qty Cancelled'
qty_done
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity completed'
readonly=True
store=True
args: 'Qty Done'
qty_in_progress
Float
compute='_compute_qty'
digits='Product Unit of Measure'
help='Quantity in progress.'
readonly=True
store=True
args: 'Qty In Progress'
requested_by
Many2one → res.users
default=<expr>
required=True
track_visibility='onchange'
args: 'res.users', 'Requested by'
route_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_states
string='Status'
track_visibility='onchange'
warehouse_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_transfer(self)
check_done(self)
check_order_company(self)
check_order_expected_date(self)
check_order_location(self)
check_order_picking_policy(self)
check_order_procurement_group(self)
check_order_requested_by(self)
check_order_warehouse_id(self)
create(self, vals)
unlink(self)
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
domain=[('usage', 'in', ['internal', 'transit'])]
ondelete='cascade'
required=True
args: 'stock.location', 'Location'
name
Char
copy=False
default='/'
readonly=True
required=True
args: 'Name'
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits='Product Unit of Measure'
help='Quantity in the default UoM of the product'
store=True
args: 'Real Quantity'
product_uom_id
Many2one → uom.uom
default=<expr>
required=True
args: 'uom.uom', 'Product Unit of Measure'
product_uom_qty
Float
digits='Product Unit of Measure'
help='Quantity, specified in the unit of measure indicated in the request.'
required=True
args: 'Quantity'
route_id
Many2one → stock.location.route
domain="[('id', 'in', route_ids)]"
ondelete='restrict'
string='Route'
args: 'stock.location.route'
route_ids
Many2many → stock.location.route
compute='_compute_route_ids'
readonly=True
string='Routes'
args: 'stock.location.route'
warehouse_id
Many2one → stock.warehouse
ondelete='cascade'
required=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields)
get_parents(self)
onchange_allow_virtual_location(self)
onchange_company_id(self)
onchange_location_id(self)
onchange_product_id(self)
onchange_warehouse_id(self)
allocated_product_qty
Float
copy=False
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Allocated Quantity'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='stock_request_id.company_id'
store=True
string='Company'
open_product_qty
Float
compute='_compute_open_product_qty'
args: 'Open Quantity'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='stock_request_id.product_id'
string='Product'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
readonly=True
related='stock_request_id.product_uom_id'
string='UoM'
requested_product_qty
Float
compute='_compute_requested_product_qty'
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Requested Quantity'
requested_product_uom_qty
Float
help='Quantity of the stock request allocated to the stock move, in the UoM of the Stock Request'
args: 'Requested Quantity (UoM)'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
ondelete='cascade'
required=True
string='Stock Move'
stock_request_id
Many2one → stock.request
comodel_name='stock.request'
ondelete='cascade'
required=True
string='Stock Request'
No public methods.
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Expected Date'
location_id
Many2one → stock.location
domain=[('usage', 'in', ['internal', 'transit'])]
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Location'
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
copy=False
default='/'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Name'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'procurement.group', 'Procurement Group'
requested_by
Many2one → res.users
default=<expr>
required=True
track_visibility='onchange'
args: 'res.users', 'Requested by'
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_order_states
string='Status'
track_visibility='onchange'
stock_request_count
Integer
compute='_compute_stock_request_count'
readonly=True
string='Stock requests'
stock_request_ids
One2many → stock.request
copy=True
inverse_name='order_id'
args: 'stock.request'
warehouse_id
Many2one → stock.warehouse
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.warehouse', 'Warehouse'
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_stock_requests(self)
action_view_transfer(self)
change_childs(self)
check_done(self)
create(self, vals)
default_get(self, fields)
onchange_allow_virtual_location(self)
onchange_company_id(self)
onchange_expected_date(self)
onchange_location_id(self)
onchange_picking_policy(self)
onchange_procurement_group_id(self)
onchange_requested_by(self)
onchange_warehouse_id(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-warehouse |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-warehouse.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-warehouse/tree/12.0/stock_request |
| VERSION | |
| VERSION | 1.5.0 |
| CATEGORY | |
| CATEGORY | Warehouse |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Eficent |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Eficent |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, GitHub, mreficent, david, Lois Rilo, OCA Transbot, ahenriquez, oca-travis, Weblate, OCA-git-bot, hveficent, Jaime Arroyo, Murtuza Saleh, Pascal GOUHIER |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:16 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - decimal_precision - base_setup - web - bus - web_tour - uom - barcodes |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock_request | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_request_order_form |
stock.request.order.form | stock.request.order | form | New |
stock_request_order_search |
stock.request.order.search | stock.request.order | search | New |
stock_request_order_tree |
stock.request.order.tree | stock.request.order | tree | New |
stock_request_search |
stock.request.search | stock.request | search | New |
view_move_form |
stock.move.form | stock.move | group | Inherits stock.view_move_form |
view_move_picking_form |
stock.move.form | stock.move | group | Inherits stock.view_move_picking_form |
view_picking_form |
stock.picking.form | stock.picking | div | Inherits stock.view_picking_form |
view_stock_move_operations |
stock.move.operations.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_request_allocation_form |
stock.request.allocation.form | stock.request.allocation | form | New |
view_stock_request_allocation_tree |
stock.request.allocation.tree | stock.request.allocation | tree | New |
view_stock_request_form |
stock.request.form | stock.request | form | New |
view_stock_request_tree |
stock.request.tree | stock.request | tree | New |
No new fields.
Public methods (1)run(self, product_id, product_qty, product_uom, location_id, name, origin, values)
stock_request_allow_virtual_loc
Boolean
string='Allow Virtual locations on Stock Requests'
No public methods.
group_stock_request_order
Boolean
implied_group='stock_request.group_stock_request_order'
module_stock_request_analytic
Boolean
string='Stock Requests Analytic integration'
module_stock_request_kanban
Boolean
string='Stock Requests Kanban integration'
module_stock_request_purchase
Boolean
string='Stock Requests for Purchases'
module_stock_request_submit
Boolean
string='Submitted state in Stock Requests'
stock_request_allow_virtual_loc
Boolean
readonly=False
related='company_id.stock_request_allow_virtual_loc'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_move_id'
string='Stock Request Allocation'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
copy_data(self, default=None)
No new fields.
Public methods (0)No public methods.
stock_request_count
Integer
compute='_compute_stock_request_ids'
args: 'Stock Request #'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
action_view_stock_request(self)
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_request_id'
string='Stock Request Allocation'
company_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
expected_date
Datetime
default=<expr>
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Expected Date'
location_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
states={'draft': [('readonly', False)]}
order_id
Many2one → stock.request.order
readonly=True
args: 'stock.request.order'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_qty
Float
readonly=True
states={'draft': [('readonly', False)]}
qty_cancelled
Float
compute='_compute_qty'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity cancelled'
readonly=True
store=True
args: 'Qty Cancelled'
qty_done
Float
compute='_compute_qty'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity completed'
readonly=True
store=True
args: 'Qty Done'
qty_in_progress
Float
compute='_compute_qty'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity in progress.'
readonly=True
store=True
args: 'Qty In Progress'
requested_by
Many2one → res.users
default=<expr>
required=True
track_visibility='onchange'
args: 'res.users', 'Requested by'
route_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_states
string='Status'
track_visibility='onchange'
warehouse_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_transfer(self)
check_done(self)
check_order_company(self)
check_order_expected_date(self)
check_order_location(self)
check_order_picking_policy(self)
check_order_procurement_group(self)
check_order_requested_by(self)
check_order_warehouse_id(self)
create(self, vals)
unlink(self)
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
domain=[('usage', 'in', ['internal', 'transit'])]
ondelete='cascade'
required=True
args: 'stock.location', 'Location'
name
Char
copy=False
default='/'
readonly=True
required=True
args: 'Name'
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits=dp.get_precision('Product Unit of Measure')
help='Quantity in the default UoM of the product'
store=True
args: 'Real Quantity'
product_uom_id
Many2one → uom.uom
default=<expr>
required=True
args: 'uom.uom', 'Product Unit of Measure'
product_uom_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='Quantity, specified in the unit of measure indicated in the request.'
required=True
args: 'Quantity'
route_id
Many2one → stock.location.route
domain="[('id', 'in', route_ids)]"
ondelete='restrict'
string='Route'
args: 'stock.location.route'
route_ids
Many2many → stock.location.route
compute='_compute_route_ids'
readonly=True
string='Routes'
args: 'stock.location.route'
warehouse_id
Many2one → stock.warehouse
ondelete='cascade'
required=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields)
get_parents(self)
onchange_allow_virtual_location(self)
onchange_company_id(self)
onchange_location_id(self)
onchange_product_id(self)
onchange_warehouse_id(self)
allocated_product_qty
Float
copy=False
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Allocated Quantity'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='stock_request_id.company_id'
store=True
string='Company'
open_product_qty
Float
compute='_compute_open_product_qty'
args: 'Open Quantity'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='stock_request_id.product_id'
string='Product'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
readonly=True
related='stock_request_id.product_uom_id'
string='UoM'
requested_product_qty
Float
compute='_compute_requested_product_qty'
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Requested Quantity'
requested_product_uom_qty
Float
help='Quantity of the stock request allocated to the stock move, in the UoM of the Stock Request'
args: 'Requested Quantity (UoM)'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
ondelete='cascade'
required=True
string='Stock Move'
stock_request_id
Many2one → stock.request
comodel_name='stock.request'
ondelete='cascade'
required=True
string='Stock Request'
No public methods.
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Expected Date'
location_id
Many2one → stock.location
domain=[('usage', 'in', ['internal', 'transit'])]
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Location'
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
copy=False
default='/'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Name'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'procurement.group', 'Procurement Group'
requested_by
Many2one → res.users
default=<expr>
required=True
track_visibility='onchange'
args: 'res.users', 'Requested by'
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=_get_request_order_states
string='Status'
track_visibility='onchange'
stock_request_count
Integer
compute='_compute_stock_request_count'
readonly=True
string='Stock requests'
stock_request_ids
One2many → stock.request
copy=True
inverse_name='order_id'
args: 'stock.request'
warehouse_id
Many2one → stock.warehouse
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.warehouse', 'Warehouse'
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_stock_requests(self)
action_view_transfer(self)
change_childs(self)
check_done(self)
create(self, vals)
default_get(self, fields)
onchange_allow_virtual_location(self)
onchange_company_id(self)
onchange_expected_date(self)
onchange_location_id(self)
onchange_picking_policy(self)
onchange_procurement_group_id(self)
onchange_requested_by(self)
onchange_warehouse_id(self)
unlink(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-warehouse |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-warehouse.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-warehouse/tree/11.0/stock_request |
| VERSION | |
| VERSION | 3.4.7 |
| CATEGORY | |
| CATEGORY | Warehouse Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Eficent |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Eficent |
| COMMITTERS | |
| COMMITTERS | GitHub, mreficent, Denis Roussel, Enric Tobella, Lois Rilo, Jordi Ballester Alomar, OCA Transbot, AaronHForgeFlow, oca-travis, Weblate, OCA-git-bot, ernesto, oca-ci, hveficent, Atte Isopuro |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-warehouse |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:57 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - stock - product - base - decimal_precision - base_setup - web - bus - web_tour - barcodes - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_view_form |
res.config.settings.view.form.inherit.stock_request | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
stock_request_order_form |
stock.request.order.form | stock.request.order | form | New |
stock_request_order_search |
stock.request.order.search | stock.request.order | search | New |
stock_request_order_tree |
stock.request.order.tree | stock.request.order | tree | New |
stock_request_search |
stock.request.search | stock.request | search | New |
view_move_form |
stock.move.form | stock.move | group | Inherits stock.view_move_form |
view_move_picking_form |
stock.move.form | stock.move | group | Inherits stock.view_move_picking_form |
view_picking_form |
stock.picking.form | stock.picking | div | Inherits stock.view_picking_form |
view_stock_move_operations |
stock.move.operations.form | stock.move | field | Inherits stock.view_stock_move_operations |
view_stock_request_allocation_form |
stock.request.allocation.form | stock.request.allocation | form | New |
view_stock_request_allocation_tree |
stock.request.allocation.tree | stock.request.allocation | tree | New |
view_stock_request_form |
stock.request.form | stock.request | form | New |
view_stock_request_tree |
stock.request.tree | stock.request | tree | New |
No new fields.
Public methods (0)No public methods.
stock_request_allow_virtual_loc
Boolean
string='Allow Virtual locations on Stock Requests'
No public methods.
group_stock_request_order
Boolean
implied_group='stock_request.group_stock_request_order'
module_stock_request_analytic
Boolean
string='Stock Requests Analytic integration'
module_stock_request_kanban
Boolean
string='Stock Requests Kanban integration'
module_stock_request_purchase
Boolean
string='Stock Requests for Purchases'
stock_request_allow_virtual_loc
Boolean
related='company_id.stock_request_allow_virtual_loc'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_move_id'
string='Stock Request Allocation'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
copy_data(self, default=None)
No new fields.
Public methods (0)No public methods.
stock_request_count
Integer
compute='_compute_stock_request_ids'
args: 'Stock Request #'
stock_request_ids
One2many → stock.request
comodel_name='stock.request'
compute='_compute_stock_request_ids'
string='Stock Requests'
action_view_stock_request(self)
allocation_ids
One2many → stock.request.allocation
comodel_name='stock.request.allocation'
inverse_name='stock_request_id'
string='Stock Request Allocation'
company_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Expected Date'
location_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
states={'draft': [('readonly', False)]}
order_id
Many2one → stock.request.order
readonly=True
args: 'stock.request.order'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
product_uom_qty
Float
readonly=True
states={'draft': [('readonly', False)]}
qty_cancelled
Float
compute='_compute_qty'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity cancelled'
readonly=True
store=True
args: 'Qty Cancelled'
qty_done
Float
compute='_compute_qty'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity completed'
readonly=True
store=True
args: 'Qty Done'
qty_in_progress
Float
compute='_compute_qty'
digits=dp.get_precision('Product Unit of Measure')
help='Quantity in progress.'
readonly=True
store=True
args: 'Qty In Progress'
requested_by
Many2one → res.users
default=<expr>
required=True
track_visibility='onchange'
args: 'res.users', 'Requested by'
route_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=REQUEST_STATES
string='Status'
track_visibility='onchange'
warehouse_id
Many2one
readonly=True
states={'draft': [('readonly', False)]}
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_transfer(self)
check_done(self)
check_order_company(self)
check_order_expected_date(self)
check_order_location(self)
check_order_picking_policy(self)
check_order_procurement_group(self)
check_order_requested_by(self)
check_order_warehouse_id(self)
create(self, vals)
unlink(self)
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
required=True
args: 'res.company', 'Company'
location_id
Many2one → stock.location
domain=[('usage', 'in', ['internal', 'transit'])]
ondelete='cascade'
required=True
args: 'stock.location', 'Location'
name
Char
copy=False
default='/'
readonly=True
required=True
args: 'Name'
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
args: 'procurement.group', 'Procurement Group'
product_id
Many2one → product.product
domain=[('type', 'in', ['product', 'consu'])]
ondelete='cascade'
required=True
args: 'product.product', 'Product'
product_qty
Float
compute='_compute_product_qty'
copy=False
digits=dp.get_precision('Product Unit of Measure')
help='Quantity in the default UoM of the product'
store=True
args: 'Real Quantity'
product_uom_id
Many2one → product.uom
default=<expr>
required=True
args: 'product.uom', 'Product Unit of Measure'
product_uom_qty
Float
digits=dp.get_precision('Product Unit of Measure')
help='Quantity, specified in the unit of measure indicated in the request.'
required=True
args: 'Quantity'
route_id
Many2one → stock.location.route
domain="[('id', 'in', route_ids)]"
ondelete='restrict'
string='Route'
args: 'stock.location.route'
route_ids
Many2many → stock.location.route
compute='_compute_route_ids'
readonly=True
string='Route'
args: 'stock.location.route'
warehouse_id
Many2one → stock.warehouse
ondelete='cascade'
required=True
args: 'stock.warehouse', 'Warehouse'
default_get(self, fields)
get_parents(self)
onchange_allow_virtual_location(self)
onchange_company_id(self)
onchange_location_id(self)
onchange_product_id(self)
onchange_warehouse_id(self)
allocated_product_qty
Float
copy=False
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Allocated Quantity'
company_id
Many2one → res.company
comodel_name='res.company'
readonly=True
related='stock_request_id.company_id'
store=True
string='Company'
open_product_qty
Float
compute='_compute_open_product_qty'
args: 'Open Quantity'
product_id
Many2one → product.product
comodel_name='product.product'
readonly=True
related='stock_request_id.product_id'
string='Product'
product_uom_id
Many2one → product.uom
comodel_name='product.uom'
readonly=True
related='stock_request_id.product_uom_id'
string='UoM'
requested_product_qty
Float
compute='_compute_requested_product_qty'
help='Quantity of the stock request allocated to the stock move, in the default UoM of the product'
args: 'Requested Quantity'
requested_product_uom_qty
Float
help='Quantity of the stock request allocated to the stock move, in the UoM of the Stock Request'
args: 'Requested Quantity (UoM)'
stock_move_id
Many2one → stock.move
comodel_name='stock.move'
ondelete='cascade'
required=True
string='Stock Move'
stock_request_id
Many2one → stock.request
comodel_name='stock.request'
ondelete='cascade'
required=True
string='Stock Request'
No public methods.
allow_virtual_location
Boolean
readonly=True
related='company_id.stock_request_allow_virtual_loc'
company_id
Many2one → res.company
default=<expr>
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'res.company', 'Company'
expected_date
Datetime
default=fields.Datetime.now
help='Date when you expect to receive the goods.'
index=True
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Expected Date'
location_id
Many2one → stock.location
domain=[('usage', 'in', ['internal', 'transit'])]
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.location', 'Location'
move_ids
One2many → stock.move
comodel_name='stock.move'
compute='_compute_move_ids'
readonly=True
string='Stock Moves'
name
Char
copy=False
default='/'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'Name'
picking_count
Integer
compute='_compute_picking_ids'
readonly=True
string='Delivery Orders'
picking_ids
One2many → stock.picking
compute='_compute_picking_ids'
readonly=True
string='Pickings'
args: 'stock.picking'
picking_policy
Selection
default='direct'
readonly=True
required=True
states={'draft': [('readonly', False)]}
string='Shipping Policy'
args: [('direct', 'Receive each product when available'), ('one', 'Receive all products at once')]
procurement_group_id
Many2one → procurement.group
help='Moves created through this stock request will be put in this procurement group. If none is given, the moves generated by procurement rules will be grouped into one big picking.'
readonly=True
states={'draft': [('readonly', False)]}
args: 'procurement.group', 'Procurement Group'
requested_by
Many2one → res.users
default=<expr>
required=True
track_visibility='onchange'
args: 'res.users', 'Requested by'
state
Selection
copy=False
default='draft'
index=True
readonly=True
selection=REQUEST_STATES
string='Status'
track_visibility='onchange'
stock_request_count
Integer
compute='_compute_stock_request_count'
readonly=True
string='Stock requests'
stock_request_ids
One2many → stock.request
copy=True
inverse_name='order_id'
args: 'stock.request'
warehouse_id
Many2one → stock.warehouse
ondelete='cascade'
readonly=True
required=True
states={'draft': [('readonly', False)]}
args: 'stock.warehouse', 'Warehouse'
action_cancel(self)
action_confirm(self)
action_done(self)
action_draft(self)
action_view_stock_requests(self)
action_view_transfer(self)
change_childs(self)
check_done(self)
create(self, vals)
default_get(self, fields)
onchange_allow_virtual_location(self)
onchange_company_id(self)
onchange_expected_date(self)
onchange_location_id(self)
onchange_picking_policy(self)
onchange_procurement_group_id(self)
onchange_requested_by(self)
onchange_warehouse_id(self)
unlink(self)
No new fields.
Public methods (0)No public methods.