TIP: You can type at any time to perform a new search.
Stock Barcodes
stock_barcodes · OCA/stock-logistics-barcode
- Repository
- OCA/stock-logistics-barcode · module folder · Try on Runboat
- Module version
- 2.2.4
- Category
- Extra Tools
- Folder size
- 1.6 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/stock-logistics-barcode
- Last tracking update
- 2026-08-07 08:09:23
- Authors
- Odoo Community Association (OCA), Tecnativa
- Maintainers
- Odoo Community Association (OCA), Tecnativa
- Committers
- Alexis de Lattre, Carlos Dauden, Enric Tobella, sergio-teruel, Weblate, OCA-git-bot, oca-ci, Edilio Escalona Almira, Geyson Gualdron, Gil Arasa
Code Analysis ⓘ
Views touched (18)
| 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 | form | Inherits stock.view_location_form |
stock_picking_kanban |
stock.picking | kanban | Inherits stock.stock_picking_kanban | |
stock_picking_type_kanban |
stock.picking.type | kanban | Inherits stock.stock_picking_type_kanban | |
view_picking_form |
stock.picking | form | Inherits stock.view_picking_form | |
view_picking_type_form |
stock.picking.type | form | Inherits stock.view_picking_type_form | |
view_pickingtype_filter |
stock.picking.type | 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 | form | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_packaging_form |
stock.barcodes.read.packaging.form | wiz.stock.barcodes.read | form | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_read_picking_form |
stock.barcodes.read.picking.form | wiz.stock.barcodes.read.picking | form | Inherits stock_barcodes.view_stock_barcodes_read_form |
view_stock_barcodes_todo_kanban |
stock.barcodes.todo.kanban | wiz.stock.barcodes.read.todo | kanban | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (16)
New fields (0)
No new fields.
Public methods (1)-
send_bus_done(self, channel, type_channel, data=None)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (11)
-
action_window_idMany2one → ir.actions.act_windowcomodel_name='ir.actions.act_window'string='Action window' -
activeBooleandefault=True -
barcodeChar -
barcode_imageImageattachment=Truecompute='_compute_barcode_image'readonly=True args: 'Barcode image' -
contextChar -
count_elementsIntegercompute='_compute_count_elements'default=0 -
icon_classChar -
key_char_shortcutChar -
key_shortcutInteger -
nameChartranslate=True -
sequenceIntegerdefault=100
-
open_action(self) -
open_inventory_action(self, ctx) -
print_barcodes(self)
New fields (11)
-
clean_after_doneBoolean -
field_nameChar -
filled_defaultBoolean -
forcedBoolean -
messageChar -
nameChar -
option_group_idMany2one → stock.barcodes.option.groupcomodel_name='stock.barcodes.option.group'ondelete='cascade' -
requiredBoolean -
sequenceIntegerdefault=100 -
stepInteger -
to_scanBoolean
No public methods.
New fields (28)
-
accumulate_read_quantityBooleanhelp='If checked quantity will be accumulated to the existing record instead of overwrite it with the new quantity value' -
allow_negative_quantBooleanhelp='If it is checked, it will allow the creation of movements that generate negative stock' -
auto_lotBooleanhelp='If checked the lot will be set automatically with the same removal startegy'string='Get lots automatically' -
auto_put_in_packBooleanhelp='Auto put in pack before picking validation'string='Auto put in pack' -
barcode_guided_modeSelectionhelp='When guided mode is selected, information will appear with the movement to be processed'string='Mode' args: [('guided', 'Guided')] -
codeChar -
confirmed_movesBooleanhelp='It allows to work with movements without reservation (Without detailed operations)'string='Confirmed moves' -
create_lotBooleanhelp='If checked the lot will created automatically with the scanned barcode if not exists 'string='Create lots if not match' -
display_notificationBooleanstring='Display Odoo notifications' -
display_read_quantBooleanstring='Read items on inventory mode' -
fill_fields_from_lotBooleanhelp='If checked, the fields in the interface will be filled from the scanned lot' -
group_key_for_todo_recordsCharhelp='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_fieldsBooleanstring='Ignore filled fields' -
ignore_quant_locationBooleanhelp='If it is checked, quant location will be ignored when reading lot/package' -
is_manual_confirmBooleanhelp='If it is marked, the movement must always be confirmed from a button' -
is_manual_qtyBooleanhelp='If it is checked, it always shows the product quantity field in edit mode' -
keep_screen_valuesBooleanhelp='If checked the wizard values are kept until the pending move is completed' -
location_field_to_sortSelectionselection=[('location_id', 'Origin Location'), ('location_dest_id', 'Destination Location')] -
manual_entryBooleanhelp='Default value when open scan interface'string='Manual entry' -
manual_entry_field_focusChardefault='location_id'help='Set field to set focus when manual entry mode is enabled' -
nameChar -
no_increase_qty_doneBooleanstring='Do not increase qty done on each scan' -
option_idsOne2many → stock.barcodes.optioncomodel_name='stock.barcodes.option'copy=Trueinverse_name='option_group_id' -
show_detailed_operationsBooleanhelp='If checked the picking detailed operations are displayed' -
show_form_scanBooleandefault=True -
show_pending_movesBooleanhelp='Shows a list of movements to process'string='Show pending moves' -
source_pending_movesSelectiondefault='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_putawayBooleanstring='Use location dest. putaway'
-
get_option_value(self, field_name, attribute)
New fields (1)
-
barcode_backorder_actionSelectiondefault='pending'string='Backorder action' args: [('pending', 'Pending'), ('create_backorder', 'Create Backorder'), ('skip_backorder', 'No Backorder')]
-
copy_data(self, default=None)
New fields (1)
-
barcode_scan_stateSelectioncompute='_compute_barcode_scan_state'default='pending'readonly=Falsestore=Truestring='Scan State' args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')]
-
action_barcode_detailed_operation_unlink(self)
New fields (0)
No new fields.
Public methods (2)-
action_barcode_scan(self, option_group=False) -
button_validate(self)
New fields (2)
-
barcode_option_group_idMany2one → stock.barcodes.option.groupcomodel_name='stock.barcodes.option.group' -
new_picking_barcode_option_group_idMany2one → stock.barcodes.option.groupcomodel_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)
New fields (0)
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)
New fields (13)
-
dateDatetimereadonly=Truerelated='picking_id.date'string='Creation Date' -
is_pendingBooleancompute='_compute_is_pending' -
nameCharreadonly=Truerelated='picking_id.name'string='Candidate Picking' -
noteHtmlrelated='picking_id.note' -
partner_idMany2one → res.partnercomodel_name='res.partner'readonly=Truerelated='picking_id.partner_id'string='Partner' -
picking_idMany2one → stock.pickingcomodel_name='stock.picking'readonly=Truestring='Picking' -
product_qty_doneFloatcompute='_compute_picking_quantity'digits='Product Unit of Measure'readonly=True args: 'Done' -
product_qty_reservedFloatcompute='_compute_picking_quantity'digits='Product Unit of Measure'readonly=True args: 'Reserved' -
product_uom_qtyFloatcompute='_compute_picking_quantity'digits='Product Unit of Measure'readonly=True args: 'Demand' -
scan_countInteger -
stateSelectionreadonly=Truerelated='picking_id.state' -
wiz_barcode_idMany2one → wiz.stock.barcodes.read.pickingcomodel_name='wiz.stock.barcodes.read.picking'readonly=True -
wiz_picking_idMany2one → stock.pickingcomodel_name='stock.picking'readonly=Truerelated='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)
New fields (2)
-
lot_nameCharstring='Lot name' -
product_idMany2one → product.productcomodel_name='product.product'required=True
-
cancel(self) -
confirm(self) -
get_scan_wizard(self) -
on_barcode_scanned(self, barcode) -
scan_wizard_action(self)
New fields (41)
-
action_idsMany2many → stock.barcodes.actioncomodel_name='stock.barcodes.action'compute='_compute_action_ids' -
auto_lotBooleancompute='_compute_auto_lot'help='If checked the lot will be set automatically with the same removal startegy'readonly=Falsestore=Truestring='Get lots automatically' -
barcodeChar -
confirmed_movesBooleanrelated='option_group_id.confirmed_moves'string='Confirmed moves' -
create_lotBooleancompute='_compute_create_lot'help='Show lot name field'string='Allow create lot' -
display_assign_serialBooleancompute='_compute_display_assign_serial' -
display_menuBoolean -
enable_add_productBooleandefault=True -
guided_location_dest_idMany2one → stock.locationcomodel_name='stock.location' -
guided_location_idMany2one → stock.locationcomodel_name='stock.location' -
guided_lot_idMany2one → stock.lotcomodel_name='stock.lot' -
guided_product_idMany2one → product.productcomodel_name='product.product' -
is_manual_confirmBooleancompute='_compute_is_manual_qty' -
is_manual_qtyBooleancompute='_compute_is_manual_qty' -
keep_result_packageBoolean -
location_dest_idMany2one → stock.locationcomodel_name='stock.location'string='Location dest.' -
location_idMany2one → stock.locationcomodel_name='stock.location' -
lot_idMany2one → stock.lotcomodel_name='stock.lot' -
lot_nameCharcompute='_compute_lot_name'readonly=Falsestore=True args: 'Lot/Serial Number Name' -
manual_entryBooleanhelp='Entry manual data'string='Manual' -
messageCharreadonly=True -
message_stepCharreadonly=True -
message_typeSelectionreadonly=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_idMany2one → stock.barcodes.option.groupcomodel_name='stock.barcodes.option.group' -
owner_idMany2one → res.partnercomodel_name='res.partner' -
package_idMany2one → stock.quant.packagecomodel_name='stock.quant.package' -
packaging_idMany2one → product.packagingcomodel_name='product.packaging' -
packaging_qtyFloatdigits='Product Unit of Measure'string='Package Qty' -
product_idMany2one → product.productcomodel_name='product.product'domain=[('type', 'in', _allowed_product_types)] -
product_packaging_idsOne2manyrelated='product_id.packaging_ids' -
product_qtyFloatdigits='Product Unit of Measure' -
product_trackingSelectionreadonly=Truerelated='product_id.tracking' -
product_uom_idMany2one → uom.uomcomodel_name='uom.uom' -
res_idIntegerindex=True -
res_model_idMany2one → ir.modelcomodel_name='ir.model'index=True -
result_package_idMany2one → stock.quant.packagecomodel_name='stock.quant.package' -
show_form_scanBooleancompute='_compute_show_form_scan' -
stepInteger -
total_product_qty_doneFloatdigits='Product Unit of Measure'store=Falsestring='Product Qty. Done' -
total_product_uom_qtyFloatdigits='Product Unit of Measure'store=Falsestring='Product Demand' -
visible_force_doneBoolean
-
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)@api.onchange('step') -
check_done_conditions(self) -
check_location_contidion(self) -
check_lot_contidion(self) -
check_option_required(self) -
create(self, vals_list)@api.model_create_multi -
display_notification(self, message, message_type='warning', title=False, sticky=True)Send notifications to web client message_type: [options.type='warning'] 'info', 'success', 'warning', 'danger' or '' sticky: Permanent notification until user removes it -
dummy_on_barcode_scanned(self)To avoid execute operations in onchange environment -
get_option_value(self, field_name, attribute) -
on_barcode_scanned(self, barcode) -
onchange_manual_entry(self)@api.onchange('manual_entry') -
onchange_package_id(self)@api.onchange('package_id') -
onchange_packaging_qty(self)@api.onchange('packaging_qty') -
onchange_product_id(self)@api.onchange('product_id') -
onchange_visible_force_done(self)@api.onchange('product_id', 'lot_id', 'package_id', 'result_package_id', 'packaging_qty', 'product_qty') -
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)Fill wizard fields from stock quants -
set_product_qty(self)
New fields (5)
-
count_inventory_quantsIntegercompute='_compute_count_inventory_quants'store=True -
display_read_quantBooleandefault=Truestring='Read items' -
inventory_product_qtyFloatdigits='Product Unit of Measure'readonly=Truestring='Inventory quantities' -
inventory_quant_idsMany2many → stock.quantcomodel_name='stock.quant'compute='_compute_inventory_quant_ids' -
product_idMany2onedomain=[('type', 'in', _allowed_product_types)]
-
action_clean_values(self) -
action_display_read_quant(self) -
action_done(self) -
action_manual_entry(self) -
apply_inventory(self)
New fields (26)
-
candidate_picking_idMany2one → stock.pickingcomodel_name='stock.picking'related='candidate_picking_ids.picking_id'string='Candidate stock picking' -
candidate_picking_idsOne2many → wiz.candidate.pickingcomodel_name='wiz.candidate.picking'inverse_name='wiz_barcode_id'readonly=Truestring='Candidate pickings' -
company_idMany2onerelated='picking_id.company_id' -
enable_add_productBooleancompute='_compute_enable_add_product' -
forced_todo_keyChar -
keep_screen_valuesBooleanrelated='option_group_id.keep_screen_values' -
move_line_idsOne2many → stock.move.linecomodel_name='stock.move.line'compute='_compute_move_line_ids' -
partner_idMany2one → res.partnerrelated='picking_id.partner_id' args: 'res.partner' -
pending_move_idsMany2many → wiz.stock.barcodes.read.todocomodel_name='wiz.stock.barcodes.read.todo'compute='_compute_pending_move_ids' -
picking_idMany2one → stock.pickingcomodel_name='stock.picking'readonly=Truestring='Picking' -
picking_idsMany2many → stock.pickingcomodel_name='stock.picking'readonly=Truestring='Pickings' -
picking_location_dest_idMany2onerelated='picking_id.location_dest_id' -
picking_location_idMany2onerelated='picking_id.location_id' -
picking_modeSelectionargs: [('picking', 'Picking mode')] -
picking_product_qtyFloatdigits='Product Unit of Measure'readonly=Truestring='Picking quantities' -
picking_stateSelectionrelated='picking_id.state' -
picking_type_codeSelectionargs: [('incoming', 'Vendors'), ('outgoing', 'Customers'), ('internal', 'Internal')], 'Type of Operation' -
qty_availableFloatcompute='_compute_qty_available' -
selected_pending_move_idMany2one → wiz.stock.barcodes.read.todocomodel_name='wiz.stock.barcodes.read.todo' -
show_detailed_operationsBooleanrelated='option_group_id.show_detailed_operations'store=True -
todo_line_display_idsMany2many → wiz.stock.barcodes.read.todocomodel_name='wiz.stock.barcodes.read.todo'compute='_compute_todo_line_display_ids' -
todo_line_idMany2one → wiz.stock.barcodes.read.todocomodel_name='wiz.stock.barcodes.read.todo' -
todo_line_idsOne2many → wiz.stock.barcodes.read.todocomodel_name='wiz.stock.barcodes.read.todo'inverse_name='wiz_barcode_id'string='To Do Lines' -
todo_line_is_extra_lineBooleanrelated='todo_line_id.is_extra_line' -
total_product_qty_doneFloatcompute='_compute_total_product' -
total_product_uom_qtyFloatcompute='_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)@api.model_create_multi -
create_new_stock_move(self, sml) -
create_new_stock_move_line(self, moves_todo, available_qty)Create a new stock move line when a sml is not available for the wizard values. -
determine_todo_action(self, forced_todo_line=False) -
fill_pending_moves(self) -
fill_records(self, lines_list)@api.model:param lines_list: browse list :return: -
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)@api.onchange('picking_id') -
update_fields_after_determine_todo(self, move_line) -
update_fields_after_process_stock(self, moves) -
update_keep_values(self, keep_vals)
New fields (27)
-
is_extra_lineBoolean -
is_stock_move_line_originBoolean -
line_idsMany2many → stock.move.linecomodel_name='stock.move.line' -
location_dest_idMany2one → stock.locationcomodel_name='stock.location' -
location_dest_nameCharrelated='location_dest_id.name'string='Destinatino Name' -
location_idMany2one → stock.locationcomodel_name='stock.location' -
location_nameCharrelated='location_id.name' -
lot_idMany2one → stock.lotcomodel_name='stock.lot' -
nameChar -
package_idMany2one → stock.quant.packagecomodel_name='stock.quant.package' -
package_product_qtyFloat -
partner_idMany2one → res.partnercomodel_name='res.partner'readonly=Truestring='Partner' -
picking_codeCharargs: 'Type of Operation' -
picking_stateSelectionrelated='wiz_barcode_id.picking_state' -
position_indexInteger -
product_idMany2one → product.productcomodel_name='product.product' -
product_qty_reservedFloatdigits='Product Unit of Measure'readonly=True args: 'Reserved' -
product_uom_qtyFloatdigits='Product Unit of Measure'readonly=True args: 'Demand' -
qty_doneFloatcompute='_compute_qty_done'digits='Product Unit of Measure' args: 'Done' -
qty_done_restFloatcompute='_compute_qty_done_rest'store=True -
res_idsChar -
res_model_idMany2one → ir.modelcomodel_name='ir.model' -
result_package_idMany2one → stock.quant.packagecomodel_name='stock.quant.package' -
stateSelectioncompute='_compute_state'default='pending'readonly=Falsestring='Scan State' args: [('pending', 'Pending'), ('done', 'Done'), ('done_forced', 'Done forced')] -
stock_move_idsMany2many → stock.movecomodel_name='stock.move' -
uom_idMany2one → uom.uomcomodel_name='uom.uom' -
wiz_barcode_idMany2one → wiz.stock.barcodes.read.pickingcomodel_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)@api.model -
fill_from_pending_line(self) -
operation_quantities(self)
Loading…
Loading…
Loading…
Loading…
Loading…
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 318 days ago
- Last activity
- 9 days ago
- Repository
- OCA/stock-logistics-barcode
- Pull request
- [18.0][MIG] stock_barcodes: Migration to v18 (#725)
- Status
- Open migration PR — not merged yet for this version
- CI status
- checks failing
- Open since
- 197 days ago
- Last activity
- 14 days ago
- Repository
- OCA/stock-logistics-barcode
- Pull request
- [19.0][MIG] stock_barcodes: Migration to 19.0 (#742)