# HANDYBARCODESCANNER FOR [DOLIBARR ERP & CRM](https://www.dolibarr.org) Mobiler Barcode-Scanner für Dolibarr - optimiert für die Verwendung auf Smartphones. ## Features Das Modul bietet drei Modi für die mobile Barcode-Erfassung: ### 1. Bestellmodus (Order) - Produkt per Barcode scannen oder manuell suchen (Lupe-Button) - Alle verfügbaren Lieferanten mit Einkaufspreisen werden angezeigt - Günstigster Lieferant ist vorausgewählt - Produkt wird zu einer lieferantenspezifischen Entwurfsbestellung hinzugefügt - Bestellungen werden automatisch als "Direkt" erstellt (dauerhafte Direktbestellung pro Lieferant) - Falls kein Lieferant zugewiesen: Manuelle Auswahl aller verfügbaren Lieferanten - **Freitext-Positionen**: Plus-Button für Artikel ohne Produktstamm - **Bestellübersicht**: Nach links swipen zeigt alle offenen Bestellungen - **Zeilen bearbeiten**: Klick auf Bestellzeile öffnet Dialog zum Ändern/Löschen - **Bestellungen löschen**: Entwürfe können direkt aus der Übersicht gelöscht werden ### 2. Shop-Modus - Produkt per Barcode scannen - Zeigt Links zu den Webshops der Lieferanten - Schneller Zugriff auf Lieferanten-Onlineshops ### 3. Inventur-Modus - Produkt per Barcode scannen - Aktueller Lagerbestand wird angezeigt - Neuen Bestand eingeben und mit Bestätigungsdialog speichern - Lagerbewegungen werden korrekt protokolliert ### 4. Barcode-Druck - **Druck-Button** auf Produktkarte oder via Produktsuche - Barcode-Vorschau mit Produkt-Referenz, Barcode-Strichen und Barcode-Wert - Code128-Format, optimiert für 24mm Etikettendrucker **Zwei Druck-Optionen:** #### Browser-Druck - Standard Browser-Druckfunktion für Desktop-Drucker - Unterstützt alle gängigen Drucker und PDF-Export #### Brother PT-E560BT (Android App) - **Native Android App** für direkten Bluetooth-Druck auf Brother P-touch E560BT - Intent-basierte Integration: PWA startet App automatisch mit Barcode-Daten - Druckt Barcode **längs auf 24mm TZe-Band** mit Produkt-Referenz (fett), Barcode und Wert - Automatischer Halbschnitt zwischen Labels, Vollschnitt am Ende - App verfügbar in `android-app/BrotherPrintHelper/` - Installation: APK auf Android-Gerät installieren, PT-E560BT in Bluetooth-Settings paaren ## Barcode-Unterstützung Das Modul sucht Barcodes in folgender Reihenfolge: 1. Produkt-Barcode (`llx_product.barcode`) 2. Lieferanten-Barcode (`llx_product_fournisseur_price.barcode`) 3. Produkt-Referenz (`llx_product.ref`) Unterstützte Barcode-Formate (Quagga2): - **Code 128** (empfohlen für alphanumerische Codes, höchste Priorität) - **Code 39** (alphanumerisch, zweite Priorität) - **EAN-13** (nur Ziffern, dritte Priorität) - **EAN-8** (nur Ziffern, niedrigste Priorität) **WICHTIG:** Reader-Reihenfolge optimiert für alphanumerische Codes! CODE128/CODE39 haben Vorrang vor EAN-Readern, um Fehlerkennungen bei Herstellercodes wie "P20260030" zu vermeiden. ## Installation ### Voraussetzungen - Dolibarr ERP & CRM (Version 14.0 oder höher empfohlen) - Aktiviertes Modul "Lieferanten" (Fournisseur/Supplier) - Aktiviertes Modul "Lager" (Stock) für Inventur-Modus - HTTPS-Verbindung (erforderlich für Kamerazugriff im Browser) ### Installation via Git ```bash cd /path/to/dolibarr/htdocs/custom git clone https://git.data-it-solution.de/data/dolibarr.handybarcodescanner.git handybarcodescanner ``` ### Installation via ZIP 1. ZIP-Datei herunterladen 2. In Dolibarr: `Home > Setup > Modules > Deploy external module` 3. ZIP-Datei hochladen ### Aktivierung 1. Als Administrator in Dolibarr einloggen 2. Gehe zu `Setup > Modules` 3. Suche nach "HandyBarcodeScanner" 4. Modul aktivieren ## Konfiguration Die Einstellungen sind unter `Setup > Modules > HandyBarcodeScanner > Settings` verfügbar: ### Allgemein - **Bestellpräfix**: Präfix für automatisch erstellte Bestellungen (Standard: "Direktbestellung") - **Standard-Lager**: Standard-Lager für Inventur-Bewegungen ### Aktivierte Modi - **Bestellmodus aktivieren**: Ein/Aus - **Shop-Modus aktivieren**: Ein/Aus - **Inventur-Modus aktivieren**: Ein/Aus ### Feedback - **Vibration aktivieren**: Vibriert bei erfolgreichem Scan (auf unterstützten Geräten) - **Ton aktivieren**: Akustisches Signal bei erfolgreichem Scan ### QR-Code für mobilen Zugriff Auf der Einstellungsseite wird ein QR-Code angezeigt, der mit dem Smartphone gescannt werden kann, um direkt zur Scanner-Seite zu gelangen. ## Berechtigungen Das Modul definiert folgende Berechtigungen: | Berechtigung | Beschreibung | |-------------|--------------| | `handybarcodescanner->use` | Scanner verwenden | | `handybarcodescanner->order->create` | Bestellungen erstellen | | `handybarcodescanner->inventory->write` | Lagerbestand ändern | ## Verwendung Der Scanner ist im linken Menü unter **Produkte > Scanner** erreichbar. ### Moduswechsel ohne Unterbrechung Die Modi (Bestellen/Shop/Inventur) können per Tab gewechselt werden, ohne dass die Kamera stoppt. Bereits gescannte Produkte werden im neuen Modus direkt angezeigt. ### Im mobilen Browser / PWA 1. QR-Code von der Admin-Seite scannen oder URL direkt eingeben 2. Kamerazugriff erlauben (HTTPS erforderlich!) 3. Gewünschten Modus wählen und "Scannen" tippen 4. Barcode vor die Kamera halten ### Gesten-Steuerung - **Nach links swipen**: Bestellübersicht öffnen (Order-Mode) - **Nach rechts swipen**: Barcode-Druck (Produktsuche öffnet sich) ## Technische Details ### Dateistruktur ``` handybarcodescanner/ ├── admin/ │ ├── about.php │ └── setup.php ├── ajax/ │ ├── addtoorder.php # Produkt zu Bestellung hinzufügen │ ├── addfreetextline.php # Freitext-Position hinzufügen │ ├── deleteorder.php # Bestellung löschen │ ├── findproduct.php # Produkt per Barcode suchen │ ├── getorders.php # Bestellungen abrufen │ ├── getorderlines.php # Bestellzeilen abrufen │ ├── getsuppliers.php # Alle Lieferanten abrufen │ ├── searchproduct.php # Produktsuche │ ├── updateorderline.php # Bestellzeile bearbeiten │ └── updatestock.php # Lagerbestand aktualisieren ├── android-app/ │ └── BrotherPrintHelper/ # Native Android App für Brother PT-E560BT │ ├── app/ │ │ ├── src/main/java/de/data_it_solution/brotherprinthelper/ │ │ │ └── MainActivity.kt │ │ ├── libs/ │ │ │ └── brlmprinterkit-release.aar │ │ └── build.gradle.kts │ └── build.gradle.kts ├── core/modules/ │ └── modHandyBarcodeScanner.class.php ├── css/ │ └── scanner.css ├── js/ │ ├── barcodezoom.js.php # Barcode-Zoom Feature │ └── scanner.js # Hauptlogik Scanner + PWA ├── langs/ │ ├── de_DE/handybarcodescanner.lang │ └── en_US/handybarcodescanner.lang ├── lib/ │ └── handybarcodescanner.lib.php ├── pwa.php # PWA Hauptseite ├── sw.js # Service Worker für PWA ├── manifest.json # PWA Manifest └── handybarcodescannerindex.php ``` ### Verwendete Bibliotheken - [Quagga2](https://github.com/ericblade/quagga2) - Browser-basierte Barcode-Erkennung - [JsBarcode](https://github.com/lindell/JsBarcode) - Barcode-Generierung für Druck - [ZXing](https://github.com/zxing/zxing) - Barcode-Generierung in Android App ### PWA (Progressive Web App) Das Modul ist als PWA konzipiert mit: - **Service Worker** (`sw.js`) für Offline-Funktionalität und Performance - **Web App Manifest** (`manifest.json`) für Installation auf Startbildschirm - **localStorage** für persistente Einstellungen (letzte Lieferanten, letzte Bestellung) - **Cache-Strategie**: Network-First für eigene Assets, Cache-First für CDN-Bibliotheken **Browser-Kompatibilität:** - Chrome/Edge auf Android: Vollständiger PWA-Standalone-Modus ✅ - Firefox auf Android: Nur Shortcuts, kein echter Standalone-Modus ⚠️ - Safari auf iOS: PWA-Unterstützung mit Einschränkungen **Versionsverwaltung:** Bei Updates CACHE_NAME in `sw.js` + `?v=` in `pwa.php` synchron erhöhen! ### Brother PT-E560BT Android App Native Kotlin-App für Bluetooth-Druck auf Brother P-touch E560BT: - **SDK:** Brother Print SDK v4.x (brlmprinterkit-release.aar) - **Intent-Schema:** `brotherprint://print?barcode=VALUE&ref=PRODUCTREF` - **Features:** - Auto-Discovery von gepaartem Drucker - 90° Rotation für Längs-Druck auf 24mm TZe-Band - Produkt-Referenz (fett), Barcode-Strichen, Barcode-Wert - Erweiterte Error-Handling (SetLabelsizeError, NoCoverError, etc.) - **Build:** Gradle 9.3.1, Kotlin 2.1.0, Android SDK 34 ## Changelog Siehe [ChangeLog.md](ChangeLog.md) ## Lizenz ### Hauptcode GPLv3 oder (nach Wahl) jede spätere Version. Siehe Datei [COPYING](COPYING) für weitere Informationen. ### Dokumentation Alle Texte und READMEs sind unter [GFDL](https://www.gnu.org/licenses/fdl-1.3.en.html) lizenziert. ## Autor Eduard Wisch - [DATA IT-Solution](https://data-it-solution.de) ## Support Bei Fragen oder Problemen: - Issue erstellen: https://git.data-it-solution.de/data/dolibarr.handybarcodescanner/issues - E-Mail: data@data-it-solution.de