Inventur and PackScan: Difference between revisions

Jump to navigation Jump to search
m
no edit summary
(Create PackScan and Inventur documentation with setup instructions, demos and source code links)
Tag: 2017 source edit
 
mNo edit summary
Tag: 2017 source edit
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{#lang: en}}


== Overview ==
==Overview==


'''PackScan and Inventur''' are two free, open-source mobile web applications for Dolibarr. They support barcode-based order picking, packing verification, stock counting and storage location management.
'''PackScan and Inventur''' are two free, open-source mobile web applications for Dolibarr. They support barcode-based order picking, packing verification, stock counting and storage location management.
Line 9: Line 8:
They run in the smartphone browser and communicate directly with an existing Dolibarr installation through its REST API. No additional application backend or database is required.
They run in the smartphone browser and communicate directly with an existing Dolibarr installation through its REST API. No additional application backend or database is required.


== Project information ==
==Project information==


{| class="wikitable"
{| class="wikitable"
! Item !! Information
!Item!!Information
|-
|-
| Applications || PackScan and Inventur (Inventory)
|Applications||PackScan and Inventur (Inventory)
|-
|-
| Author || Stefan Grumpelt, gRoods.de
|Author||Stefan Grumpelt, gRoods.de
|-
|-
| Version documented || 1.1.0
|Version documented||1.2.0
|-
|-
| License || GNU General Public License v3.0 or later
|License||GNU General Public License v3.0 or later
|-
|-
| Price || Free download; optional paid setup and support
|Price||Free download; optional paid setup and support
|-
|-
| Dolibarr compatibility || Developed and used with Dolibarr 24
|Dolibarr compatibility||Developed and used with Dolibarr 24
|-
|-
| Platforms || Safari on iPhone from iOS 16; Chrome on Android
|Platforms||Safari on iPhone from iOS 16; Chrome on Android
|-
|-
| Interface languages || 24 languages, including English, German, French, Italian and Spanish
|Interface languages||24 languages, including English, German, French, Italian and Spanish
|-
|-
| Website || [https://groods.de/packscan/ Project website]
|Website||[https://groods.de/packscan/ Project website]
|-
|-
| Source code || [https://github.com/groods-apps/packscan/ GitHub repository]
|Source code||[https://github.com/groods-apps/packscan/ GitHub repository]
|-
|-
| Documentation || [https://groods.de/packscan/anleitung-en.html English] / [https://groods.de/packscan/anleitung.html German]
|Documentation||[https://groods.de/packscan/anleitung-en.html English] / [https://groods.de/packscan/anleitung.html German]
|-
|-
| Contact || info@groods.de
|Contact||info@groods.de
|}
|}


== Features ==
==Features==


=== PackScan: order picking ===
===PackScan: order picking===


* Combine open orders into a picking list sorted by storage location.
*Combine open orders into a picking list sorted by storage location.
* Group identical products across multiple orders.
*Group identical products across multiple orders.
* Display product images, quantities and prominent barcode end digits.
*Display product images, quantities and prominent barcode end digits.
* Display storage locations in a visual wall or shelf grid.
*Display storage locations in a visual wall or shelf grid.
* Scan products or enter quantities manually.
*Scan products or enter quantities manually.
* Allocate picked quantities to the oldest orders first.
*Allocate picked quantities to the oldest orders first.
* Release complete orders while leaving incomplete orders pending.
*Release complete orders while leaving incomplete orders pending.
* Exclude postage and other non-pickable products through the settings.
*Exclude postage and other non-pickable products through the settings.


=== PackScan: packing verification ===
===PackScan: packing verification===


* Scan a shipment label to open the matching Dolibarr shipment.
*Scan a shipment label to open the matching Dolibarr shipment.
* Verify products by barcode before packing them.
*Verify products by barcode before packing them.
* Receive visual and audible feedback for correct and incorrect items.
*Receive visual and audible feedback for correct and incorrect items.
* View packing progress for each shipment.
*View packing progress for each shipment.
* Validate shipments and close orders according to the application settings.
*Validate shipments and close orders according to the application settings.


Shipment lookup supports DHL labels and the Data Matrix code of Deutsche Post Internetmarke labels. The shipment number must already be recorded in the corresponding Dolibarr shipment.
Shipment lookup supports DHL labels and the Data Matrix code of Deutsche Post Internetmarke labels. The shipment number must already be recorded in the corresponding Dolibarr shipment.


=== Inventur: stock counting ===
===Inventur: stock counting===


* Find products using their standard barcode or an additional GTIN field.
*Find products using their standard barcode or an additional GTIN field.
* Display product information, images and stock by warehouse.
*Display product information, images and stock by warehouse.
* Assign or update storage locations.
*Assign or update storage locations.
* Suggest the next storage column when placing products sequentially.
*Suggest the next storage column when placing products sequentially.
* Adjust stock quantities by warehouse.
*Adjust stock quantities by warehouse.
* Record the date and time of the last count.
*Record the date and time of the last count.
* Warn if a product has already been counted on the same day.
*Warn if a product has already been counted on the same day.


'''Scanning a product does not change stock.''' Selecting Save immediately posts the stock difference as a Dolibarr stock movement with an INV-prefixed reference. Current stock is reloaded before posting.
'''Scanning a product does not change stock.''' Selecting Save immediately posts the stock difference as a Dolibarr stock movement with an INV-prefixed reference. Current stock is reloaded before posting.


=== Mobile operation ===
===Mobile operation===


* Camera scanning for EAN, Code 128, QR and Data Matrix.
*Camera scanning for EAN, Code 128, QR and Data Matrix.
* Torch control on supported devices and browsers.
*Torch control on supported devices and browsers.
* Audible feedback and visual confirmation.
*Audible feedback and visual confirmation.
* Protection against repeatedly counting a barcode that remains in view.
*Protection against repeatedly counting a barcode that remains in view.
* Support for Bluetooth scanners that act as a keyboard.
*Support for Bluetooth scanners that act as a keyboard.
* Home-screen icons for direct access to each application.
*Home-screen icons for direct access to each application.


== Requirements ==
==Requirements==


* An existing Dolibarr installation accessible over HTTPS.
*An existing Dolibarr installation accessible over HTTPS.
* Access to the Dolibarr REST API.
*Access to the Dolibarr REST API.
* A dedicated API user with appropriate permissions.
*A dedicated API user with appropriate permissions.
* Configured product barcodes and extra fields.
*Configured product barcodes and extra fields.
* Products, stock/warehouses, customer orders and shipments enabled for the complete workflow.
*Products, stock/warehouses, customer orders and shipments enabled for the complete workflow.
* A reliable connection between the smartphone and Dolibarr.
*A reliable connection between the smartphone and Dolibarr.


Developed and used with Dolibarr 24. Older versions require separate compatibility testing.
Developed and used with Dolibarr 24. Older versions require separate compatibility testing.
Line 96: Line 95:
The documented shipping workflow uses DHL and Deutsche Post shipping methods. Shipping-method codes can be adjusted in the application settings.
The documented shipping workflow uses DHL and Deutsche Post shipping methods. Shipping-method codes can be adjusted in the application settings.


== Installation ==
==Installation==


These applications are standalone REST API clients, rather than conventional modules installed through the Dolibarr external-module installer.
These applications are standalone REST API clients, rather than conventional modules installed through the Dolibarr external-module installer.


# Download and extract the application package.
#Download and extract the application package.
# Create the directory <code>htdocs/custom/lager/</code> in the Dolibarr installation.
#Create the directory <code>htdocs/custom/lager/</code> in the Dolibarr installation.
# Copy the contents of the package's <code>lager-apps</code> directory into this directory.
#Copy the contents of the package's <code>lager-apps</code> directory into this directory.
# Keep the HTML files, icons and manifest files together.
#Keep the HTML files, icons and manifest files together.
# Configure the required Dolibarr modules, extra fields and API permissions.
#Configure the required Dolibarr modules, extra fields and API permissions.
# Open <code>https://your-dolibarr.example/custom/lager/</code> on the smartphone.
#Open <code>https://your-dolibarr.example/custom/lager/</code> on the smartphone.
# Select an application and open its settings.
#Select an application and open its settings.
# Enter the Dolibarr API address and API token.
#Enter the Dolibarr API address and API token.
# Disable demo mode if enabled and test the connection.
#Disable demo mode if enabled and test the connection.
# Review warehouse and stock-movement settings before using live data.
#Review warehouse and stock-movement settings before using live data.


The applications can optionally be added to the smartphone home screen.
The applications can optionally be added to the smartphone home screen.
Line 115: Line 114:
Detailed instructions:
Detailed instructions:


* [https://groods.de/packscan/anleitung-en.html English setup guide]
*[https://groods.de/packscan/anleitung-en.html English setup guide]
* [https://groods.de/packscan/anleitung.html German setup guide]
*[https://groods.de/packscan/anleitung.html German setup guide]


=== Extra fields ===
===Extra fields===


{| class="wikitable"
{| class="wikitable"
! Default code !! Object !! Type !! Purpose
!Default code!!Object!!Type!!Purpose
|-
|-
| lagerplatz || Product || Text || Storage location, picking order and grid display
|lagerplatz||Product||Text||Storage location, picking order and grid display
|-
|-
| gtin || Product || Text, optional || Additional product barcode
|gtin||Product||Text, optional||Additional product barcode
|-
|-
| letzte_inventur || Product || Date and time || Last stock count
|letzte_inventur||Product||Date and time||Last stock count
|-
|-
| gepickt || Customer order || Date and time || Release after picking
|gepickt||Customer order||Date and time||Release after picking
|}
|}


Line 136: Line 135:
The optional server-side shipping automation additionally uses the order field <code>umgebucht</code> to track stock transfers.
The optional server-side shipping automation additionally uses the order field <code>umgebucht</code> to track stock transfers.


=== API permissions ===
===API permissions===


Use a dedicated API user and grant only the permissions required for the selected workflow.
Use a dedicated API user and grant only the permissions required for the selected workflow.
Line 142: Line 141:
The complete workflow requires permissions to:
The complete workflow requires permissions to:


* Read and update products.
*Read and update products.
* Read warehouses and create stock movements.
*Read warehouses and create stock movements.
* Read, update and close customer orders.
*Read, update and close customer orders.
* Read, create and validate shipments.
*Read, create and validate shipments.
* Read third parties.
*Read third parties.


For initial tests with live data, use a read-only API user where possible.
For initial tests with live data, use a read-only API user where possible.


=== Stock configuration ===
===Stock configuration===


Review Dolibarr's stock-movement settings before completing shipments.
Review Dolibarr's stock-movement settings before completing shipments.
Line 156: Line 155:
If stock is already deducted when an order or invoice is validated, shipment validation must not deduct it a second time. Configure the stock trigger to match the actual warehouse workflow.
If stock is already deducted when an order or invoice is validated, shipment validation must not deduct it a second time. Configure the stock trigger to match the actual warehouse workflow.


== Storage locations ==
==Storage locations==


Storage locations are stored as text in a product extra field.
Storage locations are stored as text in a product extra field.
Line 166: Line 165:
PackScan uses these locations to sort the picking list and display a visual storage grid.
PackScan uses these locations to sort the picking list and display a visual storage grid.


== Optional integrations ==
==Optional integrations==


The free applications do not include:
The free applications do not include:


* Marketplace or webshop order imports.
*Marketplace or webshop order imports.
* Purchasing postage or generating shipping labels.
*Purchasing postage or generating shipping labels.
* Sending tracking information back to marketplaces.
*Sending tracking information back to marketplaces.
* Server-side shipping automation.
*Server-side shipping automation.


These workflows require separate integrations.
These workflows require separate integrations.
Line 179: Line 178:
Without shipping automation, labels are created in an external shipping tool and the corresponding shipments are prepared in Dolibarr.
Without shipping automation, labels are created in an external shipping tool and the corresponding shipments are prepared in Dolibarr.


== Limitations ==
==Limitations==


=== Connectivity ===
===Connectivity===


Loading lists, looking up products and saving changes require a connection to Dolibarr.
Loading lists, looking up products and saving changes require a connection to Dolibarr.
Line 187: Line 186:
Local picking and packing progress is stored on the device and retained after a connection interruption. This is not a fully offline workflow.
Local picking and packing progress is stored on the device and retained after a connection interruption. This is not a fully offline workflow.


=== Multiple users ===
===Multiple users===


* Picking progress is device-local. Use one picker per picking run.
*Picking progress is device-local. Use one picker per picking run.
* Multiple people can pack simultaneously when working on different shipments.
*Multiple people can pack simultaneously when working on different shipments.
* Coordinate stock counts to avoid concurrent updates to the same product and warehouse. Reloading stock before saving does not constitute a reservation or lock.
*Coordinate stock counts to avoid concurrent updates to the same product and warehouse. Reloading stock before saving does not constitute a reservation or lock.


=== Partial shipments ===
===Partial shipments===


Create genuine partial shipments in Dolibarr.
Create genuine partial shipments in Dolibarr.
Line 199: Line 198:
Finishing packing with missing items does not automatically reduce the quantities recorded in the shipment.
Finishing packing with missing items does not automatically reduce the quantities recorded in the shipment.


=== Sets and variants ===
===Sets and variants===


* Sets are handled as individual products with their own barcode.
*Sets are handled as individual products with their own barcode.
* Components of Dolibarr kits are not expanded.
*Components of Dolibarr kits are not expanded.
* Product variants are handled as separate products with their own barcode.
*Product variants are handled as separate products with their own barcode.


=== Inventory scope ===
===Inventory scope===


* Stock corrections involving lots or serial numbers must be performed in Dolibarr.
*Stock corrections involving lots or serial numbers must be performed in Dolibarr.
* Inventur does not currently provide a separate count sheet or an expected-versus-counted export.
*Inventur does not currently provide a separate count sheet or an expected-versus-counted export.
* Inventory movements can be reviewed and exported in Dolibarr.
*Inventory movements can be reviewed and exported in Dolibarr.
* The last-count field can be used to identify products that have not yet been counted.
*The last-count field can be used to identify products that have not yet been counted.


Products without a barcode can be counted manually using the quantity controls.
Products without a barcode can be counted manually using the quantity controls.


== Data storage and access ==
==Data storage and access==


Business records are stored in the user's Dolibarr installation.
Business records are stored in the user's Dolibarr installation.
Line 224: Line 223:
If a device is lost, its access can be revoked by renewing the relevant API user's token in Dolibarr. Other devices using the same token will then need the new token.
If a device is lost, its access can be revoked by renewing the relevant API user's token in Dolibarr. Other devices using the same token will then need the new token.


== Languages ==
==Languages==


Version 1.1.0 supports 24 interface languages:
Version 1.1.0 supports 24 interface languages:
Line 232: Line 231:
The applications follow the browser language by default and fall back to English for unsupported languages. A language can also be selected manually in the settings.
The applications follow the browser language by default and fall back to English for unsupported languages. A language can also be selected manually in the settings.


== Updates ==
==Updates==


Replace the application files on the server while keeping the same application URLs. Browser-stored settings remain on the individual devices.
Replace the application files on the server while keeping the same application URLs. Browser-stored settings remain on the individual devices.
Line 240: Line 239:
See the [https://groods.de/packscan/#versionen project version history] for release information.
See the [https://groods.de/packscan/#versionen project version history] for release information.


== Demonstrations and download ==
==Demonstrations and download==


* [https://groods.de/demo/packscan/ PackScan demonstration]
*[https://groods.de/demo/packscan/ PackScan demonstration]
* [https://groods.de/demo/inventur/ Inventur demonstration]
*[https://groods.de/demo/inventur/ Inventur demonstration]
* [https://github.com/groods-apps/packscan/ Source code on GitHub]
*[https://github.com/groods-apps/packscan/ Source code on GitHub]
* [https://groods.de/packscan/download/lager-apps.zip Download application package]
*[https://groods.de/packscan/download/lager-apps.zip Download application package]
* [https://groods.de/packscan/anleitung-en.html English setup guide]
*[https://groods.de/packscan/anleitung-en.html English setup guide]
* [https://groods.de/packscan/anleitung.html German setup guide]
*[https://groods.de/packscan/anleitung.html German setup guide]


The demonstrations use example data and require no registration.
The demonstrations use example data and require no registration.
Line 253: Line 252:
When testing with an existing Dolibarr installation, self-hosting the application files on the same origin is the most reliable option. Cross-origin connections from the public demonstration may be blocked by the server, proxy or security configuration.
When testing with an existing Dolibarr installation, self-hosting the application files on the same origin is the most reliable option. Cross-origin connections from the public demonstration may be blocked by the server, proxy or security configuration.


== Support and contributions ==
==Support and contributions==


Documentation and demonstrations are available online.
Documentation and demonstrations are available online.
Line 267: Line 266:
Contact: info@groods.de
Contact: info@groods.de


== License and third-party components ==
==License and third-party components==


Copyright 2026 Stefan Grumpelt, gRoods.de.
Copyright 2026 Stefan Grumpelt, gRoods.de.

Navigation menu