Skip to Content
Shadail Technology
Odoo Solutions & Digital Transformation
Compatible with
Enterprise Only
Odoo 19 β€’ LGPL-3 License

Stock Pick
Cart

Barcode-driven warehouse picking with physical carts and tote slots. Configure tote types and cart types, generate waves with the Manual Wave Wizard, assign one tote per transfer, and complete the batch in the Odoo Barcode app with guided cart and source-location scans.

πŸ“¦ Version 19.0.1.0.0 🏒 Shadail Technology πŸ’» Odoo 19 πŸ”’ LGPL-3 License βœ… Enterprise Only
πŸ“‹
Key Features
Everything your warehouse team needs for fast, accurate, barcode-driven batch picking with physical carts and totes.
πŸ›’

Cart & Tote Structure

Set up tote types, cart types, physical pick carts, and individual tote barcodes so each warehouse can work with a repeatable cart layout.

πŸ“·

Barcode-driven Scanning

Guide pickers through the barcode batch flow with a clear Scan Pick Cart step followed by source-location and product scans for each assigned transfer.

🌊

Manual Wave Wizard

Create waves from ready pickings by warehouse and carrier, with optional delivery-date and product-category filters, directly from Inventory operations.

πŸ“‹

Wave Transfer Visibility

Review each wave with its assigned pick cart, cart type, carrier, detailed operations, and linked transfers before the team starts picking.

🏷️

Tote Label Reports

Print tote labels from the wave transfer so every tote slot has a scannable barcode linked to the correct transfer and destination.

βš™οΈ

Warehouse-specific Cart Pools

Create separate cart sets for each warehouse and reuse the same module across different tote sizes such as 3-tote, 4-tote, and 9-tote carts.

πŸ“¦

Capacity-based Grouping

Match ready pickings to tote capacity and split them into waves sized to the number of totes available on the selected cart type.

πŸ’¬

Barcode Batch Queue

See in-progress wave batches in the Barcode app with the cart type, carrier, and line count shown before the picker opens the job.

πŸ“Š

Transfer Traceability

Completed pickings keep their tote reference and wave history, making it easy to trace which tote/cart combination was used for each transfer.

βš™οΈ
Admin Setup Guide
Set up tote capacity, cart structures, warehouse carts, and wave generation exactly as shown in the module workflow.
  1. Install the Module

    Ensure the following modules are installed first: Inventory (stock), Barcode (stock_barcode), Batch Picking (stock_picking_batch), Batch Picking Barcode (stock_barcode_picking_batch), and Delivery (delivery). Then install Stock Pick Cart from the Apps menu.

    πŸ’‘
    Auto-created on install: Security access rights for cart and tote records are configured automatically. No manual access setup is needed.
  2. Create Tote Types

    Go to Inventory β†’ Configuration β†’ Tote Types and define each tote size you want to use. The screenshots show examples such as Large Clear, Small Clear, and Diaper Box, each with its own volume.

  3. Create Cart Types

    Open Inventory β†’ Configuration β†’ Cart Types and create the cart layouts used in your warehouses. In the example flow, there are 3 Tote Cart, 4 Tote Cart, and 9 Tote Cart records, each linked to a tote type and tote count.

    FieldDescription
    Name The cart layout name shown to users, for example 3 Tote Cart or 9 Tote Cart
    Tote Type The tote size this cart layout is built for, such as Large Clear or Small Clear
    No of Tote The number of tote slots available on that cart layout
  4. Create Pick Carts per Warehouse

    Open Inventory β†’ Configuration β†’ Pick Cart and create a record for each physical cart. Set the cart barcode, choose the cart type, and assign the warehouse. The form view in the screenshots shows carts such as IN/Pick/3 Tote Cart/Cart 1 and PA/Pick/9 Tote Cart/Cart 1.

    πŸ““
    Totes tab: Each pick cart contains its tote rows directly on the form, including the tote barcode, tote type, and volume. This is the structure that the wave assignment later uses in the Barcode app.
  5. Review the Cart Totes List

    Open Inventory β†’ Configuration β†’ Totes to confirm every tote barcode has been generated or entered correctly. The list view shows the tote name, barcode, volume, and tote type for all carts across all configured warehouses.

    βœ…
    Verification checklist:
    • Each physical cart has the right warehouse assigned
    • Every tote row has a unique barcode
    • The tote type matches the cart layout
    • The number of totes on the cart matches the cart type definition
  6. Generate Waves with the Manual Wave Wizard

    Go to Inventory β†’ Operations β†’ Manual Wave. Select one or more warehouses, choose the delivery method, and optionally filter by product categories or expected delivery date. Clicking Generate Wave creates one or more wave transfers and shows their references in the confirmation popup.

    ⚠️
    Wave prerequisites: The wizard works with ready pickings that are not already assigned to another batch, and it requires pick carts to be configured for the selected warehouse.
  7. Review the Wave Transfer Before Picking

    Open the created wave in Inventory β†’ Operations β†’ Wave Transfers. The form shows the operation type, assigned pick cart, cart type, carrier, and the detailed operations table with one tote assignment per transfer. From here you can also print labels and launch the Barcode flow.


