extractDigitSequences() Fix: - VORHER: Alle Ziffern zusammengefasst → Datensalat bei Subsequenzen - JETZT: Nur isolierte N-stellige Zahlenblöcke (filter auf length === N) - Beispiel: "Artikel 1234567 Datum 20250311" → nur "1234567" (nicht "2025031" etc.) Artikelnummer-Suche: - findproduct.php sucht in: barcode, ref_fourn (Lieferanten-Artikelnummer!), ref - OCR-erkannte Nummern funktionieren wenn ref_fourn in Dolibarr gepflegt ist Dokumentation: - README.md aktualisiert: ZXing-JS, OCR-Feature, Versionierung - Barcode-Unterstützung erweitert: Code 128, QR, DataMatrix, OCR - Bibliotheken: ZXing-JS v0.21.3, Tesseract.js v5.1.0 Versionen synchron erhöht: - pwa.php: ?v=91 (CSS + JS) - sw.js: scanner-v9.1 - modHandyBarcodeScanner.class.php: 9.1 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| admin | ||
| ajax | ||
| android-app | ||
| build | ||
| class | ||
| core/modules | ||
| css | ||
| img | ||
| js | ||
| langs | ||
| lib | ||
| sql | ||
| .gitignore | ||
| ChangeLog.md | ||
| COPYING | ||
| handybarcodescannerindex.php | ||
| manifest.json | ||
| modulebuilder.txt | ||
| pwa.php | ||
| pwa_login.php | ||
| pwa_verify.php | ||
| README.md | ||
| sw.js | ||
HANDYBARCODESCANNER FOR DOLIBARR ERP & CRM
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/Artikelnummern in folgender Reihenfolge:
- Produkt-Barcode (
llx_product.barcode) - Lieferanten-Barcode (
llx_product_fournisseur_price.barcode) - Lieferanten-Artikelnummer (
llx_product_fournisseur_price.ref_fourn) ← NEU ab v9.0 - Produkt-Referenz (
llx_product.ref)
Barcode-Formate (ZXing-JS, ab v8.3)
Unterstützte Formate - wählbar per Dropdown:
- Code 128 - alphanumerisch (1D-Barcode)
- QR-Code - 2D-Matrix-Code
- DataMatrix - 2D-Matrix-Code
Typ-Umschaltung ohne Kamera-Neustart: Der Barcode-Typ kann während des Scannens gewechselt werden. Die Kamera bleibt aktiv, nur der Decoder wird neu initialisiert. Die Auswahl wird persistent in localStorage gespeichert.
OCR-Modus für Artikelnummern (ab v8.5, optimiert in v9.1)
Für Etiketten OHNE Barcode:
- Foto-basierte Texterkennung mit Tesseract.js
- Variable Ziffern-Anzahl (5-12 stellig) per Dropdown wählbar
- Erkennt zusammenhängende N-stellige Zahlen (z.B. 7-stellige Artikelnummer)
- Mehrere Treffer → Auswahl-Dialog
- Keine Treffer → Fallback auf manuelle Produktsuche
Wichtig: OCR erkennt nur isolierte Zahlenblöcke mit exakt N Ziffern. Keine Subsequenzen oder Zusammensetzungen aus längeren Zahlen!
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
cd /path/to/dolibarr/htdocs/custom
git clone https://git.data-it-solution.de/data/dolibarr.handybarcodescanner.git handybarcodescanner
Installation via ZIP
- ZIP-Datei herunterladen
- In Dolibarr:
Home > Setup > Modules > Deploy external module - ZIP-Datei hochladen
Aktivierung
- Als Administrator in Dolibarr einloggen
- Gehe zu
Setup > Modules - Suche nach "HandyBarcodeScanner"
- 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
- QR-Code von der Admin-Seite scannen oder URL direkt eingeben
- Kamerazugriff erlauben (HTTPS erforderlich!)
- Gewünschten Modus wählen und "Scannen" tippen
- 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
- ZXing-JS v0.21.3 - Browser-basierte Barcode-Erkennung (1D + 2D)
- Tesseract.js v5.1.0 - OCR (Optical Character Recognition) für Artikelnummern
- JsBarcode v3.11.6 - Barcode-Generierung für Druck
- 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 IMMER synchron erhöhen:
CACHE_NAMEinsw.js(z.B.scanner-v9.1)?v=Parameter inpwa.phpfür CSS und JS (z.B.?v=91)$this->versioninmodHandyBarcodeScanner.class.php(z.B.9.1)
Aktuelle Version: 9.1
- v9.1: OCR-Feature Bug-Fix (extractDigitSequences: nur zusammenhängende Zahlenblöcke)
- v9.0: OCR-Feature für Artikelnummern-Erkennung
- v8.3: ZXing-JS Integration (Code 128, QR, DataMatrix)
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
Lizenz
Hauptcode
GPLv3 oder (nach Wahl) jede spätere Version. Siehe Datei COPYING für weitere Informationen.
Dokumentation
Alle Texte und READMEs sind unter GFDL lizenziert.
Autor
Eduard Wisch - DATA IT-Solution
Support
Bei Fragen oder Problemen:
- Issue erstellen: https://git.data-it-solution.de/data/dolibarr.handybarcodescanner/issues
- E-Mail: data@data-it-solution.de