AIVcoreOdoo development
en
All publications
Case2 April 20262 min read

A mobile scanning app for an Odoo warehouse

The stock Barcode module could not handle 900 picking lines per shift and broke on Wi-Fi loss. We built a Flutter app with an offline queue syncing over JSON-RPC.

Project facts

Client
Дистрибьютор автозапчастей
Industry
Дистрибуция
Duration
7 недель
Stack
Odoo 17FlutterJSON-RPCZebra TC21Offline-режим
×2.4
order picking speed
-91%
mis-picking errors
0
downtime on network loss

Why the standard module was not enough

The client has 12,000 SKUs and up to 900 picking lines per shift. Odoo's built-in scanning interface worked, but:

  • when Wi-Fi dropped in the far aisles the operation failed and had to be restarted;
  • every scan required a network round trip — up to 2–3 seconds on a weak signal;
  • there was no batch picking across several orders at once;
  • Zebra handhelds with a hardware scanner were awkward to use inside a browser.

What we built

A Flutter application

One codebase for Android handhelds (Zebra TC21/TC26) and regular smartphones. Hardware scan button support through DataWedge, large touch targets for gloved hands, sound and vibration feedback on every operation.

Offline queue

The key decision: the app keeps a local copy of the picking task and writes every action into a local SQLite queue. Synchronisation with Odoo runs in the background with retries and server-side conflict resolution. A picker physically cannot get stuck because of the network.

A custom Odoo module

To keep traffic minimal we wrote a module with a compact JSON-RPC API:

  • wave.picking — wave picking: orders are grouped into waves by warehouse zone;
  • one request returns the whole task including barcodes, locations and stock;
  • batch confirmation with idempotency keys (a retry never creates duplicates);
  • discrepancy reporting with a photo taken in the app.

Picking route

Line order is calculated from the real warehouse geometry — operators no longer walk end to end, they follow a single pass.

Results

  • order picking is 2.4× faster;
  • mis-picking errors dropped by 91% — shipping is impossible without scanning the item barcode;
  • Wi-Fi loss no longer stops work;
  • receiving, stock counting and internal transfers run in the same app.

Technical notes

Authentication uses a restricted Odoo service user plus a device token. Every operation is attributed to a real employee (PIN code at shift start), so Odoo always shows who did what.

Similar challenge?

Describe your process — we will estimate the scope and timeline.

Related publications