Troubleshooting: the Barcode app
Odoo Enterprise: Barcode app 3PL add-on For: Administrator, Compliance manager, Warehouse staff Checked on 18.0.0.2.0, 18.0.1.0.0
What to do when a scan in Odoo Enterprise's Barcode app is refused or not recognized, or a transfer won't validate from the app. Entries are ordered from the most frequent. Many texts belong to the package ledger's checks and appear the same way in the Scan Serials dialog of the Inventory forms; each entry links to the page that explains the cause in depth. Abbreviations: GTIN: Global Trade Item Number; SSCC: Serial Shipping Container Code (see the glossary).
The Barcode app answers a scan in one of three ways:
- Not recognized: Odoo's own texts, such as "This product doesn't exist.". Nothing is sent to the package ledger.
- A yellow notification: a warning; nothing changes.
- A red notification: a refusal. It starts "Nothing was registered. Fix these scans and try again:", then names the scan ("Serial SERIAL:") and the reason. Nothing of that scan is recorded. The notification stays a few seconds; the serial is often named twice ("Serial 500000008001: Serial 500000008001 can't be used here …", PF-A10-12).
A refusal at Validate opens Odoo's "Invalid Operation" dialog over the app.
The Barcode app says "This product doesn't exist."
What you see: after a scan of a unit's DataMatrix, the notification "This product doesn't exist." (on some screens: "You are expected to
scan one or more products or a package available at the picking location"). No line changes. When a line of the same product is selected
(just after another scan), a code with a prefix or a literal <GS> adds a sub-line whose lot is the whole code you scanned instead (for
example ]d201003999901013001728063010BPDPZ2509A…), with the quantity 1.
When: scanning in Receive DSCSA units, Pick and ship a delivery or Count DSCSA stock.
Cause: the app didn't read the scan as a GS1 DataMatrix with a serial number, or doesn't know the product. One of:
- the company uses Default Nomenclature instead of Default GS1 Nomenclature;
- the scanner adds a symbology prefix (
]d2, Known issue PF-A10-08), sends the separator as text (<GS>), or drops it, so the lot runs into the serial; - in an Inventory count, a lot-only code, or a scan on the app's start screen: the product has no Barcode;
- the product isn't a DSCSA product and has no Barcode (standard Odoo behaviour).
Remedy: resolution.
- Set the company's nomenclature to Default GS1 Nomenclature (BC-01).
- Set up the scanner: Enter suffix, separator as ASCII 29 or
#, no prefix (BC-02). Typed by hand, use#for the separator (01003999901029011728093010BPSMS2509C#21400000000003), or type the human-readable form printed next to the code ((01)00399990102901(17)280930(10)BPSMS2509C(21)400000000003): the app reads both. - For counts and lot-only scans, enter the GTIN in the product's Barcode field (BC-02).
- If a sub-line named after the whole code appeared, select its trash icon to take it off the line. It holds no serial, and the serial count would refuse Validate because of it.
- Scan again.
Who can fix it: Administrator (Administration: Settings) for the nomenclature and the products; the warehouse for the scanner.
Error: "Only DSCSA users can scan DSCSA serials onto a transfer"
What you see: a red notification:
Only DSCSA users can scan DSCSA serials onto a transfer.
When: scanning a DSCSA unit on any transfer in the app, as a user with Inventory rights but no Rx Tracking right.
Cause: recording a serial in the package ledger needs the Rx Tracking User right. The Barcode app itself only needs Inventory User, so the user can open the transfer but not scan DSCSA units. Such a user can still Validate: the serial count then refuses the DSCSA lines ("… 8 expected, 0 scanned.").
Remedy: resolution. Give the user the Rx Tracking User right (Give staff the right Rx Tracking access), or let an Rx Tracking user scan. See also Error: "Only DSCSA users …".
Who can fix it: Administrator (Administration: Settings).
Warning: "Serial … is already scanned on this transfer"
What you see: a yellow notification, for example:
Serial 400000000002 (lot BPSMS2509C) is already scanned on this transfer.
In an Inventory count: "Serial SERIAL of PRODUCT is already counted."
When: scanning the same unit twice on one transfer, or twice in one count.
Cause: the unit is already recorded. The quantity doesn't change: nothing is counted twice.
Remedy: none needed. If the count of scanned units looks wrong, compare the Inventory form's DSCSA Packages tab with the units in hand (BC-07).
Who can fix it: the person scanning.
Error: "… can't be used here: it is …"
What you see: a red notification, for example:
Nothing was registered. Fix these scans and try again: Serial 500000008001: Serial 500000008001 can't be used here: it is Quarantined.
The state can also be Shipped, Missing, Destroyed, Returned or Received.
When: scanning a unit on a delivery or an internal transfer (BC-04, BC-05).
Cause: the unit's state in the package ledger doesn't allow this move: its lot is quarantined, it was already shipped, it was recorded missing or destroyed, or it is a return waiting for its decision.
Remedy: resolution. Put the unit aside and scan another one. For a quarantined lot, see Error: lot quarantined; for the other states, see Error: package state on a delivery.
Who can fix it: Rx Tracking Manager (releasing a lot, deciding a return).
Error: "… is not in the package ledger, so it can't be shipped or moved"
What you see:
Nothing was registered. Fix these scans and try again: Serial SERIAL: Serial SERIAL is not in the package ledger, so it can't be shipped or moved.
When: scanning a unit on a delivery or an internal transfer.
Cause: no package with this GTIN and serial was ever received or registered. A misread serial (a missing separator) gives the same text.
Remedy: resolution. Check the serial printed on the label. If the unit is really in stock but predates the ledger, register it with the opening balance. See Error: not in the package ledger.
Who can fix it: Rx Tracking Manager (opening balance).
Error: "… is already registered (state: …). A duplicate serial is a suspect-product signal …"
What you see:
Nothing was registered. Fix these scans and try again: Serial 200000000012: Serial 200000000012 is already registered (state: Shipped). A duplicate serial is a suspect-product signal: do not receive it until it is investigated.
When: scanning a unit on a receipt (BC-03).
Cause: the package ledger already has a unit with this GTIN and serial.
Remedy: put the unit aside; your suspect-product procedure applies. See Error: duplicate serial.
Who can fix it: Rx Tracking Manager.
Error: the scan's lot or expiry doesn't match
What you see: a red notification with one of:
Serial SERIAL: the scan has no lot number (AI 10).
Serial SERIAL: the scan says lot LOT expires DATE, but the lot expires DATE.
Serial SERIAL: the scan says lot LOT but the ledger has lot LOT.
Serial SERIAL: the scan says expiry DATE but the ledger has DATE.
When: the first two on a receipt, the last two on a delivery, a transfer or a return.
Cause: the label disagrees with the records: on a receipt, the code has no lot, or names a lot that exists with another expiry date; on a delivery, the ledger recorded this unit with another lot or expiry when it was received. On a delivery, a code without a lot is accepted: the lot comes from the ledger.
Remedy: put the unit aside and check its label against the supplier's documents. See Error: expiry mismatch and Error: lot mismatch.
Who can fix it: Rx Tracking Manager.
Error: "… is not on this transfer"
What you see:
Nothing was registered. Fix these scans and try again: Serial 400000000005: [DEMO-SMS-40] Samplostatin 40 mg Tablets, 90 count is not on this transfer.
When: scanning a unit of a product the transfer doesn't list, or any DSCSA unit on a transfer you created in the app with New.
Cause: DSCSA scans are placed on an existing line of the product. A transfer created in the app has no line yet (PF-W25-03).
Remedy: resolution. Scan the unit on the transfer of its order. For an internal move, scan the lot instead of the serial (BC-05). See also Error: wrong product.
Who can fix it: the person scanning.
Error: "… packages scanned but only … ordered"
What you see:
Nothing was registered. Fix these scans and try again: [DEMO-SMS-40] Samplostatin 40 mg Tablets, 90 count: 2 packages scanned but only 1.0 ordered.
Also: "PRODUCT: only N more unit(s) of lot LOT are available in LOCATION, but N were scanned." (not shown in the example database).
When: scanning one unit more than the delivery's line asks for; on a transfer created in the app, "… 1 packages scanned but only 0.0 ordered." after a lot scan created the line.
Cause: a delivery can't ship more units than ordered, nor more of a lot than is available there.
Remedy: resolution. Don't ship the extra unit; if you scanned one too many, remove it (BC-07). See Error: over count and Error: lot unavailable.
Who can fix it: the person scanning; a salesperson changes the order.
Error: "This barcode can't be read as a GS1 DataMatrix"
What you see:
This barcode can't be read as a GS1 DataMatrix: GS1 date '281331' has an invalid month 13.
When: scanning a unit of a DSCSA product whose Barcode is set, when the code has an impossible date or a field that is too long. For a product without Barcode, the same scan gives "This product doesn't exist.".
Cause: the label is damaged or printed wrong, or a manual entry has a typing error.
Remedy: scan the label again, or type the code carefully (use # for the separator). If the label is wrong, put the unit aside. See
Error: "Some lines could not be read" for the reader's texts.
Who can fix it: the person scanning; the supplier for a misprinted label.
Error: "… is held for …, not for …" (3PL)
What you see:
Nothing was registered. Fix these scans and try again: Serial 600000011003: Serial 600000011003 is held for Northwind Generics LLC, not for our own stock: it can't be used on this transfer.
When: with 3PL on, scanning a unit of an owner's stock on a transfer of our own stock or of another owner (or ours on an owner's).
Cause: units in our custody can only be used on transfers of their owner.
Remedy: resolution. Scan the unit on its owner's transfer, or scan one of the right stock. See Scan owner stock in the Barcode app and Error: held for another owner.
Who can fix it: the person scanning.
Error: "… was announced by the supplier for …'s receipt …: receive it there" (3PL)
What you see:
Nothing was registered. Fix these scans and try again: Serial 600000015001: Serial 600000015001 was announced by the supplier for Northwind Generics LLC's receipt WH/IN/00010: receive it there.
Or "… was announced by the supplier for our own receipt RECEIPT: receive it there.".
When: with 3PL on, scanning a unit on a receipt while a supplier file imported on another open receipt lists it.
Cause: the unit belongs to the other receipt's shipment.
Remedy: resolution. Open that receipt and scan the unit there. See Error: announced for another receipt.
Who can fix it: the person scanning.
Error: a returned unit doesn't match our sale
What you see: a red notification with one of:
Serial SERIAL was shipped to CUSTOMER, not to CUSTOMER.
Serial SERIAL is not in our package ledger: we never received it, so it can't be a return of our own sale.
Serial SERIAL was never shipped (the package ledger has it In Stock), so it can't be a return of our own sale to CUSTOMER.
Serial SERIAL has no record of a shipment to CUSTOMER.
Serial SERIAL is In Stock in the package ledger, and no unit of lot LOT shipped to CUSTOMER without serials is still out, so it can't be matched at lot level.
Serial SERIAL: set the customer on the return first; returned serials are matched against what we shipped to that customer.
When: scanning units on a customer return (BC-06).
Cause: a returned unit must be one we shipped to that customer (or, for a small dispenser, a unit of a lot shipped to it at lot level). The first text was reproduced with a unit shipped to Hillcrest scanned on Riverside's return; the others come from the same check.
Remedy: put the unit aside; it is not a return of our sale to this customer. See Error: another customer, Error: not our sale, Error: lot level and Error: no customer.
Who can fix it: Rx Tracking Manager (your suspect-product procedure decides what happens to such a unit).
Error: "… was sold by …: it can only come back into the stock of …" (3PL)
What you see:
Nothing was registered. Fix these scans and try again: Serial 600000011002: Serial 600000011002 was sold by Northwind Generics LLC (we hold its stock as a 3PL): it can only come back into the stock of Northwind Generics LLC, not into ours. Use "Return" on the delivery of Northwind Generics LLC, or hold this return for Northwind Generics LLC ("Held for Owner") before scanning.
Its variants: "… was sold by us: it can only come back into our own stock, not into the stock of OWNER. …", "… was sold by SELLER: it can only come back into the stock of SELLER, not into the stock of OWNER. …" and "… was sold by SELLER: it can only come back into that seller's stock, not into TARGET.".
When: with 3PL on, scanning a returned unit on a return of the wrong stock.
Cause: a unit comes back into the stock of the party that sold it.
Remedy: resolution. Create the return from the seller's delivery, or set Held for Owner on the return in the Inventory form before scanning. See Take back units an owner sold.
Who can fix it: Rx Tracking User or Manager.
Other scan refusals
What you see: a red notification with one of these texts (not shown in the example database; they come from the same checks):
Serial SERIAL is already scanned on REFERENCE.
Serial SERIAL belongs to PRODUCT.
several products have GTIN GTIN.
PRODUCT (GTIN GTIN) is not a DSCSA product.
GTIN GTIN is unknown and PRODUCT already has GTIN GTIN.
PICKING is already done or cancelled.
Serial SERIAL: title-transfer moves take no scans. Select the serials on the title transfer (Rx Tracking > 3PL > Title Transfers).
When: scanning in the app.
Cause: in order: the unit is waiting on another open transfer; the serial belongs to another product; two products share the GTIN; the GTIN's product isn't a DSCSA product; the app found a product by its Barcode whose GTIN differs from the scan's; the transfer was completed or cancelled meanwhile (for example on another device); a title transfer (3PL) takes no scans.
Remedy: remove the unit from the other transfer first (BC-07); fix the products' GTIN and Barcode (Set up a DSCSA product); reopen the transfer list; select serials on the title transfer (Error: title-transfer scans).
Who can fix it: Rx Tracking Manager for products; the person scanning otherwise.
The transfer won't validate from the Barcode app
What you see: after Validate, an "Invalid Operation" dialog, most often:
PICKING can't be validated: scan one DSCSA serial for each unit being validated.
- PRODUCT: EXPECTED expected, SCANNED scanned.
Scan the missing serials, unscan the extra ones, or change the quantities to validate (the rest can go to a backorder).
When: validating in the app, for example before scanning (Allow full picking validation), after changing a DSCSA line with -1, +1 or a typed quantity, after lot-only scans, or in a batch transfer.
Cause: each DSCSA unit on the lines you validate needs one scanned serial. Quantities changed in the app don't change the scanned units.
Remedy: resolution.
- Scan the missing units. To remove extra ones, use the Inventory form's DSCSA Packages tab (BC-07): the app can't unscan.
- Select Close, reopen the transfer in the app and select Validate again.
Other refusals at Validate come from the same checks as in the Inventory form: the supplier's or customer's license (master data), a quarantined lot (exceptions), the serial count details (receive), a return (returns), owner isolation with 3PL (access and setup), a line that takes another owner's lot ("… a line (lot LOT) takes units held for OWNER, but the move is for OWNER.", see the owner-aware lot pre-fill), and just-in-time units ("… takes units held for OWNER, which we buy just in time: scan the serial of each of those units first.", see Error: just-in-time pick scans).
Who can fix it: the person scanning; Rx Tracking Manager for licenses and holds.
Error: "The inventory adjustment can't be applied"
What you see: after Apply in the DSCSA Serials dialog opened by a count, for example:
The inventory adjustment can't be applied:
[DEMO-DPZ-20] Demoprazole 20 mg Delayed-Release Capsules, 30 count, lot BPDPZ2509B at WH/Stock:
- Line 1: Serial 500000005024 can't be used here: it is Shipped.
When: applying a count that changes a DSCSA quantity (BC-08).
Cause: a serial in the dialog isn't a unit of that lot in that location in the right state, or the number of serials differs from the difference.
Remedy: correct the serials in the dialog and select Apply again. See Error: wrong serial in a count and Error: serial count.
Who can fix it: Rx Tracking User; units found need an Rx Tracking Manager.
Error: scrap refused in the Barcode app
What you see: after Scrap on the app's Scrap page, an "Invalid Operation" dialog:
Demoprazole 20 mg Delayed-Release Capsules, 30 count is a DSCSA product: scan the serial of each unit being scrapped (DSCSA Serials).
For a user without an Rx Tracking right, an "Access Error": "Only DSCSA users can scrap PRODUCT: the serials of the scrapped units must be recorded in the package ledger."
When: scrapping a DSCSA product from the Barcode app (BC-09).
Cause: the app's Scrap page has no field for the serials (PF-A10-01).
Remedy: workaround. Scrap the units in the Inventory app with their serials (Scrap DSCSA units, naming each unit's serial). The refused attempt stays as a draft scrap order named New in Inventory ‣ Operations ‣ Scrap (PF-F10-01): open it, add the serials in DSCSA Serials and select Validate (see BC-09).
Who can fix it: Rx Tracking User or Manager.
A sealed case's label records nothing
What you see: scanning a case label (SSCC) on a receipt shows "To use packages, enable 'Packages' in the settings" (with Odoo's Packages setting on, the case becomes an Odoo package). No unit is recorded.
When: receiving a sealed case in the app (BC-03).
Cause: the app can't receive a case from its label (PF-A10-03). Don't turn on Packages for this.
Remedy: workaround. Scan every unit label in the app, or scan the case label with Scan Serials in the Inventory form (Receive a sealed case by scanning its SSCC label).
Who can fix it: the person receiving.
A lot is quarantined after validating a receipt in the app
What you see: the receipt went through in the app without a warning, but its lot is quarantined and a discrepancy is open.
When: after importing a supplier file without an affirmed Transaction Statement, or with differences, and validating in the app.
Cause: the app doesn't show the receipt form's banners (PF-A10-05); validation quarantines the lot as described there.
Remedy: record the statement and release the lot (Record a missing Transaction Statement after validation). Next time, check the Inventory form for a banner before validating in the app.
Who can fix it: Rx Tracking Manager.
The line shows a wrong count, or no backorder question
What you see: a receipt line reads 2 instead of 2/12; a reopened transfer reads 12/8 or 3/3; Validate creates a backorder
without the Incomplete Transfer dialog; the pack or ship step after a pick shows 0/2.
When: after DSCSA scans in the app.
Cause: the add-on rebuilds the line for each DSCSA unit, and the app then counts the scanned units as the line's demand (PF-W25-01). The records are right; only the app's display is off.
Remedy: workaround. Check the order quantity and the scanned units on the Inventory form (Operations and DSCSA Packages tabs). On pack and ship steps, select Validate without scanning again.
Who can fix it: the person scanning.
A product left at 0 was shipped anyway
What you see: on a delivery where you scanned DSCSA units only, the Incomplete Transfer dialog said a non-DSCSA product goes to a backorder, but after Validate it was shipped in full.
When: validating a delivery with DSCSA and other products in the app (BC-04).
Cause: DSCSA scans don't count as a manual pick, so Odoo validates the other lines at their reserved quantity (PF-W25-02).
Remedy: workaround. Before validating, set the non-DSCSA line's Quantity to 0 on the Inventory form's Operations tab, or scan
the quantity you ship. A shipped product that didn't leave needs a return.
Who can fix it: the person shipping.