Warehouse Management: Batch Transfer

stock_picking_batch
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/stock_picking_batch
VERSION
VERSION 1.0
CATEGORY
CATEGORYSupply Chain/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Thibault Delavallée, Arnold Moyaux, Julien Castiaux, Victor Feyens, William Henrotin, svs-odoo, Tiffany Chang (tic), Rémy Voet (ryv), 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, Michaël Mattiello, Bastien PIERRE, chha-odoo, Krzysztof Magusiak (krma), AllePilli, rare-odoo, Lulu Grimalkin (lugr), Lancelot Semal, saurabh, jodh-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - mail
    - 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 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 xpath 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 div 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 xpath Inherits stock.stock_picking_type_kanban
stock_picking_view_batch_tree_ref stock.picking.view.list.inherit.stock.picking.batch stock.picking xpath Inherits stock.vpicktree
stock_picking_wave_kanban stock.picking.wave.kanban stock.picking.batch xpath Inherits stock_picking_batch.stock_picking_batch_kanban
stock_picking_wave_tree stock.picking.wave.list stock.picking.batch xpath 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 xpath 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 xpath Inherits stock.view_move_line_tree
view_picking_form_inherited stock_picking_batch.picking.form stock.picking xpath Inherits stock.view_picking_form
view_picking_internal_search_inherit stock.picking.internal.search.inherit stock.picking filter Inherits stock.view_picking_internal_search
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking xpath Inherits stock.view_picking_internal_search
view_picking_move_tree_inherited stock_picking_batch.picking.move.list stock.move xpath Inherits stock.view_picking_move_tree
view_picking_type_form_inherit stock.picking.type.form.inherit stock.picking.type xpath Inherits stock.view_picking_type_form
vpicktree stock.picking.list.inherit.stock.picking.batch stock.picking field Inherits stock.vpicktree
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.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/stock_picking_batch
VERSION
VERSION 1.0
CATEGORY
CATEGORYInventory/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Xavier Morel, Aaron Bohy, Yannick Tivisse, Odoo Online, Arnold Moyaux, William Henrotin, svs-odoo, Prakash Prajapati, Tiffany Chang (tic), Gorash, snd, David (dafr), JF Aubert, Vincent Larcin, Louis Wicket (wil), Walid, clesgow, Djamel Touati, Dylan Kiss (dyki), micheledic, David Vidal, Paweł Fertyk, omra-odoo, lase@odoo.com, Maryam Kia, vava-odoo, Bruno Boi (boi), adsh-odoo, sami odoo, Louis (wil), Quang Nguyen, mano-odoo, Mohammad Abdulmoneim, dhha-odoo, Pierre Pulinckx (PIPU), djameltouati, Bastien PIERRE, plha-odoo, AllePilli, Lancelot Semal, saurabh, jodh-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:52
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - mail
    - 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 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 xpath 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 div 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 xpath Inherits stock.stock_picking_type_kanban
stock_picking_view_batch_tree_ref stock.picking.view.list.inherit.stock.picking.batch stock.picking xpath Inherits stock.vpicktree
stock_picking_wave_kanban stock.picking.wave.kanban stock.picking.batch xpath Inherits stock_picking_batch.stock_picking_batch_kanban
stock_picking_wave_tree stock.picking.wave.list stock.picking.batch xpath 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 xpath 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 xpath Inherits stock.view_move_line_tree
view_picking_form_inherited stock_picking_batch.picking.form stock.picking xpath Inherits stock.view_picking_form
view_picking_internal_search_inherit stock.picking.internal.search.inherit stock.picking filter Inherits stock.view_picking_internal_search
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking xpath Inherits stock.view_picking_internal_search
view_picking_move_tree_inherited stock_picking_batch.picking.move.list stock.move xpath Inherits stock.view_picking_move_tree
view_picking_type_form_inherit stock.picking.type.form.inherit stock.picking.type xpath Inherits stock.view_picking_type_form
vpicktree stock.picking.list.inherit.stock.picking.batch stock.picking field Inherits stock.vpicktree
Models touched (9)

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_list)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

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

New fields (0)

No new fields.