Printing Tote Labels

From any wave transfer, click Print Labels to generate the tote labels used during picking. The labels tie the physical cart slots to the digital transfers shown on the wave form and in the Barcode app.

  • The tote barcode for scanning in the Barcode app
  • The picking reference linked to this tote
  • The destination location so pickers know where to drop the tote
πŸ”„
Picking Flow
How a wave batch moves from creation through cart assignment, scanning, picking, and validation.

End-to-End Wave Flow

Wave
Created
Cart & Tote
Assigned
Barcode Batch
Opened
Cart / Source /
Product Scanned
Wave
Validated
Transfers &
Wave Done

Detailed Step-by-Step

  1. Create the Wave Batch

    A warehouse manager opens the Manual Wave Wizard, selects warehouses and a delivery method, applies optional date/category filters, and generates the wave. The confirmation popup lists the wave references that were created.

  2. Review the Wave Transfer

    Before picking starts, the manager can open the wave transfer and verify the assigned pick cart, cart type, carrier, and tote-to-transfer mapping in the detailed operations table.

  3. Open the Batch in Barcode

    The picker opens Barcode β†’ Operations β†’ Batches and selects the in-progress wave. The batch card shows the wave reference, cart type, carrier, and line count before the picker enters the job.

  4. Scan the Assigned Pick Cart

    Inside the batch, the first banner asks the picker to Scan Pick Cart. Once the correct cart barcode is scanned, the barcode screen updates to show the tote assignments for each transfer in the batch.

    • The wave header shows the selected cart and carrier
    • Each transfer row displays its assigned tote name
    • The picker cannot start the batch until the cart scan step is complete
  5. Pick by Tote and Source Location

    For each transfer, the Barcode app shows the assigned tote prominently and then prompts the picker to scan the source location and products. As quantities are completed, the transfer cards turn green and the Validate button becomes available.

  6. Validate the Wave and Review Results

    Once all transfers are complete, the picker taps Validate. The wave moves to Done, and the linked pickings show the wave history and tote assignment that was used during execution.


Wave Review Checklist

ScreenWhat to ReviewWhy it Matters
Manual Wave Wizard Warehouse selection, delivery method, optional product category and delivery-date filters Ensures the wizard groups the correct set of ready pickings into the wave.
Wave Transfer Pick cart, cart type, carrier, and the detailed operations rows with transfer/tote mapping Lets the manager confirm that the cart selected for the batch has enough tote capacity and that each transfer is routed to the correct tote.
Barcode Batch Scan Pick Cart prompt, tote labels per transfer, completion counters, and the Validate button state Confirms the picker is following the guided barcode flow and that the batch is fully complete before validation.
🧬
Technical Reference
Models, fields, JavaScript overrides, and file structure for developers and integrators.

