Repository
odoo/odoo · module folder
Module version
1.0
Category
Supply Chain/Inventory
Folder size
3.3 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-08-15 22:44:14
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Raphael Collet, Thibault Delavallée, Odoo Translation Bot, Arnold Moyaux, Julien Castiaux, Victor Feyens, William Henrotin, svs-odoo, Rémy Voet (ryv), Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, David (dafr), luvi, Renaud Thiry, Djamel Touati, Pieter Claeys (clpi), Dylan Kiss (dyki), micheledic, lase@odoo.com, Quentin Wolfs, Bruno Boi (boi), kcv-odoo, nihp-odoo, Quang Nguyen, Mohammad Abdulmoneim, dhha-odoo, Pierre Pulinckx (PIPU), Mohammad Abdulmoneim (abdu), djameltouati, Bastien PIERRE, Michaël Mattiello, MaximeNoirhomme, chha-odoo, Krzysztof Magusiak (krma), AllePilli, Lulu Grimalkin (lugr), rare-odoo, Lancelot Semal, saurabh, jodh-odoo
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
delivery_driver_stock_picking_batch, delivery_stock_picking_batch, l10n_ro_edi_stock, l10n_ro_edi_stock_batch, stock_fleet
Description
This module adds the batch transfer option in warehouse management
==================================================================
    

Code Analysis

Views touched (23)
XML IDNameModelTypeStatus
stock_add_to_wave_form stock.add.to.wave.form stock.add.to.wave form New
stock_move_line_view_search_inherit_stock_picking_batch stock.move.line.search.stock_picking_batch stock.move.line search Inherits stock.stock_move_line_view_search
stock_picking_batch.report_picking_batch stock_picking_batch.report_picking_batch ir.ui.view qweb New
stock_picking_batch_calendar stock.picking.batch.calendar stock.picking.batch calendar New
stock_picking_batch_filter stock.picking.batch.filter stock.picking.batch search New
stock_picking_batch_form stock.picking.batch.form stock.picking.batch form New
stock_picking_batch_kanban stock.picking.batch.kanban stock.picking.batch kanban New
stock_picking_batch_tree stock.picking.batch.list stock.picking.batch list New
stock_picking_form_inherit stock.picking.form.inherit stock.picking form Inherits stock.view_picking_form
stock_picking_to_batch_form stock.picking.to.batch.form stock.picking.to.batch form New
stock_picking_type_kanban_batch picking.type.kanban.batch stock.picking.type kanban Inherits stock.stock_picking_type_kanban
stock_picking_view_batch_tree_ref stock.picking.view.list.inherit.stock.picking.batch stock.picking list Inherits stock.vpicktree
stock_picking_wave_kanban stock.picking.wave.kanban stock.picking.batch kanban Inherits stock_picking_batch.stock_picking_batch_kanban
stock_picking_wave_tree stock.picking.wave.list stock.picking.batch list Inherits stock_picking_batch.stock_picking_batch_tree
view_move_line_tree stock_picking_batch.move.line.list stock.move.line list New
view_move_line_tree_detailed_wave stock_picking_wave.move.line.list.wave stock.move.line list Inherits stock.view_move_line_tree_detailed
view_move_line_tree_inherit_stock_picking_batch stock.move.line.list.stock_picking_batch stock.move.line list Inherits stock.view_move_line_tree
view_picking_form_inherited stock_picking_batch.picking.form stock.picking form Inherits stock.view_picking_form
view_picking_internal_search_inherit stock.picking.internal.search.inherit stock.picking search Inherits stock.view_picking_internal_search
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking search Inherits stock.view_picking_internal_search
view_picking_move_tree_inherited stock_picking_batch.picking.move.list stock.move list Inherits stock.view_picking_move_tree
view_picking_type_form_inherit stock.picking.type.form.inherit stock.picking.type form Inherits stock.view_picking_type_form
vpicktree stock.picking.list.inherit.stock.picking.batch stock.picking list Inherits stock.vpicktree
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (8)

New fields (5)
  • line_ids Many2many → stock.move.line
    args: 'stock.move.line'
  • mode Selection
    default='existing' args: [('existing', 'an existing wave transfer'), ('new', 'a new wave transfer')]
  • picking_ids Many2many → stock.picking
    args: 'stock.picking'
  • user_id Many2one → res.users
    string='Responsible' args: 'res.users'
  • wave_id Many2one → stock.picking.batch
    domain="[('is_wave', '=', True), ('state', 'in', ('draft', 'in_progress'))]" string='Wave Transfer' args: 'stock.picking.batch'
Public methods (2)
  • attach_pickings(self)
  • default_get(self, fields)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • action_show_details(self)
  • write(self, vals)

New fields (1)
  • batch_id Many2one
    related='picking_id.batch_id'
Public methods (1)
  • action_open_add_to_wave(self)

New fields (2)
  • batch_id Many2one → stock.picking.batch
    check_company=True copy=False help='Batch associated to this transfer' index=True string='Batch Transfer' args: 'stock.picking.batch'
  • batch_sequence Integer
    string='Sequence'
