mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 20:16:44 +00:00
* Add support for scanning digikey and mouser barcodes * added small fixes if no part is found * made small style cleanups * Separate out ecia 2d barcode parser, Add quantity, PO number to response * Use model instead of name for mouser supplier, add auto detection magic * Add lcsc barcode support * Move barcode plugins to new suppliers subdirectory * Add get_supplier_part helper, Refactor plugins in preparation for #3791 * Add __init__.py to suppliers directory * Improve formatting * Add barcode integration tests * Add api-barcode-po-receive endpoint * Refactor supplier_barcode.py helpers into BarcodeMixin * Implement the api-barcode-po-receive endpoint for all suppliers * Always include lineitem in api response * Fix location in response, only include quantity and location if set * Check if barcode has already been assigned, Fix tests * FIx quantity and location not being in lineitem reponse * Use part.get_default_location() instead of part.default_location * Fix fomatting again * Fix type annotations for python 3.8 * Add get_supplier_part helper, check for barcode_data being a str * Fix naming clash * Clarify return type for scan_receive_item * Improve model access using first() in two places * Refactor a bunch of checks * Improve selection of line item, if multiple line items match the SKU * Add new api version for this PR * Fix error if no line item exists * Add debug print to investigate why tests are failing * Remove the test print again * Fix pre formatted log messages * Test removing all plugins * Test only with digikey plugin * Test with all plugins, but without mouser "model" setting * Test again without tests * Test with simple tests * Test with simple receive test * Test with even more receive tests * Test second receive test * Test third receive test * Test 4th receive test with debug prints * Try deleting the stock item and stock locations * Disable the test again * Add SupplierBarcodeMixin to minimize shared code between plugins * Add TME supplier barcode plugin * Remove the TME tests again * If this works the tests are broken, if this doesn't work the tests are broken too * Add TME tests again * Add back all tests again * Fix TME purchase order number * Fix TME qrcode regex * Add documentation for this feature * Fix TME qrcode regex * Use Decimal instead of int for quantity * Refactor get_supplier_parts, Add get_supplier method * Improve docstrings * Fix None type access * FIx TME barcode detection, Improve supplier barcode handling * Try to retrigger pipeline * Refactor get_supplier_parts to not use lists * Add DEFAULT_SUPPLIER_NAME to mouser plugin * Add SUPPLIER_ID setting to other suppliers * Fix supplier plugins not inheriting from settings mixin --------- Co-authored-by: Matthias Mair <code@mjmair.com>
42 lines
1.9 KiB
Markdown
42 lines
1.9 KiB
Markdown
---
|
|
title: Custom Barcodes
|
|
---
|
|
|
|
## Custom Barcode Functionality
|
|
|
|
With the provision of [internal](./internal.md) and [external](./external.md) barcode support, a lot of potential use-cases are already supported directly by InvenTree.
|
|
|
|
However, if further customization is required, or a bespoke barcode workflow which is not supported already, then this can easily be implemented using the [plugin system](../extend/plugins/barcode.md).
|
|
|
|
A custom barcode plugin can be used to (for example) perform a particular action when a barcode is scanned.
|
|
|
|
### Scanning a Barcode
|
|
|
|
To scan (process) a barcode, the barcode data is sent via a `POST` request to the `/api/barcode/` API endpoint.
|
|
|
|
### Barcode Scanning Priority
|
|
|
|
When a barcode is scanned (sent to the `/barcode/scan/` endpoint), each available "plugin" is checked to see if it returns a valid result for the provided barcode data. The first plugin to return a result prevents any further plugins from being checked.
|
|
|
|
The barcode is tested as follows, in decreasing order of priority:
|
|
|
|
- [Internal Barcode Plugin](./internal.md)
|
|
- [External Barcode Plugin](./external.md)
|
|
- [Custom Barcode Plugins](../extend/plugins/barcode.md)
|
|
|
|
!!! tip "Plugin Loading Order"
|
|
The first custom plugin to return a result "wins". As the loading order of custom plugins is not defined (or configurable), take special care if you are running multiple plugins which support barcode actions.
|
|
|
|
## Builtin Supplier Barcode Plugins
|
|
|
|
InvenTree comes with a few builtin supplier plugins, which handle their respective barcode formats.
|
|
|
|
Scanning a supplier barcode for a supplied part will link to the corresponding supplier part if the [SKU](../report/context_variables.md#supplierpart) from the barcode could be matched.
|
|
|
|
The following suppliers (and barcode formats) are currently supported:
|
|
|
|
- DigiKey (2D Data Matrix code)
|
|
- Mouser (2D Data Matrix code)
|
|
- LCSC (QR code)
|
|
- TME (QR code & 2D Data Matrix code)
|