Module Dependencies

ModuleTypePurpose
stock_barcodeHardBarcode app β€” required for cart/tote scan enforcement
stock_barcode_picking_batchHardBatch picking barcode integration
stock_picking_batchHardWave/batch transfer framework
stockHardCore inventory and move line models
deliveryHardDelivery carrier selection in the wave wizard and carrier visibility on the wave/batch screens
stock_deliveryHardStock delivery integration

Key Models & Fields

ModelField / ExtensionDescription
pick.cartCore modelPhysical cart record with name, barcode, cart type, warehouse, and linked tote rows
cart.typeCore modelTemplate for a cart layout, including tote type and number of tote slots
cart.toteCore modelIndividual tote slot with its own barcode and tote type, attached to a pick cart
tote.typeCore modelDefines tote capacity/volume used by the manual wave grouping logic
stock.picking.batchExtendedAdds pick cart, cart type, and carrier fields, then assigns one tote per transfer inside the wave
stock.pickingExtendedAdds cart tote/carrier helper fields and preserves tote context when the pick transfer moves forward
stock.move.lineExtendedAdds tote assignment fields to barcode data and move-line records
stock.picking.typeExtendedAdds auto-print toggles for local carrier labels and invoices

JavaScript & Barcode App Overrides

FileOverridesPurpose
models/barcode_picking_model.js BarcodePickingModel Adds cart and tote scan validation logic to the single-picking barcode flow
models/barcode_picking_batch_model.js BarcodePickingBatchModel Extends the batch barcode model to handle wave-level cart scan, tote scan per picking, and wave popup messages
lazy_barcode_cache.js LazyBarcodeCache Extends the barcode cache to include cart and tote barcode lookups without extra RPC calls
components/main.js / main.xml Main barcode component Adds cart/tote scan UI panels, popup message overlay, and pick info banner
components/line.xml Move line component Adds tote assignment display to each line in the barcode app picking list
css/pick_info.css Styles Styles for the pick info banner, tote scan panel, and wave popup overlay

Wizards

WizardPurpose
manual.wave.wizManual wave creation wizard β€” selects ready pickings by warehouse, carrier, date, and category, then creates waves sized to cart capacity
wave.popup.msgWave popup message configuration wizard β€” define messages shown to pickers at wave milestones
choose.delivery.packageExtended delivery package selection dialog with tote assignment support

File Structure

stock_pick_cart/ β”œβ”€β”€ __init__.py β”œβ”€β”€ __manifest__.py # name, version, depends, license β”œβ”€β”€ security/ β”‚ └── ir.model.access.csv # Access rights for cart & tote models β”œβ”€β”€ report/ β”‚ └── barcode_report.xml # Tote label barcode report template β”œβ”€β”€ wizard/ β”‚ β”œβ”€β”€ manual_wave_wiz.xml # Manual wave creation wizard β”‚ β”œβ”€β”€ wave_popup_msg.xml # Wave popup message wizard β”‚ └── choose_delivery_package_view.xml # Extended delivery package dialog β”œβ”€β”€ views/ β”‚ β”œβ”€β”€ stock_pick_cart_view.xml # Cart list & form views β”‚ β”œβ”€β”€ stock_pick_cart_menu.xml # Menu items under Inventory β”‚ β”œβ”€β”€ stock_picking_batch.xml # Batch transfer extensions β”‚ β”œβ”€β”€ stock_move_line.xml # Move line with tote column β”‚ β”œβ”€β”€ stock_picking.xml # Picking form extensions β”‚ β”œβ”€β”€ stock_package_type_view.xml # Package type tote config β”‚ β”œβ”€β”€ stock_barcode_inherit.xml # Barcode app view inheritance β”‚ └── stock_picking_type_view.xml # Operation type pick cart tab └── static/src/ β”œβ”€β”€ models/ β”‚ β”œβ”€β”€ barcode_picking_model.js # Picking barcode model override β”‚ └── barcode_picking_batch_model.js # Batch barcode model override β”œβ”€β”€ lazy_barcode_cache.js # Barcode cache extension β”œβ”€β”€ components/ β”‚ β”œβ”€β”€ main.js # Main barcode component JS β”‚ β”œβ”€β”€ main.xml # Main barcode component template β”‚ └── line.xml # Move line component template └── css/ └── pick_info.css # Pick info & tote scan styles