Public methods (1)
  • action_done(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 of Measure' args: 'shipping_volume'
  • estimated_shipping_weight Float
    compute='_compute_estimated_shipping_capacity' digits='Product Unit of Measure' 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 (11)
  • action_assign(self)
  • action_cancel(self)
  • action_confirm(self)
    Sanity checks, confirm the pickings and mark the batch as confirmed.
  • action_done(self)
  • action_open_label_layout(self)
  • action_print(self)
  • action_put_in_pack(self)
    Action to put move lines with 'Done' quantities into a new pack This method follows same logic to stock.picking.
  • 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 (1)
  • action_batch(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/stock_picking_batch
VERSION
VERSION 1.0
CATEGORY
CATEGORYInventory/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Denis Ledoux, Yannick Tivisse, Odoo Online, Arnold Moyaux, Victor Feyens, William Henrotin, svs-odoo, Adrien Widart, Touati Djamel (otd), Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, snd, David (dafr), JF Aubert, yhu-odoo, Walid HANNICHE (waha), Louis Wicket (wil), Walid, Adrien Widart (awt), clesgow, Djamel Touati, Dylan Kiss (dyki), Martin Maes, micheledic, Paweł Fertyk, lase@odoo.com, Julien Carion (juca), adsh-odoo, Louis (wil), Quang Nguyen, Mohammad Abdulmoneim, dhha-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:04
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - mail
    - 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 adds the batch transfer option in warehouse management
==================================================================
    

Code Analysis

Views touched (21)
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 xpath 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_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.tree stock.picking.batch tree New
stock_picking_form_inherit stock.picking.form.inherit stock.picking div 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 xpath Inherits stock.stock_picking_type_kanban
stock_picking_wave_kanban stock.picking.wave.kanban stock.picking.batch xpath Inherits stock_picking_batch.stock_picking_batch_kanban
stock_picking_wave_tree stock.picking.wave.tree stock.picking.batch xpath Inherits stock_picking_batch.stock_picking_batch_tree
view_move_line_tree stock_picking_batch.move.line.tree stock.move.line tree New
view_move_line_tree_detailed_wave stock_picking_wave.move.line.tree.wave stock.move.line xpath Inherits stock.view_move_line_tree_detailed
view_move_line_tree_inherit_stock_picking_batch stock.move.line.tree.stock_picking_batch stock.move.line xpath Inherits stock.view_move_line_tree
view_picking_form_inherited stock_picking_batch.picking.form stock.picking xpath Inherits stock.view_picking_form
view_picking_internal_search_inherit stock.picking.internal.search.inherit stock.picking filter Inherits stock.view_picking_internal_search
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking xpath Inherits stock.view_picking_internal_search
view_picking_move_tree_inherited stock_picking_batch.picking.move.tree stock.move xpath Inherits stock.view_picking_move_tree
view_picking_type_form_inherit stock.picking.type.form.inherit stock.picking.type xpath Inherits stock.view_picking_type_form
vpicktree_inherit_stock_picking_batch stock.picking.tree stock.picking xpath Inherits stock.vpicktree
Models touched (9)

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_list)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

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

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)

New fields (1)
  • 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'
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 (17)
  • 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'
  • 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='New' 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'
  • 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_clear_qty_button Boolean
    compute='_compute_show_qty_button'
  • show_lots_text Boolean
    compute='_compute_show_lots_text'
  • show_set_qty_button Boolean
    compute='_compute_show_qty_button'
  • 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'
Public methods (11)
  • action_assign(self)
  • action_cancel(self)
  • action_confirm(self)
    Sanity checks, confirm the pickings and mark the batch as confirmed.
  • action_done(self)
  • action_open_label_layout(self)
  • action_print(self)
  • action_put_in_pack(self)
    Action to put move lines with 'Done' quantities into a new pack This method follows same logic to stock.picking.
  • 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 (4)
  • batch_id Many2one → stock.picking.batch
    domain="[('is_wave', '=', False), ('state', 'in', ('draft', 'in_progress'))]" string='Batch Transfer' args: 'stock.picking.batch'
  • 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 (10)
  • 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: '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: '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 per batch'
  • 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 per batch'
  • count_picking_batch Integer
    compute='_compute_picking_count'
  • count_picking_wave Integer
    compute='_compute_picking_count'
