| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-barcode |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-barcode.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-barcode/tree/16.0/stock_barcodes |
| VERSION | |
| VERSION | 2.2.4 |
| CATEGORY | |
| CATEGORY | Extra Tools |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Alexis de Lattre, Carlos Dauden, Enric Tobella, sergio-teruel, Weblate, OCA-git-bot, oca-ci, Edilio Escalona Almira, Geyson Gualdron, Gil Arasa |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-barcode |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:53:42 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/web: - web_widget_numeric_step odoo/odoo: - barcodes - web - base - stock - product - base_setup - bus - web_tour - uom - barcodes_gs1_nomenclature - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
report_barcode_actions |
report_barcode_actions | ir.ui.view | qweb | New |
stock_location_form_inherit |
stock.location.inherit | stock.location | group | Inherits stock.view_location_form |
stock_picking_kanban |
stock.picking | xpath | Inherits stock.stock_picking_kanban | |
stock_picking_type_kanban |
stock.picking.type | field | Inherits stock.stock_picking_type_kanban | |
view_picking_form |
stock.picking | div | Inherits stock.view_picking_form | |
view_picking_type_form |
stock.picking.type | xpath | Inherits stock.view_picking_type_form | |
view_pickingtype_filter |
stock.picking.type | field | Inherits stock.view_pickingtype_filter | |
view_stock_barcodes_action_kanban |
stock.barcodes.action.kanban | stock.barcodes.action | kanban | New |
view_stock_barcodes_action_tree |
stock.barcodes.action.tree | stock.barcodes.action | tree | New |
view_stock_barcodes_new_lot |
stock.barcodes.new.lot.form | wiz.stock.barcodes.new.lot | form | New |
view_stock_barcodes_option_group_form |
stock.barcodes.option.group.form | stock.barcodes.option.group | form | New |
view_stock_barcodes_option_tree |
stock.barcodes.option.tree | stock.barcodes.option | tree | New |
view_stock_barcodes_read_form |
stock.barcodes.read.form | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_form_manual_qty |
stock.barcodes.read.form.manual_qty | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_inventory_form |
stock.barcodes.read.inventory.form | wiz.stock.barcodes.read.inventory | field | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_packaging_form |
stock.barcodes.read.packaging.form | wiz.stock.barcodes.read | group | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_picking_form |
stock.barcodes.read.picking.form | wiz.stock.barcodes.read.picking | xpath | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_todo_kanban |
stock.barcodes.todo.kanban | wiz.stock.barcodes.read.todo | kanban | New |
No new fields.
Public methods (1)send_bus_done(self, channel, type_channel, data=None)
No new fields.
Public methods (0)No public methods.
action_window_id
Many2one → ir.actions.act_window
comodel_name='ir.actions.act_window'
string='Action window'
active
Boolean
default=True
barcode
Char
barcode_image
Image
attachment=True
compute='_compute_barcode_image'
readonly=True
args: 'Barcode image'
context
Char
count_elements
Integer
compute='_compute_count_elements'
default=0
icon_class
Char
key_char_shortcut
Char
key_shortcut
Integer
name
Char
translate=True
sequence
Integer
default=100
open_action(self)
open_inventory_action(self, ctx)
print_barcodes(self)
clean_after_done
Boolean
field_name
Char
filled_default
Boolean
forced
Boolean
message
Char
name
Char
option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
ondelete='cascade'
required
Boolean
sequence
Integer
default=100
step
Integer
to_scan
Boolean
No public methods.
accumulate_read_quantity
Boolean
help='If checked quantity will be accumulated to the existing record instead of overwrite it with the new quantity value'
allow_negative_quant
Boolean
help='If it is checked, it will allow the creation of movements that generate negative stock'
auto_lot
Boolean
help='If checked the lot will be set automatically with the same removal startegy'
string='Get lots automatically'
auto_put_in_pack
Boolean
help='Auto put in pack before picking validation'
string='Auto put in pack'
barcode_guided_mode
Selection
help='When guided mode is selected, information will appear with the movement to be processed'
string='Mode'
args: [('guided', 'Guided')]
code
Char
confirmed_moves
Boolean
help='It allows to work with movements without reservation (Without detailed operations)'
string='Confirmed moves'
create_lot
Boolean
help='If checked the lot will created automatically with the scanned barcode if not exists '
string='Create lots if not match'
display_notification
Boolean
string='Display Odoo notifications'
display_read_quant
Boolean
string='Read items on inventory mode'
fill_fields_from_lot
Boolean
help='If checked, the fields in the interface will be filled from the scanned lot'
group_key_for_todo_records
Char
help='You can establish a list of fields that will act as a grouping key to generate the movements to be process.\nThe object variable is used to refer to the source record\nFor example, object.location_id,object.product_id,object.lot_id'
ignore_filled_fields
Boolean
string='Ignore filled fields'
ignore_quant_location
Boolean
help='If it is checked, quant location will be ignored when reading lot/package'
is_manual_confirm
Boolean
help='If it is marked, the movement must always be confirmed from a button'
is_manual_qty
Boolean
help='If it is checked, it always shows the product quantity field in edit mode'
keep_screen_values
Boolean
help='If checked the wizard values are kept until the pending move is completed'
location_field_to_sort
Selection
selection=[('location_id', 'Origin Location'), ('location_dest_id', 'Destination Location')]
manual_entry
Boolean
help='Default value when open scan interface'
string='Manual entry'
manual_entry_field_focus
Char
default='location_id'
help='Set field to set focus when manual entry mode is enabled'
name
Char
no_increase_qty_done
Boolean
string='Do not increase qty done on each scan'
option_ids
One2many → stock.barcodes.option
comodel_name='stock.barcodes.option'
copy=True
inverse_name='option_group_id'
show_detailed_operations
Boolean
help='If checked the picking detailed operations are displayed'
show_form_scan
Boolean
default=True
show_pending_moves
Boolean
help='Shows a list of movements to process'
string='Show pending moves'
source_pending_moves
Selection
default='move_line_ids'
help='Origin of the data to generate the movements to process'
args: [('move_line_ids', 'Detailed operations'), ('move_ids', 'Operations')]
use_location_dest_putaway
Boolean
string='Use location dest. putaway'
get_option_value(self, field_name, attribute)
barcode_backorder_action
Selection
default='pending'
string='Backorder action'
args: [('pending', 'Pending'), ('create_backorder', 'Create Backorder'), ('skip_backorder', 'No Backorder')]
copy_data(self, default=None)
barcode_scan_state
Selection
compute='_compute_barcode_scan_state'
default='pending'
readonly=False
store=True
string='Scan State'
args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')]
action_barcode_detailed_operation_unlink(self)
No new fields.
Public methods (2)action_barcode_scan(self, option_group=False)
button_validate(self)
barcode_option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
new_picking_barcode_option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
help="This Barcode Option Group will be selected when clicking the 'New' button in an operation type. It will be used to create a non planned picking."
action_barcode_new_picking(self)
action_barcode_scan(self)
get_action_picking_tree_ready(self)
No new fields.
Public methods (6)action_apply_inventory(self)
action_barcode_inventory_quant_edit(self)
action_barcode_inventory_quant_unlink(self)
enable_current_operations(self)
operation_quantities(self)
operation_quantities_rest(self)
date
Datetime
readonly=True
related='picking_id.date'
string='Creation Date'
is_pending
Boolean
compute='_compute_is_pending'
name
Char
readonly=True
related='picking_id.name'
string='Candidate Picking'
note
Html
related='picking_id.note'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='picking_id.partner_id'
string='Partner'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
product_qty_done
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Done'
product_qty_reserved
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Reserved'
product_uom_qty
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Demand'
scan_count
Integer
state
Selection
readonly=True
related='picking_id.state'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
readonly=True
wiz_picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
related='wiz_barcode_id.picking_id'
string='Wizard Picking'
action_lock_picking(self)
action_open_picking(self)
action_put_in_pack(self)
action_unlock_picking(self)
action_validate_picking(self)
lot_name
Char
string='Lot name'
product_id
Many2one → product.product
comodel_name='product.product'
required=True
cancel(self)
confirm(self)
get_scan_wizard(self)
on_barcode_scanned(self, barcode)
scan_wizard_action(self)
action_ids
Many2many → stock.barcodes.action
comodel_name='stock.barcodes.action'
compute='_compute_action_ids'
auto_lot
Boolean
compute='_compute_auto_lot'
help='If checked the lot will be set automatically with the same removal startegy'
readonly=False
store=True
string='Get lots automatically'
barcode
Char
confirmed_moves
Boolean
related='option_group_id.confirmed_moves'
string='Confirmed moves'
create_lot
Boolean
compute='_compute_create_lot'
help='Show lot name field'
string='Allow create lot'
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
display_menu
Boolean
enable_add_product
Boolean
default=True
guided_location_dest_id
Many2one → stock.location
comodel_name='stock.location'
guided_location_id
Many2one → stock.location
comodel_name='stock.location'
guided_lot_id
Many2one → stock.lot
comodel_name='stock.lot'
guided_product_id
Many2one → product.product
comodel_name='product.product'
is_manual_confirm
Boolean
compute='_compute_is_manual_qty'
is_manual_qty
Boolean
compute='_compute_is_manual_qty'
keep_result_package
Boolean
location_dest_id
Many2one → stock.location
comodel_name='stock.location'
string='Location dest.'
location_id
Many2one → stock.location
comodel_name='stock.location'
lot_id
Many2one → stock.lot
comodel_name='stock.lot'
lot_name
Char
compute='_compute_lot_name'
readonly=False
store=True
args: 'Lot/Serial Number Name'
manual_entry
Boolean
help='Entry manual data'
string='Manual'
message
Char
readonly=True
message_step
Char
readonly=True
message_type
Selection
readonly=True
args: [('info', 'Barcode read with additional info'), ('info_page', 'Info page'), ('not_found', 'No barcode found'), ('more_match', 'More than one matches found'), ('success', 'Barcode read correctly')]
option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
owner_id
Many2one → res.partner
comodel_name='res.partner'
package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
packaging_qty
Float
digits='Product Unit of Measure'
string='Package Qty'
product_id
Many2one → product.product
comodel_name='product.product'
domain=[('type', 'in', _allowed_product_types)]
product_packaging_ids
One2many
related='product_id.packaging_ids'
product_qty
Float
digits='Product Unit of Measure'
product_tracking
Selection
readonly=True
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
result_package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
show_form_scan
Boolean
compute='_compute_show_form_scan'
step
Integer
total_product_qty_done
Float
digits='Product Unit of Measure'
store=False
string='Product Qty. Done'
total_product_uom_qty
Float
digits='Product Unit of Measure'
store=False
string='Product Demand'
visible_force_done
Boolean
action_add_scan_manual(self)
action_back(self)
action_cancel(self)
action_clean_lot(self)
action_clean_message(self)
action_clean_package(self)
action_clean_product(self)
action_clean_values(self)
action_confirm(self)
action_create_package(self)
action_done(self)
action_force_done(self)
action_keep_result_package(self)
action_lot_scaned_post(self, lot)
action_manual_entry(self)
action_manual_quantity(self)
action_packaging_scaned_post(self, packaging)
action_product_scaned_post(self, product)
action_reopen_wizard(self)
action_show_step(self)
check_done_conditions(self)
check_location_contidion(self)
check_lot_contidion(self)
check_option_required(self)
create(self, vals_list)
display_notification(self, message, message_type='warning', title=False, sticky=True)
dummy_on_barcode_scanned(self)
get_option_value(self, field_name, attribute)
on_barcode_scanned(self, barcode)
onchange_manual_entry(self)
onchange_package_id(self)
onchange_packaging_qty(self)
onchange_product_id(self)
onchange_visible_force_done(self)
open_actions(self)
open_records(self)
play_sounds(self, res)
process_barcode(self, barcode)
process_barcode_location_dest_id(self)
process_barcode_location_id(self)
process_barcode_lot_id(self)
process_barcode_package_id(self)
process_barcode_packaging_id(self)
process_barcode_product_id(self)
process_barcode_result_package_id(self)
process_lot_before_done(self)
reset_qty(self)
set_info_from_quants(self, quants)
set_product_qty(self)
count_inventory_quants
Integer
compute='_compute_count_inventory_quants'
store=True
display_read_quant
Boolean
default=True
string='Read items'
inventory_product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Inventory quantities'
inventory_quant_ids
Many2many → stock.quant
comodel_name='stock.quant'
compute='_compute_inventory_quant_ids'
product_id
Many2one
domain=[('type', 'in', _allowed_product_types)]
action_clean_values(self)
action_display_read_quant(self)
action_done(self)
action_manual_entry(self)
apply_inventory(self)
candidate_picking_id
Many2one → stock.picking
comodel_name='stock.picking'
related='candidate_picking_ids.picking_id'
string='Candidate stock picking'
candidate_picking_ids
One2many → wiz.candidate.picking
comodel_name='wiz.candidate.picking'
inverse_name='wiz_barcode_id'
readonly=True
string='Candidate pickings'
company_id
Many2one
related='picking_id.company_id'
enable_add_product
Boolean
compute='_compute_enable_add_product'
forced_todo_key
Char
keep_screen_values
Boolean
related='option_group_id.keep_screen_values'
move_line_ids
One2many → stock.move.line
comodel_name='stock.move.line'
compute='_compute_move_line_ids'
partner_id
Many2one → res.partner
related='picking_id.partner_id'
args: 'res.partner'
pending_move_ids
Many2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
compute='_compute_pending_move_ids'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
picking_ids
Many2many → stock.picking
comodel_name='stock.picking'
readonly=True
string='Pickings'
picking_location_dest_id
Many2one
related='picking_id.location_dest_id'
picking_location_id
Many2one
related='picking_id.location_id'
picking_mode
Selection
picking_product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Picking quantities'
picking_state
Selection
related='picking_id.state'
picking_type_code
Selection
qty_available
Float
compute='_compute_qty_available'
selected_pending_move_id
Many2one → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
show_detailed_operations
Boolean
related='option_group_id.show_detailed_operations'
store=True
todo_line_display_ids
Many2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
compute='_compute_todo_line_display_ids'
todo_line_id
Many2one → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
todo_line_ids
One2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
inverse_name='wiz_barcode_id'
string='To Do Lines'
todo_line_is_extra_line
Boolean
related='todo_line_id.is_extra_line'
total_product_qty_done
Float
compute='_compute_total_product'
total_product_uom_qty
Float
compute='_compute_total_product'
action_assign_serial(self)
action_clean_values(self)
action_done(self)
action_lock_picking(self)
action_manual_entry(self)
action_open_picking(self)
action_product_scaned_post(self, product)
action_put_in_pack(self)
action_show_detailed_operations(self)
action_unlock_picking(self)
action_validate_picking(self)
check_done_conditions(self)
create(self, vals_list)
create_new_stock_move(self, sml)
create_new_stock_move_line(self, moves_todo, available_qty)
determine_todo_action(self, forced_todo_line=False)
fill_pending_moves(self)
fill_records(self, lines_list)
fill_todo_records(self)
get_lot_by_removal_strategy(self)
get_moves(self)
get_moves_or_move_lines(self)
get_sorted_move_lines(self, move_lines)
name_get(self)
onchange_picking_id(self)
update_fields_after_determine_todo(self, move_line)
update_fields_after_process_stock(self, moves)
update_keep_values(self, keep_vals)
is_extra_line
Boolean
is_stock_move_line_origin
Boolean
line_ids
Many2many → stock.move.line
comodel_name='stock.move.line'
location_dest_id
Many2one → stock.location
comodel_name='stock.location'
location_dest_name
Char
related='location_dest_id.name'
string='Destinatino Name'
location_id
Many2one → stock.location
comodel_name='stock.location'
location_name
Char
related='location_id.name'
lot_id
Many2one → stock.lot
comodel_name='stock.lot'
name
Char
package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
package_product_qty
Float
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
picking_code
Char
picking_state
Selection
related='wiz_barcode_id.picking_state'
position_index
Integer
product_id
Many2one → product.product
comodel_name='product.product'
product_qty_reserved
Float
digits='Product Unit of Measure'
readonly=True
args: 'Reserved'
product_uom_qty
Float
digits='Product Unit of Measure'
readonly=True
args: 'Demand'
qty_done
Float
compute='_compute_qty_done'
digits='Product Unit of Measure'
args: 'Done'
qty_done_rest
Float
compute='_compute_qty_done_rest'
store=True
res_ids
Char
res_model_id
Many2one → ir.model
comodel_name='ir.model'
result_package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
state
Selection
compute='_compute_state'
default='pending'
readonly=False
string='Scan State'
args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')]
stock_move_ids
Many2many → stock.move
comodel_name='stock.move'
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
action_back_line(self)
action_barcode_inventory_quant_edit(self)
action_next_line(self)
action_reset_lines(self)
action_todo_next(self)
fields_to_fill_from_pending_line(self)
fill_from_pending_line(self)
operation_quantities(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-barcode |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-barcode.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-barcode/tree/15.0/stock_barcodes |
| VERSION | |
| VERSION | 3.3.0 |
| CATEGORY | |
| CATEGORY | Extra Tools |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | GitHub, Carlos Dauden, Lois Rilo, Miquel Raïch, sergio-teruel, Ernesto Tejeda, Weblate, OCA-git-bot, oca-ci, Carlos Roca |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-barcode |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:31 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/web: - web_widget_numeric_step odoo/odoo: - barcodes - web - base - stock - product - base_setup - bus - web_tour - uom - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
stock_location_form_inherit |
stock.location.inherit | stock.location | group | Inherits stock.view_location_form |
stock_picking_kanban |
stock.picking | xpath | Inherits stock.stock_picking_kanban | |
stock_picking_type_kanban |
stock.picking.type | field | Inherits stock.stock_picking_type_kanban | |
view_picking_form |
stock.picking | div | Inherits stock.view_picking_form | |
view_picking_type_form |
stock.picking.type | xpath | Inherits stock.view_picking_type_form | |
view_pickingtype_filter |
stock.picking.type | field | Inherits stock.view_pickingtype_filter | |
view_stock_barcodes_action_tree |
stock.barcodes.action.tree | stock.barcodes.action | tree | New |
view_stock_barcodes_new_lot |
stock.barcodes.new.lot.form | wiz.stock.barcodes.new.lot | form | New |
view_stock_barcodes_option_group_form |
stock.barcodes.option.group.form | stock.barcodes.option.group | form | New |
view_stock_barcodes_option_tree |
stock.barcodes.option.tree | stock.barcodes.option | tree | New |
view_stock_barcodes_read_form |
stock.barcodes.read.form | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_form_manual_qty |
stock.barcodes.read.form.manual_qty | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_inventory_form |
stock.barcodes.read.inventory.form | wiz.stock.barcodes.read.inventory | field | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_packaging_form |
stock.barcodes.read.packaging.form | wiz.stock.barcodes.read | div | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_picking_form |
stock.barcodes.read.picking.form | wiz.stock.barcodes.read.picking | xpath | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_todo_kanban |
stock.barcodes.todo.kanban | wiz.stock.barcodes.read.todo | kanban | New |
action_window_id
Many2one → ir.actions.act_window
comodel_name='ir.actions.act_window'
string='Action window'
active
Boolean
default=True
context
Char
icon_class
Char
key_char_shortcut
Char
key_shortcut
Integer
name
Char
translate=True
sequence
Integer
default=100
open_action(self)
open_inventory_action(self, ctx)
clean_after_done
Boolean
field_name
Char
filled_default
Boolean
forced
Boolean
message
Char
name
Char
option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
ondelete='cascade'
required
Boolean
sequence
Integer
default=100
step
Integer
to_scan
Boolean
No public methods.
accumulate_read_quantity
Boolean
help='If checked quantity will be accumulated to the existing record instead of overwrite it with the new quantity value'
allow_negative_quant
Boolean
help='If it is checked, it will allow the creation of movements that generate negative stock'
auto_lot
Boolean
help='If checked the lot will be set automatically with the same removal startegy'
string='Get lots automatically'
auto_put_in_pack
Boolean
help='Auto put in pack before picking validation'
string='Auto put in pack'
barcode_guided_mode
Selection
help='When guided mode is selected, information will appear with the movement to be processed'
string='Mode'
args: [('guided', 'Guided')]
code
Char
confirmed_moves
Boolean
help='It allows to work with movements without reservation (Without detailed operations)'
string='Confirmed moves'
create_lot
Boolean
help='If checked the lot will created automatically with the scanned barcode if not exists '
string='Create lots if not match'
display_notification
Boolean
string='Display Odoo notifications'
fill_fields_from_lot
Boolean
help='If checked, the fields in the interface will be filled from the scanned lot'
group_key_for_todo_records
Char
help='You can establish a list of fields that will act as a grouping key to generate the movements to be process.\nThe object variable is used to refer to the source record\nFor example, object.location_id,object.product_id,object.lot_id'
ignore_filled_fields
Boolean
string='Ignore filled fields'
ignore_quant_location
Boolean
help='If it is checked, quant location will be ignored when reading lot/package'
is_manual_confirm
Boolean
help='If it is marked, the movement must always be confirmed from a button'
is_manual_qty
Boolean
help='If it is checked, it always shows the product quantity field in edit mode'
keep_screen_values
Boolean
help='If checked the wizard values are kept until the pending move is completed'
location_field_to_sort
Selection
selection=[('location_id', 'Origin Location'), ('location_dest_id', 'Destination Location')]
manual_entry
Boolean
help='Default value when open scan interface'
string='Manual entry'
manual_entry_field_focus
Char
default='location_id'
help='Set field to set focus when manual entry mode is enabled'
name
Char
option_ids
One2many → stock.barcodes.option
comodel_name='stock.barcodes.option'
copy=True
inverse_name='option_group_id'
show_detailed_operations
Boolean
help='If checked the picking detailed operations are displayed'
show_pending_moves
Boolean
help='Shows a list of movements to process'
string='Show pending moves'
show_scan_log
Boolean
help='Displays a log of the scans processed'
string='Show scan log'
source_pending_moves
Selection
default='move_line_ids'
help='Origin of the data to generate the movements to process'
args: [('move_line_ids', 'Detailed operations'), ('move_lines', 'Operations')]
use_location_dest_putaway
Boolean
string='Use location dest. putaway'
get_option_value(self, field_name, attribute)
location_id
Many2one → stock.location
comodel_name='stock.location'
log_line_ids
One2many → stock.barcodes.read.log.line
comodel_name='stock.barcodes.read.log.line'
inverse_name='read_log_id'
string='Scanning log details'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
string='Lot scanned'
manual_entry
Boolean
string='Manual entry'
name
Char
string='Barcode Scanned'
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
packaging_qty
Float
digits='Product Unit of Measure'
string='Package Qty'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
string='Picking'
product_id
Many2one → product.product
comodel_name='product.product'
index=True
product_qty
Float
digits='Product Unit of Measure'
string='Quantity'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
No public methods.
move_line_id
Many2one → stock.move.line
comodel_name='stock.move.line'
readonly=True
string='Stock move lines'
product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Quantity scanned'
read_log_id
Many2one → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
ondelete='cascade'
readonly=True
string='Scanning log'
No public methods.
barcode_backorder_action
Selection
default='pending'
string='Backorder action'
args: [('pending', 'Pending'), ('create_backorder', 'Create Backorder'), ('skip_backorder', 'No Backorder')]
copy_data(self, default=None)
barcode_scan_state
Selection
compute='_compute_barcode_scan_state'
default='pending'
readonly=False
store=True
string='Scan State'
args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')]
action_barcode_detailed_operation_unlink(self)
No new fields.
Public methods (2)action_barcode_scan(self, option_group=False)
button_validate(self)
barcode_option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
new_picking_barcode_option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
help="This Barcode Option Group will be selected when clicking the 'New' button in an operation type. It will be used to create a non planned picking."
action_barcode_new_picking(self)
action_barcode_scan(self)
No new fields.
Public methods (2)action_barcode_inventory_quant_edit(self)
action_barcode_inventory_quant_unlink(self)
date
Datetime
readonly=True
related='picking_id.date'
string='Creation Date'
is_pending
Boolean
compute='_compute_is_pending'
name
Char
readonly=True
related='picking_id.name'
string='Candidate Picking'
note
Html
related='picking_id.note'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='picking_id.partner_id'
string='Partner'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
product_qty_done
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Done'
product_qty_reserved
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Reserved'
product_uom_qty
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Demand'
scan_count
Integer
state
Selection
readonly=True
related='picking_id.state'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
readonly=True
wiz_picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
related='wiz_barcode_id.picking_id'
string='Wizard Picking'
action_lock_picking(self)
action_open_picking(self)
action_put_in_pack(self)
action_unlock_picking(self)
action_validate_picking(self)
lot_name
Char
string='Lot name'
product_id
Many2one → product.product
comodel_name='product.product'
required=True
cancel(self)
confirm(self)
get_scan_wizard(self)
on_barcode_scanned(self, barcode)
scan_wizard_action(self)
action_ids
Many2many → stock.barcodes.action
comodel_name='stock.barcodes.action'
compute='_compute_action_ids'
auto_lot
Boolean
compute='_compute_auto_lot'
help='If checked the lot will be set automatically with the same removal startegy'
readonly=False
store=True
string='Get lots automatically'
barcode
Char
confirmed_moves
Boolean
related='option_group_id.confirmed_moves'
string='Confirmed moves'
create_lot
Boolean
compute='_compute_create_lot'
help='Show lot name field'
string='Allow create lot'
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
display_menu
Boolean
guided_location_dest_id
Many2one → stock.location
comodel_name='stock.location'
guided_location_id
Many2one → stock.location
comodel_name='stock.location'
guided_lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
guided_product_id
Many2one → product.product
comodel_name='product.product'
is_manual_confirm
Boolean
compute='_compute_is_manual_qty'
is_manual_qty
Boolean
compute='_compute_is_manual_qty'
keep_result_package
Boolean
location_dest_id
Many2one → stock.location
comodel_name='stock.location'
string='Location dest.'
location_id
Many2one → stock.location
comodel_name='stock.location'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
lot_name
Char
compute='_compute_lot_name'
readonly=False
store=True
args: 'Lot/Serial Number Name'
manual_entry
Boolean
help='Entry manual data'
string='Manual'
message
Char
readonly=True
message_step
Char
readonly=True
message_type
Selection
readonly=True
args: [('info', 'Barcode read with additional info'), ('not_found', 'No barcode found'), ('more_match', 'More than one matches found'), ('success', 'Barcode read correctly')]
option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
owner_id
Many2one → res.partner
comodel_name='res.partner'
package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
packaging_qty
Float
digits='Product Unit of Measure'
string='Package Qty'
product_id
Many2one → product.product
comodel_name='product.product'
domain=[('type', 'in', _allowed_product_types)]
product_packaging_ids
One2many
related='product_id.packaging_ids'
product_qty
Float
digits='Product Unit of Measure'
product_tracking
Selection
readonly=True
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
result_package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
scan_log_ids
Many2many → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
compute='_compute_scan_log_ids'
show_scan_log
Boolean
compute='_compute_is_manual_qty'
step
Integer
total_product_qty_done
Float
digits='Product Unit of Measure'
store=False
string='Product Qty. Done'
total_product_uom_qty
Float
digits='Product Unit of Measure'
store=False
string='Product Demand'
visible_force_done
Boolean
action_back(self)
action_cancel(self)
action_clean_lot(self)
action_clean_message(self)
action_clean_package(self)
action_clean_product(self)
action_clean_values(self)
action_confirm(self)
action_create_package(self)
action_done(self)
action_force_done(self)
action_keep_result_package(self)
action_lot_scaned_post(self, lot)
action_manual_entry(self)
action_manual_quantity(self)
action_packaging_scaned_post(self, packaging)
action_product_scaned_post(self, product)
action_reopen_wizard(self)
action_show_step(self)
action_undo_last_scan(self)
check_done_conditions(self)
check_location_contidion(self)
check_lot_contidion(self)
check_option_required(self)
create(self, vals)
display_notification(self, message, message_type='warning', title=False, sticky=True)
dummy_on_barcode_scanned(self)
get_option_value(self, field_name, attribute)
on_barcode_scanned(self, barcode)
onchange_manual_entry(self)
onchange_package_id(self)
onchange_packaging_qty(self)
onchange_product_id(self)
onchange_visible_force_done(self)
open_actions(self)
open_records(self)
play_sounds(self, res)
process_barcode(self, barcode)
process_barcode_location_dest_id(self)
process_barcode_location_id(self)
process_barcode_lot_id(self)
process_barcode_package_id(self)
process_barcode_packaging_id(self)
process_barcode_product_id(self)
process_barcode_result_package_id(self)
process_lot_before_done(self)
reset_qty(self)
set_info_from_quants(self, quants)
set_product_qty(self)
display_read_quant
Boolean
string='Read items'
inventory_product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Inventory quantities'
inventory_quant_ids
Many2many → stock.quant
comodel_name='stock.quant'
compute='_compute_inventory_quant_ids'
product_id
Many2one
domain=[('type', 'in', _allowed_product_types)]
action_clean_values(self)
action_done(self)
action_manual_entry(self)
apply_inventory(self)
candidate_picking_ids
One2many → wiz.candidate.picking
comodel_name='wiz.candidate.picking'
inverse_name='wiz_barcode_id'
readonly=True
string='Candidate pickings'
company_id
Many2one
related='picking_id.company_id'
forced_todo_key
Char
keep_screen_values
Boolean
related='option_group_id.keep_screen_values'
move_line_ids
One2many → stock.move.line
comodel_name='stock.move.line'
compute='_compute_move_line_ids'
pending_move_ids
Many2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
compute='_compute_pending_move_ids'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
picking_ids
Many2many → stock.picking
comodel_name='stock.picking'
readonly=True
string='Pickings'
picking_location_dest_id
Many2one
related='picking_id.location_dest_id'
picking_location_id
Many2one
related='picking_id.location_id'
picking_mode
Selection
picking_product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Picking quantities'
picking_state
Selection
related='picking_id.state'
picking_type_code
Selection
qty_available
Float
compute='_compute_qty_available'
selected_pending_move_id
Many2one → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
show_detailed_operations
Boolean
related='option_group_id.show_detailed_operations'
todo_line_display_ids
Many2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
compute='_compute_todo_line_display_ids'
todo_line_id
Many2one → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
todo_line_ids
One2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
inverse_name='wiz_barcode_id'
string='To Do Lines'
todo_line_is_extra_line
Boolean
related='todo_line_id.is_extra_line'
total_product_qty_done
Float
compute='_compute_total_product'
total_product_uom_qty
Float
compute='_compute_total_product'
action_assign_serial(self)
action_clean_values(self)
action_done(self)
action_manual_entry(self)
action_product_scaned_post(self, product)
action_put_in_pack(self)
action_undo_last_scan(self)
check_done_conditions(self)
create(self, vals)
create_new_stock_move(self, sml)
create_new_stock_move_line(self, moves_todo, available_qty)
determine_todo_action(self, forced_todo_line=False)
fill_pending_moves(self)
fill_records(self, lines_list)
fill_todo_records(self)
get_lot_by_removal_strategy(self)
get_moves(self)
get_moves_or_move_lines(self)
get_sorted_move_lines(self, move_lines)
name_get(self)
onchange_picking_id(self)
remove_scanning_log(self, scanning_log)
update_barcodes_wiz_after_changes(self)
update_fields_after_determine_todo(self, move_line)
update_fields_after_process_stock(self, moves)
update_keep_values(self, keep_vals)
is_extra_line
Boolean
is_stock_move_line_origin
Boolean
line_ids
Many2many → stock.move.line
comodel_name='stock.move.line'
location_dest_id
Many2one → stock.location
comodel_name='stock.location'
location_dest_name
Char
related='location_dest_id.name'
string='Destinatino Name'
location_id
Many2one → stock.location
comodel_name='stock.location'
location_name
Char
related='location_id.name'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
name
Char
package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
package_product_qty
Float
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
picking_code
Char
position_index
Integer
product_id
Many2one → product.product
comodel_name='product.product'
product_qty_reserved
Float
digits='Product Unit of Measure'
readonly=True
args: 'Reserved'
product_uom_qty
Float
digits='Product Unit of Measure'
readonly=True
args: 'Demand'
qty_done
Float
compute='_compute_qty_done'
digits='Product Unit of Measure'
args: 'Done'
res_ids
Char
res_model_id
Many2one → ir.model
comodel_name='ir.model'
result_package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
state
Selection
compute='_compute_state'
default='pending'
readonly=False
string='Scan State'
args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')]
stock_move_ids
Many2many → stock.move
comodel_name='stock.move'
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
action_back_line(self)
action_next_line(self)
action_reset_lines(self)
action_todo_next(self)
fields_to_fill_from_pending_line(self)
fill_from_pending_line(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-barcode |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-barcode.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-barcode/tree/14.0/stock_barcodes |
| VERSION | |
| VERSION | 4.0.1 |
| CATEGORY | |
| CATEGORY | Extra Tools |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | david, Lois Rilo, OCA Transbot, sergio-teruel, Ernesto Tejeda, oca-travis, Weblate, OCA-git-bot, Tom, oca-ci, mariadforgeflow, Alessandro Uffreduzzi, David Alonso // Solvos, hkapatel, Alessio Renda |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-barcode |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:52 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/web: - web_widget_numeric_step odoo/odoo: - barcodes - web - base - stock - product - base_setup - bus - web_tour - uom - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
stock_barcodes Assets | ir.ui.view | qweb | Inherits web.assets_backend |
stock_location_form_inherit |
stock.location.inherit | stock.location | group | Inherits stock.view_location_form |
stock_picking_kanban |
stock.picking | xpath | Inherits stock.stock_picking_kanban | |
stock_picking_type_kanban |
stock.picking.type | field | Inherits stock.stock_picking_type_kanban | |
view_inventory_form |
stock.inventory | div | Inherits stock.view_inventory_form | |
view_picking_form |
stock.picking | div | Inherits stock.view_picking_form | |
view_picking_type_form |
stock.picking.type | xpath | Inherits stock.view_picking_type_form | |
view_pickingtype_filter |
stock.picking.type | field | Inherits stock.view_pickingtype_filter | |
view_stock_barcodes_action_tree |
stock.barcodes.action.tree | stock.barcodes.action | tree | New |
view_stock_barcodes_new_lot |
stock.barcodes.new.lot.form | wiz.stock.barcodes.new.lot | form | New |
view_stock_barcodes_option_group_form |
stock.barcodes.option.group.form | stock.barcodes.option.group | form | New |
view_stock_barcodes_option_tree |
stock.barcodes.option.tree | stock.barcodes.option | tree | New |
view_stock_barcodes_read_form |
stock.barcodes.read.form | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_form_manual_qty |
stock.barcodes.read.form.manual_qty | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_inventory_form |
stock.barcodes.read.inventory.form | wiz.stock.barcodes.read.inventory | xpath | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_packaging_form |
stock.barcodes.read.packaging.form | wiz.stock.barcodes.read | div | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_picking_form |
stock.barcodes.read.picking.form | wiz.stock.barcodes.read.picking | xpath | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_todo_kanban |
stock.barcodes.todo.kanban | wiz.stock.barcodes.read.todo | kanban | New |
view_stock_inventory_kanban |
stock.inventory | xpath | Inherits stock.view_stock_inventory_kanban |
action_window_id
Many2one → ir.actions.act_window
comodel_name='ir.actions.act_window'
string='Action window'
active
Boolean
default=True
context
Char
icon_class
Char
key_char_shortcut
Char
key_shortcut
Integer
name
Char
translate=True
sequence
Integer
default=100
string='Sequence'
open_action(self)
clean_after_done
Boolean
field_name
Char
filled_default
Boolean
forced
Boolean
message
Char
name
Char
option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
ondelete='cascade'
required
Boolean
sequence
Integer
default=100
string='Sequence'
step
Integer
to_scan
Boolean
No public methods.
allow_negative_quant
Boolean
help='If it is checked, it will allow the creation of movements that generate negative stock'
auto_lot
Boolean
help='If checked the lot will be set automatically with the same removal startegy'
string='Get lots automatically'
auto_put_in_pack
Boolean
help='Auto put in pack before picking validation'
string='Auto put in pack'
barcode_guided_mode
Selection
help='When guided mode is selected, information will appear with the movement to be processed'
string='Mode'
args: [('guided', 'Guided')]
code
Char
confirmed_moves
Boolean
help='It allows to work with movements without reservation (Without detailed operations)'
string='Confirmed moves'
create_lot
Boolean
help='If checked the lot will created automatically with the scanned barcode if not exists '
string='Create lots if not match'
fill_fields_from_lot
Boolean
help='If checked, the fields in the interface will be filled from the scanned lot'
group_key_for_todo_records
Char
help='You can establish a list of fields that will act as a grouping key to generate the movements to be process.\nThe object variable is used to refer to the source record\nFor example, object.location_id,object.product_id,object.lot_id'
ignore_filled_fields
Boolean
string='Ignore filled fields'
is_manual_confirm
Boolean
help='If it is marked, the movement must always be confirmed from a button'
is_manual_qty
Boolean
help='If it is checked, it always shows the product quantity field in edit mode'
manual_entry
Boolean
help='Default value when open scan interface'
string='Manual entry'
manual_entry_field_focus
Char
default='location_id'
help='Set field to set focus when manual entry mode is enabled'
name
Char
option_ids
One2many → stock.barcodes.option
comodel_name='stock.barcodes.option'
copy=True
inverse_name='option_group_id'
show_detailed_operations
Boolean
help='If checked the picking detailed operations are displayed'
show_pending_moves
Boolean
help='Shows a list of movements to process'
string='Show pending moves'
show_scan_log
Boolean
help='Displays a log of the scans processed'
string='Show scan log'
source_pending_moves
Selection
default='move_line_ids'
help='Origin of the data to generate the movements to process'
args: [('move_line_ids', 'Detailed operations'), ('move_lines', 'Operations')]
get_option_value(self, field_name, attribute)
location_id
Many2one → stock.location
comodel_name='stock.location'
log_line_ids
One2many → stock.barcodes.read.log.line
comodel_name='stock.barcodes.read.log.line'
inverse_name='read_log_id'
string='Scanning log details'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
string='Lot scanned'
manual_entry
Boolean
string='Manual entry'
name
Char
string='Barcode Scanned'
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
packaging_qty
Float
digits='Product Unit of Measure'
string='Package Qty'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
string='Picking'
product_id
Many2one → product.product
comodel_name='product.product'
index=True
product_qty
Float
digits='Product Unit of Measure'
string='Quantity'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
No public methods.
move_line_id
Many2one → stock.move.line
comodel_name='stock.move.line'
readonly=True
string='Stock move lines'
product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Quantity scanned'
read_log_id
Many2one → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
ondelete='cascade'
readonly=True
string='Scanning log'
No public methods.
No new fields.
Public methods (1)action_barcode_scan(self)
barcode_scan_state
Selection
compute='_compute_barcode_scan_state'
default='pending'
readonly=False
store=True
string='Scan State'
args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')]
action_barcode_detailed_operation_unlink(self)
No new fields.
Public methods (2)action_barcode_scan(self, option_group=False)
button_validate(self)
barcode_option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
new_picking_barcode_option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
help="This Barcode Option Group will be selected when clicking the 'New' button in an operation type. It will be used to create a non planned picking."
action_barcode_new_picking(self)
action_barcode_scan(self)
No new fields.
Public methods (1)action_barcode_inventory_quant_unlink(self)
date
Datetime
readonly=True
related='picking_id.date'
string='Creation Date'
is_pending
Boolean
compute='_compute_is_pending'
name
Char
readonly=True
related='picking_id.name'
string='Candidate Picking'
note
Text
related='picking_id.note'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='picking_id.partner_id'
string='Partner'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
product_qty_done
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Done'
product_qty_reserved
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Reserved'
product_uom_qty
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Demand'
scan_count
Integer
state
Selection
readonly=True
related='picking_id.state'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
readonly=True
wiz_picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
related='wiz_barcode_id.picking_id'
string='Wizard Picking'
action_lock_picking(self)
action_open_picking(self)
action_put_in_pack(self)
action_unlock_picking(self)
action_validate_picking(self)
lot_name
Char
string='Lot name'
product_id
Many2one → product.product
comodel_name='product.product'
required=True
cancel(self)
confirm(self)
get_scan_wizard(self)
on_barcode_scanned(self, barcode)
scan_wizard_action(self)
action_ids
Many2many → stock.barcodes.action
comodel_name='stock.barcodes.action'
compute='_compute_action_ids'
auto_lot
Boolean
compute='_compute_auto_lot'
help='If checked the lot will be set automatically with the same removal startegy'
readonly=False
store=True
string='Get lots automatically'
barcode
Char
confirmed_moves
Boolean
related='option_group_id.confirmed_moves'
string='Confirmed moves'
create_lot
Boolean
compute='_compute_create_lot'
help='Show lot name field'
string='Allow create lot'
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
display_menu
Boolean
guided_location_dest_id
Many2one → stock.location
comodel_name='stock.location'
guided_location_id
Many2one → stock.location
comodel_name='stock.location'
guided_lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
guided_product_id
Many2one → product.product
comodel_name='product.product'
is_manual_confirm
Boolean
compute='_compute_is_manual_qty'
is_manual_qty
Boolean
compute='_compute_is_manual_qty'
keep_result_package
Boolean
location_dest_id
Many2one → stock.location
comodel_name='stock.location'
string='Location dest.'
location_id
Many2one → stock.location
comodel_name='stock.location'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
lot_name
Char
compute='_compute_lot_name'
readonly=False
store=True
args: 'Lot/Serial Number Name'
manual_entry
Boolean
help='Entry manual data'
string='Manual'
message
Char
readonly=True
message_step
Char
readonly=True
message_type
Selection
readonly=True
args: [('info', 'Barcode read with additional info'), ('not_found', 'No barcode found'), ('more_match', 'More than one matches found'), ('success', 'Barcode read correctly')]
option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
owner_id
Many2one → res.partner
comodel_name='res.partner'
package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
packaging_qty
Float
digits='Product Unit of Measure'
string='Package Qty'
product_id
Many2one → product.product
comodel_name='product.product'
domain=[('type', 'in', _allowed_product_types)]
product_packaging_ids
One2many
related='product_id.packaging_ids'
product_qty
Float
digits='Product Unit of Measure'
product_tracking
Selection
readonly=True
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
qty_available
Float
compute='_compute_qty_available'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
result_package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
scan_log_ids
Many2many → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
compute='_compute_scan_log_ids'
show_scan_log
Boolean
compute='_compute_is_manual_qty'
step
Integer
visible_force_done
Boolean
action_back(self)
action_cancel(self)
action_clean_lot(self)
action_clean_message(self)
action_clean_package(self)
action_clean_product(self)
action_clean_values(self)
action_confirm(self)
action_create_package(self)
action_done(self)
action_force_done(self)
action_keep_result_package(self)
action_lot_scaned_post(self, lot)
action_manual_entry(self)
action_manual_quantity(self)
action_packaging_scaned_post(self, packaging)
action_product_scaned_post(self, product)
action_reopen_wizard(self)
action_show_step(self)
action_undo_last_scan(self)
check_done_conditions(self)
check_location_contidion(self)
check_lot_contidion(self)
check_option_required(self)
create(self, vals)
get_option_value(self, field_name, attribute)
on_barcode_scanned(self, barcode)
onchange_manual_entry(self)
onchange_package_id(self)
onchange_packaging_qty(self)
onchange_product_id(self)
open_actions(self)
open_records(self)
play_sounds(self, res)
process_barcode(self, barcode)
process_barcode_location_dest_id(self)
process_barcode_location_id(self)
process_barcode_lot_id(self)
process_barcode_package_id(self)
process_barcode_packaging_id(self)
process_barcode_product_id(self)
process_barcode_result_package_id(self)
process_lot_before_done(self)
reset_qty(self)
set_info_from_quants(self, quants)
set_product_qty(self)
display_inventory_ids
Many2many → stock.inventory
comodel_name='stock.inventory'
compute='_compute_display_inventory_ids'
inventory_id
Many2one → stock.inventory
comodel_name='stock.inventory'
readonly=True
inventory_product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Inventory quantities'
action_clean_values(self)
action_done(self)
action_manual_entry(self)
action_undo_last_scan(self)
check_lot_contidion(self)
name_get(self)
candidate_picking_ids
One2many → wiz.candidate.picking
comodel_name='wiz.candidate.picking'
inverse_name='wiz_barcode_id'
readonly=True
string='Candidate pickings'
move_line_ids
One2many → stock.move.line
comodel_name='stock.move.line'
compute='_compute_move_line_ids'
pending_move_ids
Many2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
compute='_compute_pending_move_ids'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
picking_ids
Many2many → stock.picking
comodel_name='stock.picking'
readonly=True
string='Pickings'
picking_mode
Selection
picking_product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Picking quantities'
picking_state
Selection
related='picking_id.state'
picking_type_code
Selection
selected_pending_move_id
Many2one → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
show_detailed_operations
Boolean
related='option_group_id.show_detailed_operations'
todo_line_display_ids
Many2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
compute='_compute_todo_line_display_ids'
todo_line_id
Many2one → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
todo_line_ids
One2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
inverse_name='wiz_barcode_id'
string='To Do Lines'
action_assign_serial(self)
action_clean_values(self)
action_done(self)
action_manual_entry(self)
action_product_scaned_post(self, product)
action_put_in_pack(self)
action_undo_last_scan(self)
check_done_conditions(self)
create(self, vals)
create_new_stock_move(self, sml)
create_new_stock_move_line(self, moves_todo, available_qty)
determine_todo_action(self, forced_todo_line=False)
fill_pending_moves(self)
fill_todo_records(self)
filter_sml(self, candidate_lines, lines, sml_vals)
get_lot_by_removal_strategy(self)
get_moves_or_move_lines(self)
get_sorted_move_lines(self, move_lines)
name_get(self)
onchange_picking_id(self)
remove_scanning_log(self, scanning_log)
update_fields_after_determine_todo(self, move_line)
update_fields_after_process_stock(self, moves)
line_ids
Many2many → stock.move.line
comodel_name='stock.move.line'
location_dest_id
Many2one → stock.location
comodel_name='stock.location'
location_dest_name
Char
related='location_dest_id.name'
string='Destinatino Name'
location_id
Many2one → stock.location
comodel_name='stock.location'
location_name
Char
related='location_id.name'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
name
Char
package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
package_product_qty
Float
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
picking_code
Char
position_index
Integer
product_id
Many2one → product.product
comodel_name='product.product'
product_qty_reserved
Float
digits='Product Unit of Measure'
readonly=True
args: 'Reserved'
product_uom_qty
Float
digits='Product Unit of Measure'
readonly=True
args: 'Demand'
qty_done
Float
compute='_compute_qty_done'
digits='Product Unit of Measure'
readonly=False
store=True
args: 'Done'
res_ids
Char
res_model_id
Many2one → ir.model
comodel_name='ir.model'
result_package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
state
Selection
compute='_compute_state'
default='pending'
readonly=False
string='Scan State'
args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')]
stock_move_ids
Many2many → stock.move
comodel_name='stock.move'
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
action_back_line(self)
action_next_line(self)
action_reset_lines(self)
action_todo_next(self)
fields_to_fill_from_pending_line(self)
fill_from_pending_line(self)
fill_records(self, wiz_barcode, lines_list)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-barcode |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-barcode.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-barcode/tree/13.0/stock_barcodes |
| VERSION | |
| VERSION | 2.3.4 |
| CATEGORY | |
| CATEGORY | Extra Tools |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, david, Lois Rilo, OCA Transbot, sergio-teruel, Sergio Teruel, oca-travis, Weblate, OCA-git-bot, oca-ci, Alba Riera, Olga Marco |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-barcode |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:10 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/web: - web_widget_numeric_step odoo/odoo: - barcodes - web - base - stock - product - base_setup - bus - web_tour - uom |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
stock_barcodes Assets | ir.ui.view | qweb | Inherits web.assets_backend |
stock_location_form_inherit |
stock.location.inherit | stock.location | group | Inherits stock.view_location_form |
stock_picking_kanban |
stock.picking | xpath | Inherits stock.stock_picking_kanban | |
stock_picking_type_kanban |
stock.picking.type | field | Inherits stock.stock_picking_type_kanban | |
view_inventory_form |
stock.inventory | div | Inherits stock.view_inventory_form | |
view_picking_form |
stock.picking | div | Inherits stock.view_picking_form | |
view_picking_type_form |
stock.picking.type | xpath | Inherits stock.view_picking_type_form | |
view_pickingtype_filter |
stock.picking.type | field | Inherits stock.view_pickingtype_filter | |
view_stock_barcodes_action_tree |
stock.barcodes.action.tree | stock.barcodes.action | tree | New |
view_stock_barcodes_new_lot |
stock.barcodes.new.lot.form | wiz.stock.barcodes.new.lot | form | New |
view_stock_barcodes_option_group_form |
stock.barcodes.option.group.form | stock.barcodes.option.group | form | New |
view_stock_barcodes_option_tree |
stock.barcodes.option.tree | stock.barcodes.option | tree | New |
view_stock_barcodes_read_form |
stock.barcodes.read.form | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_form_manual_qty |
stock.barcodes.read.form.manual_qty | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_inventory_form |
stock.barcodes.read.inventory.form | wiz.stock.barcodes.read.inventory | xpath | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_packaging_form |
stock.barcodes.read.packaging.form | wiz.stock.barcodes.read | div | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_picking_form |
stock.barcodes.read.picking.form | wiz.stock.barcodes.read.picking | xpath | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_todo_kanban |
stock.barcodes.todo.kanban | wiz.stock.barcodes.read.todo | kanban | New |
view_stock_inventory_kanban |
stock.inventory | xpath | Inherits stock.view_stock_inventory_kanban |
action_window_id
Many2one → ir.actions.act_window
comodel_name='ir.actions.act_window'
string='Action window'
active
Boolean
default=True
context
Char
icon_class
Char
key_char_shortcut
Char
key_shortcut
Integer
name
Char
translate=True
sequence
Integer
default=100
string='Sequence'
open_action(self)
clean_after_done
Boolean
field_name
Char
filled_default
Boolean
forced
Boolean
message
Char
name
Char
option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
ondelete='cascade'
required
Boolean
sequence
Integer
default=100
string='Sequence'
step
Integer
to_scan
Boolean
No public methods.
allow_negative_quant
Boolean
help='If it is checked, it will allow the creation of movements that generate negative stock'
auto_lot
Boolean
help='If checked the lot will be set automatically with the same removal startegy'
string='Get lots automatically'
auto_put_in_pack
Boolean
help='Auto put in pack before picking validation'
string='Auto put in pack'
barcode_guided_mode
Selection
help='When guided mode is selected, information will appear with the movement to be processed'
string='Mode'
args: [('guided', 'Guided')]
code
Char
confirmed_moves
Boolean
help='It allows to work with movements without reservation (Without detailed operations)'
string='Confirmed moves'
create_lot
Boolean
help='If checked the lot will created automatically with the scanned barcode if not exists '
string='Create lots if not match'
fill_fields_from_lot
Boolean
help='If checked, the fields in the interface will be filled from the scanned lot'
group_key_for_todo_records
Char
help='You can establish a list of fields that will act as a grouping key to generate the movements to be process.\nThe object variable is used to refer to the source record\nFor example, object.location_id,object.product_id,object.lot_id'
ignore_filled_fields
Boolean
string='Ignore filled fields'
is_manual_confirm
Boolean
help='If it is marked, the movement must always be confirmed from a button'
is_manual_qty
Boolean
help='If it is checked, it always shows the product quantity field in edit mode'
manual_entry
Boolean
help='Default value when open scan interface'
string='Manual entry'
manual_entry_field_focus
Char
default='location_id'
help='Set field to set focus when manual entry mode is enabled'
name
Char
option_ids
One2many → stock.barcodes.option
comodel_name='stock.barcodes.option'
copy=True
inverse_name='option_group_id'
show_pending_moves
Boolean
help='Shows a list of movements to process'
string='Show pending moves'
show_scan_log
Boolean
help='Displays a log of the scans processed'
string='Show scan log'
source_pending_moves
Selection
default='move_line_ids'
help='Origin of the data to generate the movements to process'
args: [('move_line_ids', 'Detailed operations'), ('move_lines', 'Operations')]
get_option_value(self, field_name, attribute)
location_id
Many2one → stock.location
comodel_name='stock.location'
log_line_ids
One2many → stock.barcodes.read.log.line
comodel_name='stock.barcodes.read.log.line'
inverse_name='read_log_id'
string='Scanning log details'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
string='Lot scanned'
manual_entry
Boolean
string='Manual entry'
name
Char
string='Barcode Scanned'
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
packaging_qty
Float
digits='Product Unit of Measure'
string='Package Qty'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
string='Picking'
product_id
Many2one → product.product
comodel_name='product.product'
index=True
product_qty
Float
digits='Product Unit of Measure'
string='Quantity'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
No public methods.
move_line_id
Many2one → stock.move.line
comodel_name='stock.move.line'
readonly=True
string='Stock move lines'
product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Quantity scanned'
read_log_id
Many2one → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
ondelete='cascade'
readonly=True
string='Scanning log'
No public methods.
No new fields.
Public methods (1)action_barcode_scan(self)
barcode_scan_state
Selection
compute='_compute_barcode_scan_state'
default='pending'
readonly=False
store=True
string='Scan State'
args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')]
lot_id
Many2one
index=True
No public methods.
No new fields.
Public methods (2)action_barcode_scan(self, option_group=False)
button_validate(self)
barcode_option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
new_picking_barcode_option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
help="This Barcode Option Group will be selected when clicking the 'New' button in an operation type. It will be used to create a non planned picking."
action_barcode_new_picking(self)
action_barcode_scan(self)
name
Char
index=True
product_id
Many2one
index=True
No public methods.
date
Datetime
readonly=True
related='picking_id.date'
string='Creation Date'
is_pending
Boolean
compute='_compute_is_pending'
name
Char
readonly=True
related='picking_id.name'
string='Candidate Picking'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='picking_id.partner_id'
string='Partner'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
product_qty_done
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Done'
product_qty_reserved
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Reserved'
product_uom_qty
Float
compute='_compute_picking_quantity'
digits='Product Unit of Measure'
readonly=True
args: 'Demand'
scan_count
Integer
state
Selection
readonly=True
related='picking_id.state'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
readonly=True
wiz_picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
related='wiz_barcode_id.picking_id'
string='Wizard Picking'
action_lock_picking(self)
action_open_picking(self)
action_put_in_pack(self)
action_unlock_picking(self)
action_validate_picking(self)
lot_name
Char
string='Lot name'
product_id
Many2one → product.product
comodel_name='product.product'
required=True
cancel(self)
confirm(self)
get_scan_wizard(self)
on_barcode_scanned(self, barcode)
scan_wizard_action(self)
action_ids
Many2many → stock.barcodes.action
comodel_name='stock.barcodes.action'
compute='_compute_action_ids'
auto_lot
Boolean
compute='_compute_auto_lot'
help='If checked the lot will be set automatically with the same removal startegy'
readonly=False
store=True
string='Get lots automatically'
barcode
Char
confirmed_moves
Boolean
related='option_group_id.confirmed_moves'
string='Confirmed moves'
display_assign_serial
Boolean
compute='_compute_display_assign_serial'
display_menu
Boolean
guided_location_dest_id
Many2one → stock.location
comodel_name='stock.location'
guided_location_id
Many2one → stock.location
comodel_name='stock.location'
guided_lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
guided_product_id
Many2one → product.product
comodel_name='product.product'
is_manual_confirm
Boolean
compute='_compute_is_manual_qty'
is_manual_qty
Boolean
compute='_compute_is_manual_qty'
location_dest_id
Many2one → stock.location
comodel_name='stock.location'
string='Location dest.'
location_id
Many2one → stock.location
comodel_name='stock.location'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
manual_entry
Boolean
help='Entry manual data'
string='Manual'
message
Char
readonly=True
message_step
Char
readonly=True
message_type
Selection
readonly=True
args: [('info', 'Barcode read with additional info'), ('not_found', 'No barcode found'), ('more_match', 'More than one matches found'), ('success', 'Barcode read correctly')]
option_group_id
Many2one → stock.barcodes.option.group
comodel_name='stock.barcodes.option.group'
owner_id
Many2one → res.partner
comodel_name='res.partner'
package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
packaging_qty
Float
digits='Product Unit of Measure'
string='Package Qty'
product_id
Many2one → product.product
comodel_name='product.product'
domain=[('type', 'in', _allowed_product_types)]
product_packaging_ids
One2many
related='product_id.packaging_ids'
product_qty
Float
digits='Product Unit of Measure'
product_tracking
Selection
readonly=True
related='product_id.tracking'
product_uom_id
Many2one → uom.uom
comodel_name='uom.uom'
qty_available
Float
compute='_compute_qty_available'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
result_package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
scan_log_ids
Many2many → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
compute='_compute_scan_log_ids'
show_scan_log
Boolean
compute='_compute_is_manual_qty'
step
Integer
visible_force_done
Boolean
action_back(self)
action_cancel(self)
action_clean_lot(self)
action_clean_message(self)
action_clean_package(self)
action_clean_product(self)
action_clean_values(self)
action_confirm(self)
action_create_package(self)
action_done(self)
action_force_done(self)
action_lot_scaned_post(self, lot)
action_manual_entry(self)
action_manual_quantity(self)
action_packaging_scaned_post(self, packaging)
action_product_scaned_post(self, product)
action_reopen_wizard(self)
action_show_step(self)
action_undo_last_scan(self)
check_done_conditions(self)
check_location_contidion(self)
check_lot_contidion(self)
check_option_required(self)
create(self, vals)
get_option_value(self, field_name, attribute)
on_barcode_scanned(self, barcode)
onchange_manual_entry(self)
onchange_package_id(self)
onchange_packaging_qty(self)
onchange_product_id(self)
open_actions(self)
open_records(self)
play_sounds(self, res)
process_barcode(self, barcode)
process_barcode_location_dest_id(self)
process_barcode_location_id(self)
process_barcode_lot_id(self)
process_barcode_package_id(self)
process_barcode_packaging_id(self)
process_barcode_product_id(self)
process_barcode_result_package_id(self)
reset_qty(self)
set_info_from_quants(self, quants)
display_inventory_ids
Many2many → stock.inventory
comodel_name='stock.inventory'
compute='_compute_display_inventory_ids'
inventory_id
Many2one → stock.inventory
comodel_name='stock.inventory'
readonly=True
inventory_product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Inventory quantities'
product_id
Many2one
domain=[('type', 'in', _allowed_product_types)]
action_clean_values(self)
action_done(self)
action_manual_entry(self)
action_undo_last_scan(self)
check_lot_contidion(self)
name_get(self)
candidate_picking_ids
One2many → wiz.candidate.picking
comodel_name='wiz.candidate.picking'
inverse_name='wiz_barcode_id'
readonly=True
string='Candidate pickings'
move_line_ids
Many2many → stock.move.line
comodel_name='stock.move.line'
readonly=True
pending_move_ids
Many2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
compute='_compute_pending_move_ids'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
picking_ids
Many2many → stock.picking
comodel_name='stock.picking'
readonly=True
string='Pickings'
picking_mode
Selection
picking_product_qty
Float
digits='Product Unit of Measure'
readonly=True
string='Picking quantities'
picking_state
Selection
related='picking_id.state'
picking_type_code
Selection
todo_line_display_ids
Many2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
compute='_compute_todo_line_display_ids'
todo_line_id
Many2one → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
todo_line_ids
One2many → wiz.stock.barcodes.read.todo
comodel_name='wiz.stock.barcodes.read.todo'
inverse_name='wiz_barcode_id'
action_assign_serial(self)
action_done(self)
action_manual_entry(self)
action_packaging_scaned_post(self, packaging)
action_product_scaned_post(self, product)
action_put_in_pack(self)
action_undo_last_scan(self)
check_done_conditions(self)
create(self, vals)
create_new_stock_move(self, sml)
create_new_stock_move_line(self, moves_todo, available_qty)
determine_todo_action(self, forced_todo_line=False)
fill_pending_moves(self)
fill_todo_records(self)
filter_sml(self, candidate_lines, lines, sml_vals)
get_lot_by_removal_strategy(self)
get_moves_or_move_lines(self)
get_sorted_move_lines(self, move_lines)
name_get(self)
onchange_picking_id(self)
remove_scanning_log(self, scanning_log)
update_fields_after_determine_todo(self, move_line)
update_fields_after_process_stock(self, moves)
line_ids
Many2many → stock.move.line
comodel_name='stock.move.line'
location_dest_id
Many2one → stock.location
comodel_name='stock.location'
location_dest_name
Char
related='location_dest_id.name'
location_id
Many2one → stock.location
comodel_name='stock.location'
location_name
Char
related='location_id.name'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
name
Char
package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
package_product_qty
Float
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
string='Partner'
picking_code
Char
position_index
Integer
product_id
Many2one → product.product
comodel_name='product.product'
product_qty_reserved
Float
digits='Product Unit of Measure'
readonly=True
args: 'Reserved'
product_uom_qty
Float
digits='Product Unit of Measure'
readonly=True
args: 'Demand'
qty_done
Float
compute='_compute_qty_done'
digits='Product Unit of Measure'
readonly=False
store=True
args: 'Done'
res_ids
Char
res_model_id
Many2one → ir.model
comodel_name='ir.model'
result_package_id
Many2one → stock.quant.package
comodel_name='stock.quant.package'
state
Selection
compute='_compute_state'
default='pending'
readonly=False
string='Scan State'
args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')]
stock_move_ids
Many2many → stock.move
comodel_name='stock.move'
uom_id
Many2one → uom.uom
comodel_name='uom.uom'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
action_back_line(self)
action_next_line(self)
action_reset_lines(self)
action_todo_next(self)
fields_to_fill_from_pending_line(self)
fill_from_pending_line(self)
fill_records(self, wiz_barcode, lines_list)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-barcode |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-barcode.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-barcode/tree/12.0/stock_barcodes |
| VERSION | |
| VERSION | 2.3.0 |
| CATEGORY | |
| CATEGORY | Extra Tools |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Carlos Dauden, Enric Tobella, david, OCA Transbot, sergio-teruel, oca-travis, Weblate, OCA-git-bot, Adrià Gil Sorribes, CarlosRoca13, Alba Riera |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/stock-logistics-barcode |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:14 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - barcodes - web - base - stock - product - decimal_precision - base_setup - bus - web_tour - uom |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
stock_barcodes Assets | ir.ui.view | qweb | Inherits web.assets_backend |
missing_moves |
missing_moves | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings | div | Inherits stock.res_config_settings_view_form | |
stock_picking_type_kanban |
stock.picking.type | xpath | Inherits stock.stock_picking_type_kanban | |
view_inventory_form |
stock.inventory | div | Inherits stock.view_inventory_form | |
view_picking_form |
stock.picking | div | Inherits stock.view_picking_form | |
view_stock_barcodes_new_lot |
stock.barcodes.new.lot.form | wiz.stock.barcodes.new.lot | form | New |
view_stock_barcodes_read_form |
stock.barcodes.read.form | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_inventory_form |
stock.barcodes.read.inventory.form | wiz.stock.barcodes.read.inventory | field | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_picking_form |
stock.barcodes.read.picking.form | wiz.stock.barcodes.read.picking | xpath | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_picking_lot_form |
stock.barcodes.read.picking.lot.form | wiz.stock.barcodes.read.picking | xpath | Inherits stock_barcodes.view_stock_barcodes_read_picking_form |
stock_barcodes_auto_lot
Boolean
No public methods.
group_track_pending_products_picking_barcode_wizard
Boolean
implied_group='stock_barcodes.group_track_pending_products_picking_barcode'
string='Track pending products at the picking barcode wizard'
stock_barcodes_auto_lot
Boolean
readonly=False
related='company_id.stock_barcodes_auto_lot'
string='Get lots automatically'
No public methods.
location_id
Many2one → stock.location
comodel_name='stock.location'
log_line_ids
One2many → stock.barcodes.read.log.line
comodel_name='stock.barcodes.read.log.line'
inverse_name='read_log_id'
string='Scanning log details'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
string='Lot scanned'
manual_entry
Boolean
string='Manual entry'
name
Char
string='Barcode Scanned'
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
packaging_qty
Float
digits=dp.get_precision('Product Unit of Measure')
string='Package Qty'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
string='Picking'
product_id
Many2one → product.product
comodel_name='product.product'
index=True
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
string='Quantity'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
No public methods.
move_line_id
Many2one → stock.move.line
comodel_name='stock.move.line'
readonly=True
string='Stock move lines'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
readonly=True
string='Quantity scanned'
read_log_id
Many2one → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
ondelete='cascade'
readonly=True
string='Scanning log'
No public methods.
No new fields.
Public methods (1)action_barcode_scan(self)
No new fields.
Public methods (1)action_barcode_scan(self)
No new fields.
Public methods (1)action_barcode_scan(self)
date
Datetime
readonly=True
related='picking_id.date'
string='Creation Date'
name
Char
readonly=True
related='picking_id.name'
string='Candidate Picking'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='picking_id.partner_id'
string='Partner'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
product_qty_done
Float
compute='_compute_picking_quantity'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
args: 'Done'
product_qty_reserved
Float
compute='_compute_picking_quantity'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
args: 'Reserved'
product_uom_qty
Float
compute='_compute_picking_quantity'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
args: 'Demand'
scan_count
Integer
state
Selection
readonly=True
related='picking_id.state'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
readonly=True
wiz_picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
related='wiz_barcode_id.picking_id'
string='Wizard Picking'
action_lock_picking(self)
action_unlock_picking(self)
action_validate_picking(self)
lot_name
Char
required=True
string='Lot name'
product_id
Many2one → product.product
comodel_name='product.product'
required=True
confirm(self)
on_barcode_scanned(self, barcode)
auto_lot
Boolean
default=_default_auto_lot
help='If checked the lot will be set automatically with the same removal startegy'
string='Get lots automatically'
barcode
Char
location_id
Many2one → stock.location
comodel_name='stock.location'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
manual_entry
Boolean
string='Manual entry data'
message
Char
readonly=True
message_type
Selection
readonly=True
args: [('info', 'Barcode read with additional info'), ('not_found', 'No barcode found'), ('more_match', 'More than one matches found'), ('success', 'Barcode read correctly')]
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
packaging_qty
Float
digits=dp.get_precision('Product Unit of Measure')
string='Package Qty'
product_id
Many2one → product.product
comodel_name='product.product'
domain=[('type', 'in', _allowed_product_types)]
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
product_tracking
Selection
readonly=True
related='product_id.tracking'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
scan_log_ids
Many2many → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
compute='_compute_scan_log_ids'
action_cancel(self)
action_clean_lot(self)
action_done(self)
action_lot_scaned_post(self, lot)
action_manual_entry(self)
action_packaging_scaned_post(self, packaging)
action_product_scaned_post(self, product)
action_undo_last_scan(self)
check_done_conditions(self)
on_barcode_scanned(self, barcode)
onchange_location_id(self)
onchange_packaging_qty(self)
process_barcode(self, barcode)
reset_qty(self)
inventory_id
Many2one → stock.inventory
comodel_name='stock.inventory'
readonly=True
inventory_product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
readonly=True
string='Inventory quantities'
product_id
Many2one
domain=[('type', 'in', _allowed_product_types)]
action_done(self)
action_manual_entry(self)
action_undo_last_scan(self)
check_done_conditions(self)
name_get(self)
reset_qty(self)
candidate_picking_ids
One2many → wiz.candidate.picking
comodel_name='wiz.candidate.picking'
inverse_name='wiz_barcode_id'
readonly=True
string='Candidate pickings'
confirmed_moves
Boolean
string='Confirmed moves'
pending_moves
Html
compute='_compute_pending_move'
groups='stock_barcodes.group_track_pending_products_picking_barcode'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
picking_product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
readonly=True
string='Picking quantities'
picking_type_code
Selection
action_done(self)
action_manual_entry(self)
action_product_scaned_post(self, product)
action_undo_last_scan(self)
check_done_conditions(self)
create(self, vals)
get_lot_by_removal_strategy(self)
name_get(self)
onchange_picking_id(self)
remove_scanning_log(self, scanning_log)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/stock-logistics-barcode |
| GIT | |
| GIT | https://github.com/OCA/stock-logistics-barcode.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/stock-logistics-barcode/tree/11.0/stock_barcodes |
| VERSION | |
| VERSION | 2.0.3 |
| CATEGORY | |
| CATEGORY | Extra Tools |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tecnativa, Odoo Community Association (OCA) |
| MAINTAINERS | |
| MAINTAINERS | Tecnativa, Odoo Community Association (OCA) |
| COMMITTERS | |
| COMMITTERS | Pedro M. Baeza, david, OCA Transbot, Sergio Teruel, oca-travis, OCA-git-bot |
| WEBSITE | |
| WEBSITE | https://odoo-community.org/ |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:23:56 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - barcodes - web - base - stock - product - decimal_precision - base_setup - bus - web_tour - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
stock_barcodes Assets | ir.ui.view | qweb | Inherits web.assets_backend |
stock_picking_type_kanban |
stock.picking.type | xpath | Inherits stock.stock_picking_type_kanban | |
view_inventory_form |
stock.inventory | div | Inherits stock.view_inventory_form | |
view_picking_form |
stock.picking | div | Inherits stock.view_picking_form | |
view_stock_barcodes_new_lot |
stock.barcodes.new.lot.form | wiz.stock.barcodes.new.lot | form | New |
view_stock_barcodes_read_form |
stock.barcodes.read.form | wiz.stock.barcodes.read | form | New |
view_stock_barcodes_read_inventory_form |
stock.barcodes.read.inventory.form | wiz.stock.barcodes.read.inventory | field | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_picking_form |
stock.barcodes.read.picking.form | wiz.stock.barcodes.read.picking | xpath | Inherits stock_barcodes.view_stock_barcodes_read_form |
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
log_line_ids
One2many → stock.barcodes.read.log.line
comodel_name='stock.barcodes.read.log.line'
inverse_name='read_log_id'
string='Scanning log details'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
string='Lot scanned'
manual_entry
Boolean
string='Manual entry'
name
Char
string='barcode'
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
string='Packaging'
packaging_qty
Float
digits=dp.get_precision('Product Unit of Measure')
string='Package Qty'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
string='Picking'
product_id
Many2one → product.product
comodel_name='product.product'
index=True
string='Product'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
string='Quantity'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
No public methods.
move_line_id
Many2one → stock.move.line
comodel_name='stock.move.line'
readonly=True
string='Stock move lines'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
readonly=True
string='Quantity scanned'
read_log_id
Many2one → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
ondelete='cascade'
readonly=True
string='Scanning log'
No public methods.
No new fields.
Public methods (1)action_barcode_scan(self)
No new fields.
Public methods (1)action_barcode_scan(self)
No new fields.
Public methods (1)action_barcode_scan(self)
date
Datetime
readonly=True
related='picking_id.date'
string='Creation Date'
name
Char
readonly=True
related='picking_id.name'
string='Picking'
partner_id
Many2one → res.partner
comodel_name='res.partner'
readonly=True
related='picking_id.partner_id'
string='Partner'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
product_qty_done
Float
compute='_compute_picking_quantity'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
args: 'Done'
product_qty_reserved
Float
compute='_compute_picking_quantity'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
args: 'Reserved'
product_uom_qty
Float
compute='_compute_picking_quantity'
digits=dp.get_precision('Product Unit of Measure')
readonly=True
args: 'Demand'
scan_count
Integer
state
Selection
readonly=True
related='picking_id.state'
wiz_barcode_id
Many2one → wiz.stock.barcodes.read.picking
comodel_name='wiz.stock.barcodes.read.picking'
readonly=True
wiz_picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
related='wiz_barcode_id.picking_id'
string='Picking'
action_lock_picking(self)
action_unlock_picking(self)
action_validate_picking(self)
lot_name
Char
required=True
string='Lot name'
product_id
Many2one → product.product
comodel_name='product.product'
required=True
string='Product'
confirm(self)
on_barcode_scanned(self, barcode)
barcode
Char
location_id
Many2one → stock.location
comodel_name='stock.location'
string='Location'
lot_id
Many2one → stock.production.lot
comodel_name='stock.production.lot'
string='Lot'
manual_entry
Boolean
string='Manual entry data'
message
Char
readonly=True
message_type
Selection
readonly=True
args: [('info', 'Barcode read with additional info'), ('not_found', 'No barcode found'), ('more_match', 'More than one matches found'), ('success', 'Barcode read correctly')]
packaging_id
Many2one → product.packaging
comodel_name='product.packaging'
string='Packaging'
packaging_qty
Float
digits=dp.get_precision('Product Unit of Measure')
string='Package Qty'
product_id
Many2one → product.product
comodel_name='product.product'
string='Product'
product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
string='Product Qty'
product_tracking
Selection
readonly=True
related='product_id.tracking'
res_id
Integer
index=True
res_model_id
Many2one → ir.model
comodel_name='ir.model'
index=True
scan_log_ids
Many2many → stock.barcodes.read.log
comodel_name='stock.barcodes.read.log'
compute='_compute_scan_log_ids'
action_cancel(self)
action_clean_lot(self)
action_done(self)
action_lot_scaned_post(self, lot)
action_manual_entry(self)
action_packaging_scaned_post(self, packaging)
action_product_scaned_post(self, product)
action_undo_last_scan(self)
check_done_conditions(self)
on_barcode_scanned(self, barcode)
onchange_location_id(self)
onchange_packaging_qty(self)
process_barcode(self, barcode)
reset_qty(self)
inventory_id
Many2one → stock.inventory
comodel_name='stock.inventory'
readonly=True
string='Inventory'
inventory_product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
readonly=True
string='Inventory quantities'
action_done(self)
action_manual_entry(self)
action_undo_last_scan(self)
check_done_conditions(self)
name_get(self)
reset_qty(self)
candidate_picking_ids
One2many → wiz.candidate.picking
comodel_name='wiz.candidate.picking'
inverse_name='wiz_barcode_id'
readonly=True
string='Candidate pickings'
confirmed_moves
Boolean
string='Confirmed moves'
picking_id
Many2one → stock.picking
comodel_name='stock.picking'
readonly=True
string='Picking'
picking_product_qty
Float
digits=dp.get_precision('Product Unit of Measure')
readonly=True
string='Picking quantities'
picking_type_code
Selection
action_done(self)
action_manual_entry(self)
action_undo_last_scan(self)
check_done_conditions(self)
create(self, vals)
name_get(self)
onchange_picking_id(self)
remove_scanning_log(self, scanning_log)
| STATUS | |
|---|---|
| STATUS | Open migration PR - not merged yet for this version |
| REPOSITORY | |
| REPOSITORY | OCA/stock-logistics-barcode |
| PULL REQUEST | |
| PULL REQUEST | [18.0][MIG] stock_barcodes: Migration to v18 (#725) |
| STATUS | |
|---|---|
| STATUS | Open migration PR - not merged yet for this version |
| REPOSITORY | |
| REPOSITORY | OCA/stock-logistics-barcode |
| PULL REQUEST | |
| PULL REQUEST | [19.0][MIG] stock_barcodes: Migration to 19.0 (#742) |