Security Notes

πŸ”’
Access control: Cart and tote records follow standard Odoo inventory access rules. Warehouse managers can create and configure carts; warehouse users have read access. All access rights are defined in security/ir.model.access.csv.
πŸ’‘
Barcode app compatibility: All JavaScript overrides use Odoo’s standard OWL component inheritance pattern. No monkey-patching is used, ensuring compatibility with future Odoo 19 barcode app updates.
πŸ‘€
Picker Guide
Step-by-step guide for warehouse pickers using the wave batch and cart workflow shown in the Barcode app screenshots.

Before You Start

Make sure the assigned physical cart is available, tote labels are attached to each slot, and you have a scanner or mobile device running the Odoo Barcode app.

Step-by-Step Picking

  1. Open the Batch Queue

    Open the Odoo Barcode app and go to Operations β†’ Batches. Select the in-progress wave assigned to your warehouse team. The batch card shows the wave reference, carrier, cart type, and the number of transfer lines.

  2. Scan the Cart Barcode

    When the batch opens, the first banner asks you to Scan Pick Cart. Scan the barcode on the physical cart assigned to that wave before attempting any picking.

    πŸ’‘
    If you scan the wrong cart, the app will show an error. Pick up the correct cart shown on screen before proceeding.
  3. Confirm the Tote Assignments

    After the cart is scanned, each transfer row shows the tote assigned to it, such as IN/Pick/3 Tote Cart/Cart 3/Tote 1. Use those on-screen tote names to place products into the correct cart slot.

  4. Scan Source Location and Products

    Follow the next barcode prompts for the transfer. The screenshots show the app asking for the source location and then for the products/quantities on each line. Pick the item and place it into the tote shown on that row.

    • Scan the requested source location when prompted
    • Scan the product barcode and complete the requested quantity
    • Watch the line counters change from 0/1 to 1/1
  5. Repeat Until All Rows Turn Complete

    Continue through each transfer in the batch. When a transfer is fully picked, its row turns green and the line counter shows that the required quantity is complete.

  6. Validate the Wave

    Once all rows are complete, tap Validate. The wave moves to Done, and the completed transfers remain linked to the wave and their tote assignments on the standard Odoo forms.


Frequently Asked Questions

QuestionAnswer
What if I scan the wrong tote? The app will show an error message. Scan the correct tote label (shown on screen) to proceed. No picking action will be accepted until the right tote is scanned.
What if a product is out of stock? Follow your warehouse shortage process and ask the manager to review the transfer before final validation. The screenshots and code focus on cart/tote flow rather than custom shortage rules.
Can I skip a tote and come back to it? Work through the transfers shown in the batch so the tote assignments remain consistent with the wave. If the order needs to change, ask the warehouse manager to review the wave first.
What does the popup message mean? Popup messages are configured by your warehouse manager to guide you at key steps (cart scan confirmed, tote change, wave complete). Read them and tap OK to continue.
What if my cart barcode won't scan? Try entering the cart barcode manually using the keyboard input on the scan prompt. If the cart is not recognised, contact your warehouse manager to verify the cart record in the system.
πŸ“Έ
Real Screenshots
Actual screenshots from your ZIP, covering configuration, wave creation, barcode execution, and completed transfer traceability.

Configuration


Wave Creation


Barcode Execution


Completion & Traceability

Need Help or a Custom Feature?

Our team at Shadail Technology is here to help you get the most out of Odoo. Reach out for support, customisation, or consulting.

Contact Us

Download The App From Here


Download Here