Public methods (2)
  • get_action_picking_tree_batch(self)
  • get_action_picking_tree_wave(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/stock_picking_batch
VERSION
VERSION 1.0
CATEGORY
CATEGORYInventory/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Denis Ledoux, Yannick Tivisse, Arnold Moyaux, Romeo Fragomeli, Victor Feyens, William Henrotin, svs-odoo, Adrien Widart, Touati Djamel (otd), Tiffany Chang (tic), Rémy Voet (ryv), roen-odoo, Bruno-brsy, william-andre, yhu-odoo, Walid HANNICHE (waha), Iryna Vyshnevska, Louis Wicket (wil), Walid, Adrien Widart (awt), clesgow, Djamel Touati, Paweł Fertyk, Ahmed Khalaf (ahkh), Mahdi Cheikh Rouhou (macr), boan-odoo, debu-odoo, Martin Trigaux (mat), Quang Nguyen
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - mail
    - 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 adds the batch transfer option in warehouse management
==================================================================
    

Code Analysis

Views touched (22)
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 xpath 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_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.tree stock.picking.batch tree New
stock_picking_form_inherit stock.picking.form.inherit stock.picking div 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 xpath Inherits stock.stock_picking_type_kanban
stock_picking_wave_kanban stock.picking.wave.kanban stock.picking.batch xpath Inherits stock_picking_batch.stock_picking_batch_kanban
stock_picking_wave_tree stock.picking.wave.tree stock.picking.batch xpath Inherits stock_picking_batch.stock_picking_batch_tree
view_move_line_tree stock_picking_batch.move.line.tree stock.move.line tree New
view_move_line_tree_detailed_wave stock_picking_wave.move.line.tree.wave stock.move.line xpath Inherits stock.view_move_line_tree_detailed
view_move_line_tree_inherit_stock_picking_batch stock.move.line.tree.stock_picking_batch stock.move.line xpath Inherits stock.view_move_line_tree
view_picking_form_inherited stock_picking_batch.picking.form stock.picking xpath Inherits stock.view_picking_form
view_picking_internal_search_inherit stock.picking.internal.search.inherit stock.picking filter Inherits stock.view_picking_internal_search
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking xpath Inherits stock.view_picking_internal_search
view_picking_move_tree_inherited stock_picking_batch.picking.move.tree stock.move xpath Inherits stock.view_picking_move_tree
view_picking_tree_batch stock_picking_batch.picking.tree.batch stock.picking tree New
view_picking_type_form_inherit stock.picking.type.form.inherit stock.picking.type xpath Inherits stock.view_picking_type_form
vpicktree_inherit_stock_picking_batch stock.picking.tree stock.picking xpath Inherits stock.vpicktree
Models touched (9)

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_list)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

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

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)

New fields (1)
  • batch_id Many2one → stock.picking.batch
    check_company=True copy=False help='Batch associated to this transfer' index=True states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} string='Batch Transfer' args: 'stock.picking.batch'
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 (18)
  • 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'
  • 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_ids' inverse='_set_move_line_ids' readonly=True states={'draft': [('readonly', False)], 'in_progress': [('readonly', False)]} string='Stock move lines' args: 'stock.move.line'
  • name Char
    copy=False default='New' 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' readonly=True states={'draft': [('readonly', False)], 'in_progress': [('readonly', False)]} 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 readonly=True states={'draft': [('readonly', False)]} args: 'stock.picking.type', 'Operation Type'
  • 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 states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} 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_clear_qty_button Boolean
    compute='_compute_show_qty_button'
  • show_lots_text Boolean
    compute='_compute_show_lots_text'
  • show_set_qty_button Boolean
    compute='_compute_show_qty_button'
  • show_validate Boolean
    compute='_compute_show_validate' string='Show Validate Button'
  • 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 readonly=True states={'draft': [('readonly', False)], 'in_progress': [('readonly', False)]} string='Responsible' tracking=True args: 'res.users'
Public methods (14)
  • action_assign(self)
  • action_cancel(self)
  • action_clear_quantities_to_zero(self)
  • action_confirm(self)
    Sanity checks, confirm the pickings and mark the batch as confirmed.
  • action_done(self)
  • action_open_label_layout(self)
  • action_print(self)
  • action_put_in_pack(self)
    Action to put move lines with 'Done' quantities into a new pack This method follows same logic to stock.picking.
  • action_set_quantities_to_reservation(self)
  • action_view_reception_report(self)
  • create(self, vals_list)
    @api.model_create_multi
  • onchange(self, values, field_name, field_onchange)
    Override onchange to NOT to update all scheduled_date on pickings when scheduled_date on batch is updated by the change of scheduled_date on pickings.
  • onchange_scheduled_date(self)
    @api.onchange('scheduled_date')
  • write(self, vals)

