Repository
OCA/stock-logistics-request · module folder · Try on Runboat
Module version
1.0.1
Category
Warehouse Management
Folder size
1.49 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/stock-logistics-request
Last tracking update
2026-08-07 09:06:36
Authors
Odoo Community Association (OCA), ForgeFlow
Maintainers
Odoo Community Association (OCA), ForgeFlow
Committers
Kiril Vangelovski, LauraCForgeFlow, Weblate, OCA-git-bot, oca-ci
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
stock_request_purchase
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.

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
res_config_settings_view_form res.config.settings.view.form.inherit.stock_request res.config.settings form 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 form Inherits stock.view_move_form
view_picking_form stock.picking.form stock.picking form 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
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (13)

New fields (2)
  • stock_request_allow_virtual_loc Boolean
    string='Allow Virtual locations on Stock Requests'
  • stock_request_check_available_first Boolean
    string='Check available stock first'
Public methods (0)

No public methods.

New fields (8)
  • 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'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • 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'
Public methods (1)
  • copy_data(self, default=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • 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'
Public methods (1)
  • action_view_stock_request(self)
    :return dict: dictionary value for created view

New fields (21)
  • 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
Public methods (16)
  • 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)
    @api.constrains('order_id', 'company_id')
  • check_order_expected_date(self)
    @api.constrains('order_id', 'expected_date')
  • check_order_location(self)
    @api.constrains('order_id', 'location_id')
  • check_order_picking_policy(self)
    @api.constrains('order_id', 'picking_policy')
  • check_order_reference_ids(self)
    @api.constrains('order_id', 'reference_ids')
  • check_order_requested_by(self)
    @api.constrains('order_id', 'requested_by')
  • check_order_warehouse_id(self)
    @api.constrains('order_id', 'warehouse_id')
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)

New fields (13)
  • 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'
Public methods (6)
  • default_get(self, fields)
    @api.model
  • get_parents(self)
  • onchange_company_id(self)
    @api.onchange('company_id')
    Sets a default warehouse when the company is changed.
  • onchange_location_id(self)
    @api.onchange('location_id')
  • onchange_product_id(self)
    @api.onchange('product_id')
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
    Finds location id for changed warehouse.

New fields (9)
  • 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'
Public methods (0)

No public methods.

New fields (17)
  • 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'
Public methods (18)
  • 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)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
  • get_parents(self)
  • onchange_company_id(self)
    @api.onchange('company_id')
  • onchange_expected_date(self)
    @api.onchange('expected_date')
  • onchange_location_id(self)
    @api.onchange('location_id')
  • onchange_picking_policy(self)
    @api.onchange('picking_policy')
  • onchange_reference_ids(self)
    @api.onchange('reference_ids')
  • onchange_requested_by(self)
    @api.onchange('requested_by')
  • onchange_warehouse_id(self)
    @api.onchange('warehouse_id')
  • unlink(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • run(self, procurements, raise_user_error=True)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…