Scrap damaged or lost goods directly from the Barcode scanner app.
The operator picks the internal location the goods are written off from, scans them (with a GS1 parser installed, a GS1 label also gives its lot/serial and piece count), sets the quantities, chooses the scrap reasons and scraps. Each line becomes a native stock.scrap, created and validated on the spot, so the stock leaves the location for the scrap location exactly as it does from the back office.
This is a feature module on top of barcode_scanner: it registers its own screens, scan handling and home-screen tile into the scanner core without patching it, so you install only what you need.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Lets warehouse operators scrap damaged or lost goods directly from the Barcode scanner app: pick the source location, scan products, set quantities and reasons, and the stock is written off immediately.
This module adds a "Scrap Products" tile to the Barcode scanner home screen. Tapping it opens a short guided flow.
- First the operator chooses or scans the internal location the goods are written off from; only internal locations are accepted.
- Then a scrap screen lists the goods to write off. Scanning a product adds a line (a GS1 label can also bring its lot/serial number and piece count); a "+" button opens a product search limited to storable goods, offering first what the location actually holds.
- Each line shows how much of that product (and lot) the location holds, and the lot field suggests the lots really stored there. Quantities can be edited and lines removed.
- The operator picks one or more scrap reasons, and can create a new reason on the spot; an existing reason with the same name is reused instead of duplicated.
- A destination scrap location is preselected from the company's scrap locations and can be changed.
When the operator confirms, one native scrap record is created per line and validated immediately, so stock leaves the location exactly as from the back office. If a line asks for more than is available, nothing is written: a warning lists the short lines and the operator may choose to scrap anyway. Tracked products require a valid existing lot/serial, and serial numbers can only be scrapped one unit at a time. The module extends stock.scrap and relies on stock.location, stock.quant, stock.lot and stock.scrap.reason.tag.
Depends on
Models and fields (1)
- stock.scrap · extends an existing model
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 1 confirmed, 8 with no information of 9 versions.
Sources · Odoo 18.0
Confirmed on 2026-11-03 in branch 18.0 of OCA/barcode-interface.
terminal Installation and usage
OCA documentation · Odoo 18.0Usage
Source · Odoo 18.0From the Barcode app home screen, tap Scrap Products.
Scrap goods
- Pick or scan the location the goods are written off from. Scanning a location barcode jumps straight to the scrap lines; otherwise choose one from the searchable list of internal locations.
- Scan each product to scrap: a plain barcode adds one unit. With a GS1 parser installed, a GS1 label also gives its lot/serial and its piece count (AI 30/37); a net weight on the label is not taken as the quantity. Scanning the same product and lot again adds to its line. Tap "+" to add a product by hand; with no search it lists what the location holds. Only goods can be scrapped, as in the back office: services are not offered.
- Each line shows how much of it the location holds. Adjust the quantity if needed.
- Choose the scrap reasons and tap Scrap. A reason that does not exist yet can be created on the spot with New reason, as the back office's reason field allows; typing the name of an existing one (in any case) picks that one instead of creating a duplicate.
Lots and serial numbers
A lot is found by its exact name: lots whose names differ only in case are different lots. A name typed in another case finds its lot only when it names a single one.
A lot/serial-tracked product needs its lot/serial: read from the GS1 label, or typed into the line, which suggests the lots stored in that location. When the location holds a single lot of the product, it is filled in. A serial number is scrapped one unit at a time and can only appear once.
Stock shown and not enough stock
The quantity each line shows is what a scrap made from the scanner can take: the net quantity at the location itself, outside packages and not owned by a partner, as validating the scrap counts it. Goods in a package or owned by a partner are scrapped from the back office, where the scrap takes a package and an owner.
When a line asks for more than that, nothing is scrapped yet: the scanner lists what is short and asks whether to scrap anyway — the same choice the back office offers through its insufficient-quantity wizard. Confirming scraps the lines it was asked about; lines changed in between are checked again.
Destination
The goods go to the scrap location the back office preselects for the company, and can be sent to any scrap location of the company or a shared one instead. When the company has none of its own, the first shared one is taken; with no scrap location at all, scrapping waits until one is created.
Reading more from a label
The quantity a scan stands for comes from `ScrapScreen.scannedQuantity(scan,
productUomId): the piece count, or one unit. A module that reads more from a label (a GS1 net weight, say) can patch it to convert that into the product's unit, as barcode_stock offers with its own scannedQuantity`.
No verified information in OCA: Installation, Configuration.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.