Barcode Stock
barcode_stock · OCA/barcode-interface
-
Security25/25No findings
-
Activity25/25Human commit this month
-
Required by20/253 modules depend on it
-
Maturity5/25In 1 Odoo series since 18.0
Heuristic over the facts below, not an audit · How it's computed
Migration considerations
- Raw `cr.execute()` INSERT/UPDATE/DELETE bypasses the ORM (no compute/constrains/tracking/mail): `SELECT id FROM stock_quant WHERE id IN %s FOR NO KEY UPDATE SKIP LOCKED` - re-check the table/column names still match after upgrading. migration-raw-sql-write · source
Migration review checklist, not a compatibility verdict. "Migrating to X.0" applies once you upgrade to that version; "Since X.0" means this version already ignores or rejects that code. Methodology
Description
This module is the warehouse application of the Barcode suite. It builds on
the barcode_scanner base framework and registers the stock operation screens,
scan handlers and menu tiles into it.
It covers the following operations:
- Receipts (incoming shipments)
- Deliveries (outgoing shipments)
- Internal transfers
- Quick product and location information
Only EAN13 barcodes are supported. Real-time validation and audio/vibration feedback are provided on each scan.
Dependencies
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- barcode_gs1_stock, barcode_stock_partner_delivery_zone, barcode_stock_quality
Code analysis
Extracted from the source by best-effort static analysis (no code is executed); details may be incomplete.
Views touched 1
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
view_location_form_inherit |
stock.location.form.inherit | stock.location | form | Inherits stock.view_location_form |
HTTP endpoints 0
No HTTP endpoints found for this module.
Models touched 6
No new fields.
Public methods (1)-
parse_barcode_scanner_barcode(self, barcode)@api.model
-
barcode_default_filtersJsondefault=dict
-
SELF_READABLE_FIELDS(self)@property -
SELF_WRITEABLE_FIELDS(self)@property
-
is_fully_pickedBooleancompute='_compute_qty_progress'store=Falsestring='Fully Picked' -
qty_done_totalFloatcompute='_compute_qty_progress'store=Falsestring='Done' -
qty_remainingFloatcompute='_compute_qty_progress'store=Falsestring='Remaining Quantity'
-
barcode_pick_lot(self, lot_id, quantity, location_id=False, location_dest_id=False)Pick a lot the move's reservation does not carry, the way Odoo reserves stock rather than by rewriting another lot's line. As much of the other lots' reservation as the lot replaces is released first. The lot is then taken from its own quants under the move's source (or the one the operator chose), in the order of the removal strategy: stock nothing holds first, then stock other moves hold, whose reservation Odoo frees on validation. Each quant gives a line, with its shelf, package and owner, marked picked and sent to the destination the operator chose, if any. Picking more than the lot holds there is allowed, as Odoo allows it: what is over goes on the last line, and validating leaves a negative quant that shows the gap. With no stock at all, the lot is only picked from a source the operator chose.
-
validated_on_dateDatetime
No public methods.
No new fields.
Public methods (2)-
action_barcode_scanner_check_availability(self, origin_location_id, destination_location_id, lines, responsible_id=False)@api.model -
action_barcode_scanner_internal_transfer(self, origin_location_id, destination_location_id, responsible_id, lines)@api.model
No new fields.
Public methods (3)-
action_apply_inventory(self) -
action_apply_inventory_from_scanner(self) -
barcode_lot_location(self, product_id, lot_id, location_id)@api.modelWhere a lot would be picked from under a location, as Odoo's own reservation takes it: the first of its quants there in the order of the removal strategy (FIFO, LIFO, closest, FEFO...), one with stock not reserved yet if any; otherwise one with stock, whose reservation Odoo frees on validation. :return: the location as ``[id, display_name]``, or False when the lot has no stock there