New fields (4)
  • batch_id Many2one → stock.picking.batch
    domain="[('is_wave', '=', False), ('state', 'in', ('draft', 'in_progress'))]" string='Batch Transfer' args: 'stock.picking.batch'
  • 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 (10)
  • 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: '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: '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 per batch'
  • 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 per batch'
  • count_picking_batch Integer
    compute='_compute_picking_count'
  • count_picking_wave Integer
    compute='_compute_picking_count'
Public methods (2)
  • get_action_picking_tree_batch(self)
  • get_action_picking_tree_wave(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/stock_picking_batch
VERSION
VERSION 1.0
CATEGORY
CATEGORYInventory/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Yannick Tivisse, Christophe Monniez, Arnold Moyaux, Xavier-Do, William Henrotin, svs-odoo, Adrien Widart, Touati Djamel (otd), Tiffany Chang (tic), Kevin Baptiste, roen-odoo, Bruno-brsy, william-andre, JF Aubert, yhu-odoo, Walid HANNICHE (waha), Iryna Vyshnevska, Walid, Djamel Touati, Paweł Fertyk, Ahmed Khalaf (ahkh)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - mail
    - 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
This module adds the batch transfer option in warehouse management
==================================================================
    

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
stock_add_to_wave_form stock.add.to.wave.form stock.add.to.wave form New
stock_picking_batch.report_picking_batch stock_picking_batch.report_picking_batch ir.ui.view qweb 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.tree stock.picking.batch tree New
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 xpath Inherits stock.stock_picking_type_kanban
stock_picking_wave_kanban stock.picking.wave.kanban stock.picking.batch xpath Inherits stock_picking_batch.stock_picking_batch_kanban
stock_picking_wave_tree stock.picking.wave.tree stock.picking.batch xpath Inherits stock_picking_batch.stock_picking_batch_tree
view_move_line_tree stock_picking_batch.move.line.tree stock.move.line tree New
view_move_line_tree_detailed_wave stock_picking_wave.move.line.tree.wave stock.move.line xpath Inherits stock.view_move_line_tree_detailed
view_picking_form_inherited stock_picking_batch.picking.form stock.picking xpath Inherits stock.view_picking_form
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking xpath Inherits stock.view_picking_internal_search
view_picking_move_tree_inherited stock_picking_batch.picking.move.tree stock.move xpath Inherits stock.view_picking_move_tree
view_picking_tree_batch stock_picking_batch.picking.tree.batch stock.picking tree New
vpicktree_inherit_stock_picking_batch stock.picking.tree stock.picking xpath Inherits stock.vpicktree
Models touched (9)

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
    help='Person responsible for this wave transfer' string='Responsible' args: 'res.users'
  • wave_id Many2one → stock.picking.batch
    domain="[('is_wave', '=', True), ('state', '!=', 'done')]" string='Wave Transfer' args: 'stock.picking.batch'
Public methods (2)
  • attach_pickings(self)
  • default_get(self, fields_list)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • process(self)
  • process_cancel_backorder(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

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

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)

New fields (1)
  • batch_id Many2one → stock.picking.batch
    check_company=True copy=False help='Batch associated to this transfer' states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} string='Batch Transfer' args: 'stock.picking.batch'
Public methods (3)
  • action_add_operations(self)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (16)
  • 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'
  • 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_ids' inverse='_set_move_line_ids' readonly=True states={'draft': [('readonly', False)], 'in_progress': [('readonly', False)]} string='Stock move lines' args: 'stock.move.line'
  • name Char
    copy=False default='New' help='Name of the batch transfer' 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' readonly=True states={'draft': [('readonly', False)], 'in_progress': [('readonly', False)]} 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 readonly=True states={'draft': [('readonly', False)]} args: 'stock.picking.type', 'Operation Type'
  • 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 states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} store=True args: 'Scheduled Date'
  • show_allocation Boolean
    compute='_compute_show_allocation' help='Technical Field used to decide whether the button "Allocation" should be displayed.'
  • show_check_availability Boolean
    compute='_compute_move_ids' help='Technical field used to compute whether the check availability button should be shown.'
  • show_lots_text Boolean
    compute='_compute_show_lots_text'
  • show_validate Boolean
    compute='_compute_show_validate' help='Technical field used to decide whether the validate button should be shown.'
  • state Selection
    compute='_compute_state' copy=False default='draft' 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 help='Person responsible for this batch transfer' readonly=True states={'draft': [('readonly', False)], 'in_progress': [('readonly', False)]} string='Responsible' tracking=True args: 'res.users'
