TIP: You can type at any time to perform a new search.
Vertical Lift
stock_vertical_lift · OCA/stock-logistics-warehouse
- Repository
- OCA/stock-logistics-warehouse · module folder · Try on Runboat
- Module version
- Category
- Stock
- Folder size
- 0.37 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/stock-logistics-warehouse
- Last tracking update
- 2026-08-12 11:12:13
- Authors
- Camptocamp, Odoo Community Association (OCA)
- Maintainers
- Camptocamp, Odoo Community Association (OCA)
- Committers
- Florent Xicluna, Simone Orsi, Jacques-Etienne Baudoux, Sébastien Alix, Vincent Van Rossem, Weblate, OCA-git-bot, oca-ci, David Gallay, Khôi (Kiên Kim)
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- stock_vertical_lift_empty_tray_check, stock_vertical_lift_kardex, stock_vertical_lift_packaging_level, stock_vertical_lift_qty_by_packaging, stock_vertical_lift_server_env, stock_vertical_lift_storage_type
- Description
Add configuration and dedicated screens to work with Vertical Lift systems (such as Kardex Remstar, Modula, ...). Drivers for controlling the lifts physically must be added by additional addons.
Code Analysis ⓘ
Views touched (18)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
packagings |
packagings | ir.ui.view | qweb | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.vertical.lift | res.config.settings | form | Inherits base.res_config_settings_view_form |
vertical_lift_operation_base_button_view |
vertical.lift.operation.base.button.view | vertical.lift.operation.base | form | New |
vertical_lift_operation_base_screen_view |
vertical.lift.operation.base.screen.view | vertical.lift.operation.base | form | New |
vertical_lift_operation_inventory_button_view |
vertical.lift.operation.inventory.button.view | vertical.lift.operation.inventory | form | Inherits vertical_lift_operation_base_button_view |
vertical_lift_operation_inventory_screen_view |
vertical.lift.operation.inventory.screen.view | vertical.lift.operation.inventory | form | Inherits vertical_lift_operation_base_screen_view |
vertical_lift_operation_pick_button_view |
vertical.lift.operation.pick.button.view | vertical.lift.operation.pick | form | Inherits vertical_lift_operation_base_button_view |
vertical_lift_operation_pick_screen_view |
vertical.lift.operation.pick.screen.view | vertical.lift.operation.pick | form | Inherits vertical_lift_operation_transfer_screen_view |
vertical_lift_operation_put_button_view |
vertical.lift.operation.put.button.view | vertical.lift.operation.put | form | Inherits vertical_lift_operation_base_button_view |
vertical_lift_operation_put_screen_view |
vertical.lift.operation.put.screen.view | vertical.lift.operation.put | form | Inherits vertical_lift_operation_transfer_screen_view |
vertical_lift_operation_transfer_screen_view |
vertical.lift.operation.transfer.screen.view | vertical.lift.operation.transfer | form | Inherits vertical_lift_operation_base_screen_view |
vertical_lift_shuttle_form_menu |
vertical.lift.shuttle.view.form.menu | vertical.lift.shuttle | form | New |
vertical_lift_shuttle_view_form |
vertical.lift.shuttle.view.form | vertical.lift.shuttle | form | New |
vertical_lift_shuttle_view_kanban |
vertical.lift.shuttle.kanban | vertical.lift.shuttle | kanban | New |
vertical_lift_shuttle_view_tree |
vertical.lift.shuttle.list | vertical.lift.shuttle | list | New |
view_location_form |
stock.location.form.vertical.lift | stock.location | form | Inherits stock_location_tray.view_location_form |
view_location_search |
stock.location.search.vertical.lift | stock.location | search | Inherits stock_location_tray.view_location_search |
view_stock_move_line_operation_tree |
stock.move.line.operations.list.vertical.lift | stock.move.line | list | Inherits stock_location_tray.view_stock_move_line_operation_tree |
HTTP endpoints (1)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/vertical-lift |
VerticalLiftController.vertical_lift |
public | http | ALL | csrf off sudo |
Models touched (12)
New fields (1)
-
vertical_lift_secretCharconfig_parameter='stock_vertical_lift.secret'string='Secret for Vertical Lift API'
No public methods.
New fields (4)
-
inverse_vertical_lift_shuttle_idsOne2many → vertical.lift.shuttlecomodel_name='vertical.lift.shuttle'inverse_name='location_id' -
vertical_lift_kindSelectioncompute='_compute_vertical_lift_kind'recursive=Trueselection=[('view', 'View'), ('shuttle', 'Shuttle'), ('tray', 'Tray'), ('cell', 'Cell')]store=True -
vertical_lift_locationBooleanhelp='Check this box to use it as the view for Vertical Lift Shuttles.' args: 'Is a Vertical Lift View Location?' -
vertical_lift_shuttle_idMany2one → vertical.lift.shuttlecomodel_name='vertical.lift.shuttle'compute='_compute_vertical_lift_shuttle_id'recursive=Truestore=True
-
button_fetch_vertical_lift_tray(self) -
button_release_vertical_lift_tray(self) -
fetch_vertical_lift_tray(self, cell_location=None)Send instructions to the vertical lift hardware to fetch a tray Public method to use for: * fetch the vertical lift tray and presenting it to the operator (physically) * direct the laser pointer to the cell's location if set Depending on the hardware, the laser pointer may not be implemented. The actual implementation of the method goes in the private method ``_hardware_vertical_lift_fetch_tray()``.
New fields (0)
No new fields.
Public methods (1)-
write(self, vals)
New fields (1)
-
vertical_lift_skippedBooleanhelp='If this flag is set, it means that when the move was being processed in the Vertical Lift, the operator decided to skip its processing.' args: 'Skipped in Vertical Lift?'
-
fetch_vertical_lift_tray_dest(self) -
fetch_vertical_lift_tray_source(self)
New fields (2)
-
vertical_lift_doneBoolean -
vertical_lift_tray_idMany2one → stock.locationcomodel_name='stock.location'compute='_compute_vertical_lift_tray_id'readonly=Truestore=True
-
write(self, vals)
New fields (5)
-
answerChar -
commandCharrequired=True -
errorChar -
nameChardefault=<expr>index=Truerequired=True -
shuttle_idMany2one → vertical.lift.shuttlerequired=True args: 'vertical.lift.shuttle'
-
create(self, vals_list)@api.model_create_multi -
record_answer(self, answer)
New fields (7)
-
location_idMany2onerelated='shuttle_id.location_id' -
modeSelectionrelated='shuttle_id.mode' -
nameCharrelated='shuttle_id.name' -
number_of_opsIntegercompute='_compute_number_of_ops'string='Number of Operations' -
number_of_ops_allIntegercompute='_compute_number_of_ops_all'string='Number of Operations in all shuttles' -
shuttle_idMany2one → vertical.lift.shuttlecomodel_name='vertical.lift.shuttle'readonly=Truerequired=True -
stateSelectiondefault=<expr>selection=<expr>
-
action_manual_barcode(self) -
action_menu(self) -
action_open_operations(self) -
action_open_screen(self) -
button_release(self)Release the operation, go to the next -
button_save(self)Confirm the operation (set move to done, ...) -
button_save_and_release(self)Confirm the operation (set move to done, ...) -
next_step(self, direct_eval=False) -
on_barcode_scanned(self, barcode) -
on_screen_open(self)Called when the screen is opened -
onchange(self, values, field_names, field_onchange) -
process_current(self)Process the action (pick, put, ...) To implement in sub-classes -
reset_steps(self) -
step(self) -
switch_inventory(self) -
switch_pick(self) -
switch_put(self)
New fields (17)
-
last_quantity_inputFloat -
lot_idMany2onerelated='quant_id.lot_id' -
package_idMany2onerelated='quant_id.package_id' -
product_idMany2onerelated='quant_id.product_id' -
product_packagingsHtmlcompute='_compute_product_packagings'string='Packaging' -
product_qtyFloatrelated='quant_id.inventory_quantity' -
product_uom_idMany2onerelated='quant_id.product_uom_id' -
quant_idMany2one → stock.quantstring='Current Quant' args: 'stock.quant' -
quantity_inputFloat -
tray_location_idMany2one → stock.locationcomodel_name='stock.location'compute='_compute_tray_data'string='Tray Location' -
tray_matrixJsoncompute='_compute_tray_data'string='Cells' -
tray_nameCharcompute='_compute_tray_data' -
tray_qtyFloatcompute='_compute_tray_qty'string='Stock Quantity' -
tray_type_codeCharcompute='_compute_tray_data'string='Tray Code' -
tray_type_idMany2one → stock.location.tray.typecomodel_name='stock.location.tray.type'compute='_compute_tray_data'string='Tray Type' -
tray_xIntegercompute='_compute_tray_data'string='X' -
tray_yIntegercompute='_compute_tray_data'string='Y'
-
action_open_operations(self) -
button_save(self) -
clear_current_inventory_line(self) -
fetch_tray(self) -
process_current(self) -
reset_steps(self) -
select_next_inventory_line(self)
New fields (0)
No new fields.
Public methods (7)-
action_open_operations(self) -
button_release(self)Release the operation, go to the next -
button_skip(self)Skip the operation, go to the next -
fetch_tray(self) -
is_skipped(self)Was the current stock.move.line marked as to be skipped? -
on_barcode_scanned(self, barcode) -
select_next_move_line(self)
New fields (0)
No new fields.
Public methods (4)-
action_open_operations(self) -
button_release(self) -
fetch_tray(self) -
on_barcode_scanned(self, barcode)
New fields (18)
-
current_move_line_idMany2one → stock.move.linecomodel_name='stock.move.line'readonly=True -
location_dest_idMany2onereadonly=Falserelated='current_move_line_id.location_dest_id'string='Destination' -
lot_idMany2onereadonly=Truerelated='current_move_line_id.lot_id' -
picking_idMany2onerelated='current_move_line_id.picking_id' -
picking_originCharrelated='current_move_line_id.picking_id.origin' -
picking_partner_idMany2onerelated='current_move_line_id.picking_id.partner_id' -
product_idMany2onerelated='current_move_line_id.product_id' -
product_packagingsHtmlcompute='_compute_product_packagings'string='Packaging' -
product_uom_idMany2onerelated='current_move_line_id.product_uom_id' -
quantityFloatrelated='current_move_line_id.quantity' -
tray_location_idMany2one → stock.locationcomodel_name='stock.location'compute='_compute_tray_data'string='Tray Location' -
tray_matrixJsoncompute='_compute_tray_data'string='Cells' -
tray_nameCharcompute='_compute_tray_data' -
tray_qtyFloatcompute='_compute_tray_qty'string='Stock Quantity' -
tray_type_codeCharcompute='_compute_tray_data'string='Tray Code' -
tray_type_idMany2one → stock.location.tray.typecomodel_name='stock.location.tray.type'compute='_compute_tray_data'string='Tray Type' -
tray_xIntegercompute='_compute_tray_data'string='X' -
tray_yIntegercompute='_compute_tray_data'string='Y'
-
clear_current_move_line(self) -
count_move_lines_to_do(self)Count move lines to process in current shuttles -
count_move_lines_to_do_all(self)Count move lines to process in all shuttles -
fetch_tray(self) -
is_action_barcode(self, barcode)Detect if the barcode is a button or command barcode -
on_barcode_scanned(self, barcode) -
process_current(self) -
reset_steps(self)
New fields (9)
-
command_idsOne2many → vertical.lift.commandstring='Hardware commands' args: 'vertical.lift.command', 'shuttle_id' -
hardwareSelectiondefault='simulation'required=Trueselection='_selection_hardware' -
location_idMany2one → stock.locationcomodel_name='stock.location'domain="[('vertical_lift_kind', '=', 'shuttle')]"help='The Shuttle source location for Pick operations and destination location for Put operations.'ondelete='restrict'required=True -
modeSelectiondefault='pick'required=True args: [('pick', 'Pick'), ('put', 'Put'), ('inventory', 'Inventory')] -
nameChar -
number_of_opsIntegercompute='_compute_number_of_ops'string='Operations to Process' -
portIntegerhelp='network port of the server on which to send the message' -
serverCharhelp='hostname or IP address of the server' -
use_tlsBooleanhelp='set this if the server expects TLS wrapped communication'
-
action_back_to_settings(self) -
action_manual_barcode(self) -
action_menu(self) -
action_open_operations(self) -
action_open_screen(self) -
release_vertical_lift_tray(self)Send instructions to the vertical lift hardware to close trays The actual implementation of the method goes in the private method ``_hardware_vertical_lift_release_tray()``. -
switch_inventory(self) -
switch_pick(self) -
switch_put(self)
Loading…
Loading…