Public methods (8)
  • action_add_operations(self)
  • action_cancel(self)
  • action_confirm(self)
  • action_view_batch(self)
  • assign_batch_user(self, user_id)
  • button_validate(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (20)
  • allowed_picking_ids One2many → stock.picking
    compute='_compute_allowed_picking_ids' args: 'stock.picking'
  • company_id Many2one → res.company
    default=<expr> index=True readonly=True required=True string='Company' args: 'res.company'
  • description Char
    args: 'Description'
  • estimated_shipping_volume Float
    compute='_compute_estimated_shipping_capacity' digits='Product Unit' args: 'shipping_volume'
  • estimated_shipping_weight Float
    compute='_compute_estimated_shipping_capacity' digits='Product Unit' args: 'shipping_weight'
  • is_wave Boolean
    args: 'This batch is a wave'
  • move_ids One2many → stock.move
    compute='_compute_move_ids' string='Stock moves' args: 'stock.move'
  • move_line_ids One2many → stock.move.line
    compute='_compute_move_line_ids' inverse='_set_move_line_ids' search='_search_move_line_ids' string='Stock move lines' args: 'stock.move.line'
  • name Char
    copy=False default=<expr> readonly=True required=True string='Batch Transfer'
  • picking_ids One2many → stock.picking
    check_company=True domain="[('id', 'in', allowed_picking_ids)]" help='List of transfers associated to this batch' string='Transfers' args: 'stock.picking', 'batch_id'
  • picking_type_code Selection
    related='picking_type_id.code'
  • picking_type_id Many2one → stock.picking.type
    check_company=True copy=False index=True args: 'stock.picking.type', 'Operation Type'
  • properties Properties
    copy=True definition='picking_type_id.batch_properties_definition' args: 'Properties'
  • scheduled_date Datetime
    compute='_compute_scheduled_date' copy=False help='Scheduled date for the transfers to be processed.\n - If manually set then scheduled date for all transfers in batch will automatically update to this date.\n - If not manually changed and transfers are added/removed/updated then this will be their earliest scheduled date\n but this scheduled date will not be set for all transfers in batch.' readonly=False store=True args: 'Scheduled Date'
  • show_allocation Boolean
    compute='_compute_show_allocation' string='Show Allocation Button'
  • show_check_availability Boolean
    compute='_compute_move_ids' string='Show Check Availability'
  • show_lots_text Boolean
    compute='_compute_show_lots_text'
  • state Selection
    compute='_compute_state' copy=False default='draft' index=True readonly=True required=True store=True tracking=True args: [('draft', 'Draft'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • user_id Many2one → res.users
    check_company=True string='Responsible' tracking=True args: 'res.users'
  • warehouse_id Many2one → stock.warehouse
    related='picking_type_id.warehouse_id' args: 'stock.warehouse'
Public methods (14)
  • action_assign(self)
  • action_batch_detailed_operations(self)
  • action_cancel(self)
  • action_confirm(self)
    Sanity checks, confirm the pickings and mark the batch as confirmed.
  • action_done(self)
  • action_merge(self)
  • action_open_label_layout(self)
  • action_print(self)
  • action_put_in_pack(self, *, package_id=False, package_type_id=False, package_name=False)
    Action to put move lines with 'Done' quantities into a new pack This method follows same logic to stock.picking.
  • action_see_packages(self)
  • action_view_reception_report(self)
  • create(self, vals_list)
    @api.model_create_multi
  • onchange_scheduled_date(self)
    @api.onchange('scheduled_date')
  • write(self, vals)

New fields (5)
  • batch_id Many2one → stock.picking.batch
    domain="[('is_wave', '=', False), ('state', 'in', ('draft', 'in_progress'))]" string='Batch Transfer' args: 'stock.picking.batch'
  • description Char
    args: 'Description'
  • is_create_draft Boolean
    help='When checked, create the batch in draft status' string='Draft'
  • mode Selection
    default='new' args: [('existing', 'an existing batch transfer'), ('new', 'a new batch transfer')]
  • user_id Many2one → res.users
    string='Responsible' args: 'res.users'
Public methods (1)
  • attach_pickings(self)

New fields (16)
  • auto_batch Boolean
    help='Automatically put pickings into batches as they are confirmed when possible.' args: 'Automatic Batches'
  • batch_auto_confirm Boolean
    default=True args: 'Auto-confirm'
  • batch_group_by_dest_loc Boolean
    help='Automatically group batches by their destination location.' args: 'Group by Destination Location'
  • batch_group_by_destination Boolean
    help='Automatically group batches by destination country.' args: 'Destination Country'
  • batch_group_by_partner Boolean
    help='Automatically group batches by contacts.' args: 'Contact'
  • batch_group_by_src_loc Boolean
    help='Automatically group batches by their source location.' args: 'Group by Source Location'
  • batch_max_lines Integer
    help="A transfer will not be automatically added to batches that will exceed this number of lines if the transfer is added to it.\nLeave this value as '0' if no line limit." args: 'Maximum lines'
  • batch_max_pickings Integer
    help="A transfer will not be automatically added to batches that will exceed this number of transfers.\nLeave this value as '0' if no transfer limit." args: 'Maximum transfers'
  • batch_properties_definition PropertiesDefinition
    args: 'Batch Properties'
  • count_picking_batch Integer
    compute='_compute_picking_count'
  • count_picking_wave Integer
    compute='_compute_picking_count'
  • wave_category_ids Many2many → product.category
    help='Categories to consider when grouping waves.' string='Wave Product Categories' args: 'product.category'
  • wave_group_by_category Boolean
    help='Split transfers by product category, then group transfers that have the same product category.' args: 'Product Category'
  • wave_group_by_location Boolean
    help='Split transfers by defined locations, then group transfers with the same location.' args: 'Location'
  • wave_group_by_product Boolean
    help='Split transfers by product then group transfers that have the same product.' args: 'Product'
  • wave_location_ids Many2many → stock.location
    domain="[('usage', '=', 'internal')]" help='Locations to consider when grouping waves.' string='Wave Locations' args: 'stock.location'
Public methods (2)
  • action_batch(self)
  • action_wave(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…