Public methods (13)
  • action_assign(self)
  • action_cancel(self)
  • action_confirm(self)
    Sanity checks, confirm the pickings and mark the batch as confirmed.
  • action_done(self)
  • action_open_label_layout(self)
  • action_print(self)
  • action_put_in_pack(self)
    Action to put move lines with 'Done' quantities into a new pack This method follows same logic to stock.picking.
  • action_set_quantities_to_reservation(self)
  • action_view_reception_report(self)
  • create(self, vals)
    @api.model
  • onchange(self, values, field_name, field_onchange)
    Override onchange to NOT to update all scheduled_date on pickings when scheduled_date on batch is updated by the change of scheduled_date on pickings.
  • onchange_scheduled_date(self)
    @api.onchange('scheduled_date')
  • write(self, vals)

New fields (3)
  • batch_id Many2one → stock.picking.batch
    domain="[('state', '=', 'draft')]" string='Batch Transfer' args: 'stock.picking.batch'
  • mode Selection
    default='existing' args: [('existing', 'an existing batch transfer'), ('new', 'a new batch transfer')]
  • user_id Many2one → res.users
    help='Person responsible for this batch transfer' string='Responsible' args: 'res.users'
Public methods (1)
  • attach_pickings(self)

New fields (2)
  • count_picking_batch Integer
    compute='_compute_picking_count'
  • count_picking_wave Integer
    compute='_compute_picking_count'
Public methods (2)
  • get_action_picking_tree_batch(self)
  • get_action_picking_tree_wave(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/stock_picking_batch
VERSION
VERSION 1.0
CATEGORY
CATEGORYInventory/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Xavier Morel, Simon Lejeune, Nicolas Martinelli, Aaron Bohy, Barad Mahendra, Yannick Tivisse, Xavier-Do, Victor Feyens, Sébastien Theys, svs-odoo, Adrien Widart, Touati Djamel (otd), Tiffany Chang (tic), Rémy Voet (ryv), Pratima Gupta, roen-odoo, yhu-odoo, Iryna Vyshnevska
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - mail
    - 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
This module adds the batch transfer option in warehouse management
==================================================================
    

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
stock_picking_batch.report_picking_batch stock_picking_batch.report_picking_batch ir.ui.view qweb 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.tree stock.picking.batch tree New
stock_picking_to_batch_form stock.picking.to.batch.form stock.picking.to.batch form New
view_move_line_tree stock_picking_batch.move.line.tree stock.move.line tree New
view_picking_form_inherited stock_picking_batch.picking.form stock.picking xpath Inherits stock.view_picking_form
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking xpath Inherits stock.view_picking_internal_search
view_picking_move_tree_inherited stock_picking_batch.picking.move.tree stock.move xpath Inherits stock.view_picking_move_tree
vpicktree_inherit_stock_picking_batch stock.picking.tree stock.picking xpath Inherits stock.vpicktree
Models touched (5)

New fields (0)

No new fields.

Public methods (2)
  • process(self)
  • process_cancel_backorder(self)

New fields (0)

No new fields.

Public methods (1)
  • action_done(self)

New fields (1)
  • batch_id Many2one → stock.picking.batch
    check_company=True copy=False help='Batch associated to this transfer' states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} string='Batch Transfer' args: 'stock.picking.batch'
Public methods (2)
  • create(self, vals)
    @api.model
  • write(self, vals)

New fields (11)
  • 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'
  • 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_ids' inverse='_set_move_line_ids' readonly=True states={'draft': [('readonly', False)], 'in_progress': [('readonly', False)]} string='Stock move lines' args: 'stock.move.line'
  • name Char
    copy=False default='New' help='Name of the batch transfer' 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' readonly=True states={'draft': [('readonly', False)], 'in_progress': [('readonly', False)]} string='Transfers' args: 'stock.picking', 'batch_id'
  • picking_type_id Many2one → stock.picking.type
    check_company=True copy=False readonly=True states={'draft': [('readonly', False)]} args: 'stock.picking.type', 'Operation Type'
  • 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 states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} store=True args: 'Scheduled Date'
  • show_check_availability Boolean
    compute='_compute_move_ids' help='Technical field used to compute whether the check availability button should be shown.'
  • state Selection
    compute='_compute_state' copy=False default='draft' 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 help='Person responsible for this batch transfer' readonly=True states={'draft': [('readonly', False)], 'in_progress': [('readonly', False)]} string='Responsible' tracking=True args: 'res.users'
Public methods (11)
  • action_assign(self)
  • action_cancel(self)
  • action_confirm(self)
    Sanity checks, confirm the pickings and mark the batch as confirmed.
  • action_done(self)
  • action_print(self)
  • action_put_in_pack(self)
    Action to put move lines with 'Done' quantities into a new pack This method follows same logic to stock.picking.
  • create(self, vals)
    @api.model
  • onchange(self, values, field_name, field_onchange)
    Override onchange to NOT to update all scheduled_date on pickings when scheduled_date on batch is updated by the change of scheduled_date on pickings.
  • onchange_scheduled_date(self)
    @api.onchange('scheduled_date')
  • unlink(self)
  • write(self, vals)

New fields (3)
  • batch_id Many2one → stock.picking.batch
    domain="[('state', '=', 'draft')]" string='Batch Transfer' args: 'stock.picking.batch'
  • mode Selection
    default='existing' args: [('existing', 'an existing batch transfer'), ('new', 'a new batch transfer')]
  • user_id Many2one → res.users
    help='Person responsible for this batch transfer' string='Responsible' args: 'res.users'
Public methods (1)
  • attach_pickings(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/stock_picking_batch
VERSION
VERSION 1.0
CATEGORY
CATEGORYOperations/Inventory
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Thibault Delavallée, Christophe Simonis, Xavier Morel, Simon Lejeune, Nicolas Martinelli, Damien Bouvy, Yannick Tivisse, Martin Geubelle, Nans Lefebvre, Alexandre Kühn, Adrian Torres, XavierDo, Xavier-Do, William Henrotin, Sébastien Theys, svs-odoo, Adrien Widart, Prakash Prajapati, Nicolas Galler, Arnaud Baes, roen-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module adds the batch transfer option in warehouse management
==================================================================
    

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
stock_picking_batch.report_picking_batch stock_picking_batch.report_picking_batch ir.ui.view qweb 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.tree stock.picking.batch tree New
stock_picking_to_batch_form stock.picking.to.batch.form stock.picking.to.batch form New
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking xpath Inherits stock.view_picking_internal_search
vpicktree_inherit_stock_picking_batch stock.picking.tree stock.picking xpath Inherits stock.vpicktree
Models touched (5)

New fields (0)

No new fields.

Public methods (2)
  • process(self)
  • process_cancel_backorder(self)

New fields (1)
  • pick_to_backorder_ids Many2many → stock.picking
    help='Picking to backorder' args: 'stock.picking'
Public methods (1)
  • process(self)

New fields (1)
  • batch_id Many2one → stock.picking.batch
    check_company=True copy=False help='Batch associated to this transfer' states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} string='Batch Transfer' args: 'stock.picking.batch'
Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    default=<expr> index=True readonly=True required=True string='Company' args: 'res.company'
  • name Char
    copy=False default='New' help='Name of the batch transfer' readonly=True required=True string='Batch Transfer'
  • picking_ids One2many → stock.picking
    domain="[('company_id', '=', company_id), ('state', 'not in', ('done', 'cancel'))]" help='List of transfers associated to this batch' string='Transfers' args: 'stock.picking', 'batch_id'
  • state Selection
    copy=False default='draft' readonly=True required=True tracking=True args: [('draft', 'Draft'), ('in_progress', 'In progress'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • user_id Many2one → res.users
    check_company=True help='Person responsible for this batch transfer' string='Responsible' tracking=True args: 'res.users'
Public methods (5)
  • cancel_picking(self)
  • confirm_picking(self)
  • create(self, vals)
    @api.model
  • done(self)
  • print_picking(self)

New fields (1)
  • batch_id Many2one → stock.picking.batch
    string='Batch Transfer' args: 'stock.picking.batch'
Public methods (1)
  • attach_pickings(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/stock_picking_batch
VERSION
VERSION 1.0
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Christophe Simonis, Goffin Simon, Nicolas Martinelli, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Pierre Masereel, RomainLibert, Arnold Moyaux, XavierDo, Xavier-Do, Andrea Grazioso (agr-odoo)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module adds the batch picking option in warehouse management
=================================================================
    

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
stock_picking_batch.report_picking_batch stock_picking_batch.report_picking_batch ir.ui.view qweb 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.tree stock.picking.batch tree New
stock_picking_to_batch_form stock.picking.to.batch.form stock.picking.to.batch form New
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking xpath Inherits stock.view_picking_internal_search
vpicktree_inherit_stock_picking_batch stock.picking.tree stock.picking xpath Inherits stock.vpicktree
Models touched (4)

New fields (1)
  • pick_to_backorder_ids Many2many → stock.picking
    help='Picking to backorder' args: 'stock.picking'
Public methods (1)
  • process(self)
    @api.multi

New fields (1)
  • batch_id Many2one → stock.picking.batch
    copy=False help='Batch associated to this picking' oldname='wave_id' states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} string='Batch Picking' args: 'stock.picking.batch'
Public methods (0)

No public methods.

New fields (4)
  • name Char
    copy=False default='New' help='Name of the batch picking' required=True string='Batch Picking Name'
  • picking_ids One2many → stock.picking
    help='List of picking associated to this batch' string='Pickings' args: 'stock.picking', 'batch_id'
  • state Selection
    copy=False default='draft' required=True track_visibility='onchange' args: [('draft', 'Draft'), ('in_progress', 'Running'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • user_id Many2one → res.users
    help='Person responsible for this batch picking' string='Responsible' track_visibility='onchange' args: 'res.users'
Public methods (5)
  • cancel_picking(self)
    @api.multi
  • confirm_picking(self)
    @api.multi
  • create(self, vals)
    @api.model
  • done(self)
    @api.multi
  • print_picking(self)
    @api.multi

New fields (1)
  • batch_id Many2one → stock.picking.batch
    oldname='wave_id' string='Batch Picking' args: 'stock.picking.batch'
Public methods (1)
  • attach_pickings(self)
    @api.multi
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/stock_picking_batch
VERSION
VERSION 1.0
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Christophe Simonis, Joren Van Onder, Simon Lejeune, Nicolas Martinelli, Wolfgang Taferner, qsm-odoo, Martin Geubelle, Odoo Online, amoyaux
WEBSITE
WEBSITEhttps://www.odoo.com/page/warehouse
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - decimal_precision
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - barcodes
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module adds the batch picking option in warehouse management
=================================================================
    

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
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.tree stock.picking.batch tree New
stock_picking_to_batch_form stock.picking.to.batch.form stock.picking.to.batch form New
view_picking_internal_search_inherit_stock_picking_batch stock.picking.search stock.picking xpath Inherits stock.view_picking_internal_search
vpicktree_inherit_stock_picking_batch stock.picking.tree stock.picking xpath Inherits stock.vpicktree
Models touched (4)

New fields (1)
  • pick_to_backorder_ids Many2many → stock.picking
    help='Picking to backorder' args: 'stock.picking'
Public methods (1)
  • process(self)
    @api.multi

New fields (1)
  • batch_id Many2one → stock.picking.batch
    copy=False help='Batch associated to this picking' oldname='wave_id' states={'done': [('readonly', True)], 'cancel': [('readonly', True)]} string='Batch Picking' args: 'stock.picking.batch'
Public methods (0)

No public methods.

New fields (4)
  • name Char
    copy=False default='New' help='Name of the batch picking' required=True string='Batch Picking Name'
  • picking_ids One2many → stock.picking
    help='List of picking associated to this batch' string='Pickings' args: 'stock.picking', 'batch_id'
  • state Selection
    copy=False default='draft' required=True track_visibility='onchange' args: [('draft', 'Draft'), ('in_progress', 'Running'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • user_id Many2one → res.users
    help='Person responsible for this batch picking' string='Responsible' track_visibility='onchange' args: 'res.users'
Public methods (5)
  • cancel_picking(self)
    @api.multi
  • confirm_picking(self)
    @api.multi
  • create(self, vals)
    @api.model
  • done(self)
    @api.multi
  • print_picking(self)
    @api.multi

New fields (1)
  • batch_id Many2one → stock.picking.batch
    oldname='wave_id' string='Batch Picking' args: 'stock.picking.batch'
Public methods (1)
  • attach_pickings(self)
    @api.multi