docs: Add comprehensive FG Scan workflow documentation in Romanian
- Added detailed FG Scan module documentation - Includes scanning interface workflow (Step 1) - Includes box assignment and label printing workflow (Step 2) - Complete troubleshooting guide - System requirements and keyboard shortcuts - Image placeholders for visual workflow documentation
This commit is contained in:
757
py_app/app/static/docs/fg_scan.md
Normal file
757
py_app/app/static/docs/fg_scan.md
Normal file
@@ -0,0 +1,757 @@
|
|||||||
|
# Modulul FG Scan - Fluxul de Scanare Produse Finite
|
||||||
|
|
||||||
|
## Prezentare generală
|
||||||
|
|
||||||
|
Modulul **FG Scan** (Finish Good Scan) este interfața de scanare în timp real pentru înregistrarea produselor finite prin punctele de control de calitate. Sistemul permite o înregistrare rapidă și validare automată a produselor cu capabilități avansate de urmărire și asignare la cutii de depozitare.
|
||||||
|
|
||||||
|
## Descriere generală a sistemului
|
||||||
|
|
||||||
|
Fluxul de lucru se bazează pe scannarea codurilor de bare în ordine specifică, cu validări în timp real și înregistrare automată a datelor. Sistemul suportă:
|
||||||
|
|
||||||
|
- **Înregistrarea rapidă** a produselor scannate
|
||||||
|
- **Validarea automată** a calității prin coduri de defecte
|
||||||
|
- **Urmărirea operatorilor** care efectuează controalele
|
||||||
|
- **Asignarea produselor** la cutii de depozitare (opțional)
|
||||||
|
- **Crearea și tiparirea** etichetelor pentru cutii
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Interfața de Scanare - Fluxul Principal
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Structura Formularului
|
||||||
|
|
||||||
|
Formularul de scanare conține 5 câmpuri de intrare obligatorii care trebuie completate în ordine:
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────┐
|
||||||
|
│ MODULUL FG SCAN - FORMULAR │
|
||||||
|
├─────────────────────────────────┤
|
||||||
|
│ 1. Operator Code (OP) ← Prima validare
|
||||||
|
│ ├─ Exemplu: OP001
|
||||||
|
│ └─ Format: OP + 2-3 caractere
|
||||||
|
│
|
||||||
|
│ 2. CP Code (Produs) ← A doua validare
|
||||||
|
│ ├─ Exemplu: CP123456
|
||||||
|
│ └─ Format: CP + numere/litere
|
||||||
|
│
|
||||||
|
│ 3. OC1 Code (Control Op. 1) ← A treia validare
|
||||||
|
│ ├─ Exemplu: OC001
|
||||||
|
│ └─ Format: OC + numere
|
||||||
|
│
|
||||||
|
│ 4. OC2 Code (Control Op. 2) ← A patra validare
|
||||||
|
│ ├─ Exemplu: OC002
|
||||||
|
│ └─ Format: OC + numere
|
||||||
|
│
|
||||||
|
│ 5. Defect Code (3 cifre) ← Trigger de submit
|
||||||
|
│ ├─ Exemplu: 000 (OK) sau 001 (Defect)
|
||||||
|
│ └─ Format: Exact 3 cifre
|
||||||
|
│
|
||||||
|
│ ☐ Enable Scan-to-Boxes [Opțional]
|
||||||
|
└─────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Descrierea Câmpurilor
|
||||||
|
|
||||||
|
| Camp | Format | Descriere | Exemplu | Notă |
|
||||||
|
|------|--------|-----------|---------|------|
|
||||||
|
| **Operator Code** | OP + 2-3 caractere | Codul operatorului de calitate care scanează | OP001, OP123 | Se salvează local după validare |
|
||||||
|
| **CP Code** | CP + numere/litere | Codul produsului finit | CP123456 | Produsul trebuie să existe în bază |
|
||||||
|
| **OC1 Code** | OC + numere | Primul operator de control | OC001 | Validație în bază de date |
|
||||||
|
| **OC2 Code** | OC + numere | Al doilea operator de control | OC002 | Validație în bază de date |
|
||||||
|
| **Defect Code** | 3 cifre exacte | Codul defectului (000=OK, 001-999=defect) | 000, 001, 123 | Trigger pentru submit automat |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Etapele Detaliate de Scanare
|
||||||
|
|
||||||
|
### Etapa 1: Introducerea Codului Operator
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: Scannează sau introducă codul operator
|
||||||
|
INPUT: OP001
|
||||||
|
VALIDARE:
|
||||||
|
✓ Trebuie să înceapă cu "OP"
|
||||||
|
✓ Lungime: 4-6 caractere
|
||||||
|
✓ Se acceptă doar caractere alfanumerice
|
||||||
|
REZULTAT:
|
||||||
|
✓ Acceptat - Focusul merge la CP Code
|
||||||
|
✗ Eroare - Mesaj roșu: "Please scan Quality Operator code (must start with OP)"
|
||||||
|
SALVARE: Codul se salvează local (localStorage) pentru utilizări viitoare
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 2: Scanarea Codului Produs (CP)
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: Scannează codul produsului finit
|
||||||
|
INPUT: CP123456
|
||||||
|
VALIDARE:
|
||||||
|
✓ Trebuie să înceapă cu "CP"
|
||||||
|
✓ Produsul trebuie să existe în baza de date
|
||||||
|
✓ Se acceptă numere și litere după "CP"
|
||||||
|
REZULTAT:
|
||||||
|
✓ Acceptat - Focusul merge la OC1 Code
|
||||||
|
✗ Eroare - Mesaj roșu: "Please scan a valid CP"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 3: Scanarea Operatorului de Control 1 (OC1)
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: Scannează primul operator de control
|
||||||
|
INPUT: OC001
|
||||||
|
VALIDARE:
|
||||||
|
✓ Trebuie să înceapă cu "OC"
|
||||||
|
✓ Trebuie să fie valid în baza de date
|
||||||
|
✓ Diferit de OC2 (pot fi aceiași oameni)
|
||||||
|
REZULTAT:
|
||||||
|
✓ Acceptat - Focusul merge la OC2 Code
|
||||||
|
✗ Eroare - Mesaj roșu: "Please scan a valid OC (must start with OC)"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 4: Scanarea Operatorului de Control 2 (OC2)
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: Scannează al doilea operator de control
|
||||||
|
INPUT: OC002
|
||||||
|
VALIDARE:
|
||||||
|
✓ Trebuie să înceapă cu "OC"
|
||||||
|
✓ Trebuie să fie valid în baza de date
|
||||||
|
REZULTAT:
|
||||||
|
✓ Acceptat - Focusul merge la Defect Code
|
||||||
|
✗ Eroare - Mesaj roșu: "Please scan a valid OC (must start with OC)"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 5: Introducerea Codului de Defect
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: Introduceți/scannați codul de defect (3 cifre)
|
||||||
|
INPUT: 000 (pentru OK) sau 001-999 (pentru defecte)
|
||||||
|
VALIDARE:
|
||||||
|
✓ Exact 3 cifre
|
||||||
|
✓ Numai caractere numerice
|
||||||
|
✓ Valori valide: 000 (OK) sau 001-999 (defect)
|
||||||
|
REZULTAT:
|
||||||
|
✓ Acceptat la 3 cifre - SUBMIT AUTOMAT
|
||||||
|
✗ Eroare - Mesaj roșu: "Defect code must be a 3-digit number (e.g., 000, 001, 123)"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 6: Înregistrare Automată și Feedback
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: Sistemul finalizează scanarea automat
|
||||||
|
PROCES:
|
||||||
|
1. Salvează datele în baza de date
|
||||||
|
2. Afișează notificare de succes
|
||||||
|
3. Resetează formularul (minus Operator Code)
|
||||||
|
4. Focusul merge la CP Code pentru următoarea scanare
|
||||||
|
|
||||||
|
FEEDBACK UTILIZATOR:
|
||||||
|
✅ Notificare verde: "✅ Scan recorded successfully!"
|
||||||
|
⏱️ Durata: 4 secunde (apoi dispare)
|
||||||
|
🔄 Formularul se resetează automat
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Fluxul de Asignare la Cutii (Save to Box)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Condiții de Declanșare a Modalului
|
||||||
|
|
||||||
|
Modalul de asignare la cutie apare **automat și obligatoriu** atunci când sunt **SIMULTAN** îndeplinite:
|
||||||
|
|
||||||
|
1. ✅ Opțiunea **"Enable Scan-to-Boxes"** este **BIFATĂ**
|
||||||
|
2. ✅ Codul de defect este **EXACT 000** (Produs fără defecte)
|
||||||
|
3. ✅ Scanarea s-a **FINALIZAT cu SUCCES**
|
||||||
|
|
||||||
|
```
|
||||||
|
IF (scanToBoxesEnabled == TRUE) AND (defectCode == "000") THEN
|
||||||
|
SHOW box_assignment_modal
|
||||||
|
ELSE
|
||||||
|
RELOAD page normally
|
||||||
|
END IF
|
||||||
|
```
|
||||||
|
|
||||||
|
### Structura Modalului
|
||||||
|
|
||||||
|
```
|
||||||
|
┌────────────────────────────────────────┐
|
||||||
|
│ ASIGNARE PRODUS LA CUTIE │
|
||||||
|
├────────────────────────────────────────┤
|
||||||
|
│ CP Code: CP123456 │
|
||||||
|
│ │
|
||||||
|
│ Opțiuni: │
|
||||||
|
│ [🔲] Create New Box │
|
||||||
|
│ [📥] Scan Existing Box Label │
|
||||||
|
│ │
|
||||||
|
│ Input: "Scan the printed label now..." │
|
||||||
|
│ [________________] │
|
||||||
|
│ │
|
||||||
|
│ [Anulare] [Salvare] │
|
||||||
|
└────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 1: Deschiderea Modalului
|
||||||
|
|
||||||
|
```
|
||||||
|
TRIGGER: După scanarea cu defect code = 000
|
||||||
|
AFIȘARE:
|
||||||
|
- Modalul se deschide centrat pe ecran
|
||||||
|
- Se afișează codul produsului (CP123456)
|
||||||
|
- Focusul este pe câmpul de input pentru cutie
|
||||||
|
- Placeholder: "Scan the printed label now..."
|
||||||
|
OPȚIUNI:
|
||||||
|
a) Create New Box - Creează o nouă cutie
|
||||||
|
b) Scan Box - Scannează o cutie existentă
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 2: Crearea Unei Noi Cutii
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: Apasă butonul "Create New Box"
|
||||||
|
PROCES:
|
||||||
|
1. Sistemul crează o nouă cutie în baza de date
|
||||||
|
2. Generează automat un cod unic (ex: BOX12345)
|
||||||
|
3. Conectează la serviciul QZ Tray
|
||||||
|
4. Generează etichetă în format ZPL (Zebra)
|
||||||
|
|
||||||
|
ETICHETĂ GENERATĂ:
|
||||||
|
┌──────────────────┐
|
||||||
|
│ Box: BOX12345 │
|
||||||
|
│ │
|
||||||
|
│ ║│││┌─┐ │ │
|
||||||
|
│ ║│ │ │ │ │ │ ← Cod de bare generat
|
||||||
|
│ ║│ │ │ │ │ │
|
||||||
|
│ ║││ │ │ │ │
|
||||||
|
│ BOX12345 │
|
||||||
|
└──────────────────┘
|
||||||
|
|
||||||
|
FORMAT: ZPL (Zebra Programming Language)
|
||||||
|
CONȚINUT:
|
||||||
|
- Textul "Box: BOX12345"
|
||||||
|
- Cod de bare 1D (CODE128 sau similar)
|
||||||
|
- Copie text cod box pentru scanare manuală
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 3: Tipărirea Automată a Etichetei
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: Etichetă generată → Tipărire automată
|
||||||
|
CERINȚE SISTEM:
|
||||||
|
✓ QZ Tray instalat și activ
|
||||||
|
✓ Imprimantă configurată și conectată
|
||||||
|
✓ Hârtie de etichetă (de obicei 4x6 inch)
|
||||||
|
|
||||||
|
PROCES TIPĂRIRE:
|
||||||
|
1. Conectare la QZ Tray
|
||||||
|
2. Detectare imprimantă disponibilă
|
||||||
|
3. Trimitere job tipărire în format ZPL
|
||||||
|
4. Imprimantă primește și procesează comanda
|
||||||
|
5. Se tipărește eticheta
|
||||||
|
|
||||||
|
FEEDBACK UTILIZATOR:
|
||||||
|
✅ Notificare: "✅ Box 12345 created and label printed!"
|
||||||
|
⏱️ Durata: 3-5 secunde
|
||||||
|
📥 Câmpul de input devine activ pentru scannare etichetă
|
||||||
|
Placeholder se schimbă în: "Scan the printed label now..."
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 4: Scannarea Etichetei Tipărite
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: Scannează eticheta nou tipărită
|
||||||
|
PROCES:
|
||||||
|
1. Scaneaza codul de bare de pe etichetă
|
||||||
|
2. Sistemul validează: BOX12345
|
||||||
|
3. Asociază produsul (CP123456) la cutie (BOX12345)
|
||||||
|
4. Setează status "Packed" pentru produs
|
||||||
|
5. Salvează relația în baza de date
|
||||||
|
|
||||||
|
VALIDĂRI:
|
||||||
|
✓ Codul scanned trebuie să coincidă cu BOX generat
|
||||||
|
✓ Produsul nu trebuie să fie deja asignat
|
||||||
|
✓ Cutia trebuie să existe în baza de date
|
||||||
|
|
||||||
|
FEEDBACK UTILIZATOR:
|
||||||
|
✅ Notificare verde: "✅ CP123456 assigned to Box BOX12345!"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Etapa 5: Finalizare și Revenire
|
||||||
|
|
||||||
|
```
|
||||||
|
ACTION: După scannare validă a etichetei
|
||||||
|
PROCES:
|
||||||
|
1. Modalul se închide automat
|
||||||
|
2. Pagina se reîncarcă complet
|
||||||
|
3. Se resetează formularul
|
||||||
|
4. Se prepară pentru următoarea scanare
|
||||||
|
|
||||||
|
REZULTAT FINAL:
|
||||||
|
✅ Produs înregistrat în sistem
|
||||||
|
✅ Produs asignat la cutie
|
||||||
|
✅ Etichetă tipărită și validată
|
||||||
|
🔄 Sistem gata pentru următoarea scanare
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Situații Speciale și Comportament
|
||||||
|
|
||||||
|
### Scenariul 1: Produs OK - Cu Asignare la Cutie ✅
|
||||||
|
|
||||||
|
```
|
||||||
|
SECVENȚĂ COMPLETĂ:
|
||||||
|
┌─────────────────────────────────────────────────┐
|
||||||
|
│ 1. Scannează OP001 → ✓ Valid │
|
||||||
|
│ 2. Scannează CP123456 → ✓ Valid │
|
||||||
|
│ 3. Scannează OC001 → ✓ Valid │
|
||||||
|
│ 4. Scannează OC002 → ✓ Valid │
|
||||||
|
│ 5. Introduceți 000 → ✓ Valid │
|
||||||
|
│ │
|
||||||
|
│ ✅ "Scan recorded successfully!" │
|
||||||
|
│ 🎬 MODAL APARE: "Scan-to-Boxes enabled" │
|
||||||
|
│ │
|
||||||
|
│ 6. Click "Create New Box" → BOX12345 │
|
||||||
|
│ ✅ "Box created and label printed!" │
|
||||||
|
│ 🖨️ Etichetă tipărită │
|
||||||
|
│ │
|
||||||
|
│ 7. Scannează eticheta BOX12345 → ✓ Valid │
|
||||||
|
│ ✅ "CP123456 assigned to Box 12345!" │
|
||||||
|
│ │
|
||||||
|
│ 🔄 Pagina se reîncarcă │
|
||||||
|
│ → Gata pentru următoarea scanare │
|
||||||
|
└─────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Scenariul 2: Produs cu Defect - Fără Modal ⚠️
|
||||||
|
|
||||||
|
```
|
||||||
|
SECVENȚĂ CU DEFECT:
|
||||||
|
┌─────────────────────────────────────────────────┐
|
||||||
|
│ 1. Scannează OP001 → ✓ Valid │
|
||||||
|
│ 2. Scannează CP789999 → ✓ Valid │
|
||||||
|
│ 3. Scannează OC001 → ✓ Valid │
|
||||||
|
│ 4. Scannează OC002 → ✓ Valid │
|
||||||
|
│ 5. Introduceți 001 → ✓ Valid │
|
||||||
|
│ │
|
||||||
|
│ ✅ "Scan recorded successfully!" │
|
||||||
|
│ ⚠️ Defect code detected │
|
||||||
|
│ ❌ NO BOX MODAL (porque defect ≠ 000) │
|
||||||
|
│ │
|
||||||
|
│ 🔄 Pagina se reîncarcă automat după 1s │
|
||||||
|
│ → Produs înregistrat cu defect │
|
||||||
|
│ → Fără asignare la cutie │
|
||||||
|
│ → Gata pentru următoarea scanare │
|
||||||
|
└─────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Scenariul 3: Eroare de Validare ❌
|
||||||
|
|
||||||
|
```
|
||||||
|
SECVENȚĂ CU EROARE:
|
||||||
|
┌─────────────────────────────────────────────────┐
|
||||||
|
│ 1. Scannează XX001 → ❌ EROARE │
|
||||||
|
│ "Must start with OP" │
|
||||||
|
│ 🔴 Mesajul apare în roșu │
|
||||||
|
│ 👆 Focusul revine la Operator Code │
|
||||||
|
│ │
|
||||||
|
│ 2. Reîncercați scannarea → ✓ Valid │
|
||||||
|
│ Mesajul de eroare dispare │
|
||||||
|
│ │
|
||||||
|
│ (Continuă fluxul normal...) │
|
||||||
|
└─────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Scenariul 4: QZ Tray Inactiv - La Tipărire ❌
|
||||||
|
|
||||||
|
```
|
||||||
|
SITUAȚIE: Utilizatorul apasă "Create New Box"
|
||||||
|
dar QZ Tray nu este conectat
|
||||||
|
|
||||||
|
REZULTAT:
|
||||||
|
❌ Eroare: "QZ Tray not connected.
|
||||||
|
Please ensure QZ Tray is running."
|
||||||
|
|
||||||
|
🔘 Butonul "Create New Box" devine inactiv
|
||||||
|
|
||||||
|
SOLUȚIE:
|
||||||
|
1. Pornește serviciul QZ Tray pe computer
|
||||||
|
2. Verifică conexiunea la imprimantă
|
||||||
|
3. Reîncarcă pagina
|
||||||
|
4. Încearcă din nou
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Configurația - Opțiunea "Enable Scan-to-Boxes"
|
||||||
|
|
||||||
|
### Activarea/Dezactivarea Funcției
|
||||||
|
|
||||||
|
```
|
||||||
|
UI ELEMENT:
|
||||||
|
┌────────────────────────────────┐
|
||||||
|
│ ☐ Enable Scan-to-Boxes │
|
||||||
|
│ ← Click pentru a activa │
|
||||||
|
└────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Comportament Comparativ
|
||||||
|
|
||||||
|
| Stare | Comportament | Rezultat |
|
||||||
|
|-------|-------------|----------|
|
||||||
|
| **❌ DEZACTIVAT** | După scanare, formular se resetează | Fără modal; Produs doar înregistrat |
|
||||||
|
| **✅ ACTIVAT** | După scanare cu defect=000, apare modal | Modal pentru asignare la cutie |
|
||||||
|
|
||||||
|
### Persistență și Salvare
|
||||||
|
|
||||||
|
```
|
||||||
|
COMPORTAMENT:
|
||||||
|
1. Starea opțiunii este salvată LOCAL (în browser)
|
||||||
|
2. Folosește localStorage pentru persistență
|
||||||
|
3. Rămâne activă după reîncărcarea paginii
|
||||||
|
4. Se resetează la ștergerea cache-ului
|
||||||
|
|
||||||
|
SETARE: localStorage.setItem('scan_to_boxes_enabled', true/false)
|
||||||
|
|
||||||
|
IMPLICAȚII:
|
||||||
|
✓ Fiecare utilizator poate avea preferințe diferite
|
||||||
|
✓ Preferințele se salvează per computer/browser
|
||||||
|
✗ Se pierd dacă se șterge localStorage
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Validări în Timp Real
|
||||||
|
|
||||||
|
### Mesajele de Eroare Înroșite
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────┐
|
||||||
|
│ MESAJE DE VALIDARE - Display în Timp Real │
|
||||||
|
├─────────────────────────────────────────────────┤
|
||||||
|
│ 🔴 Operator Code: │
|
||||||
|
│ "Please scan Quality Operator code │
|
||||||
|
│ (must start with OP)" │
|
||||||
|
│ │
|
||||||
|
│ 🔴 CP Code: │
|
||||||
|
│ "Please scan a valid CP" │
|
||||||
|
│ │
|
||||||
|
│ 🔴 OC1 Code: │
|
||||||
|
│ "Please scan a valid OC │
|
||||||
|
│ (must start with OC)" │
|
||||||
|
│ │
|
||||||
|
│ 🔴 OC2 Code: │
|
||||||
|
│ "Please scan a valid OC │
|
||||||
|
│ (must start with OC)" │
|
||||||
|
│ │
|
||||||
|
│ 🔴 Defect Code: │
|
||||||
|
│ "Defect code must be a 3-digit number │
|
||||||
|
│ (e.g., 000, 001, 123)" │
|
||||||
|
└─────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Auto-Advance între Câmpuri
|
||||||
|
|
||||||
|
```
|
||||||
|
MECANISMUL DE AUTO-ADVANCE:
|
||||||
|
1. Operator Code: După 4 caractere valide → Auto-advance la CP Code
|
||||||
|
2. CP Code: După scanare validă → Auto-advance la OC1 Code
|
||||||
|
3. OC1 Code: După scanare validă → Auto-advance la OC2 Code
|
||||||
|
4. OC2 Code: După scanare validă → Auto-advance la Defect Code
|
||||||
|
5. Defect Code: După 3 cifre valide → AUTO-SUBMIT FORMULAR
|
||||||
|
|
||||||
|
COMPORTAMENT:
|
||||||
|
✓ Crește viteza de lucru
|
||||||
|
✓ Eliminate nevoia de click manual
|
||||||
|
✓ Reduce erori de introducere
|
||||||
|
✓ Optimizat pentru scanere barcode
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Salvare și Persistență de Date
|
||||||
|
|
||||||
|
### Ce se Salvează Local
|
||||||
|
|
||||||
|
```
|
||||||
|
LOCALSTORAGE ITEMS:
|
||||||
|
1. fg_scan_operator_code
|
||||||
|
- Salvează: Codul operator valid
|
||||||
|
- Scop: Reîncarcă codul la revenire pe pagină
|
||||||
|
- Trigger: După validare OP Code
|
||||||
|
- Durata: Persistent (până la ștergere manuală)
|
||||||
|
|
||||||
|
2. scan_to_boxes_enabled
|
||||||
|
- Salvează: TRUE/FALSE
|
||||||
|
- Scop: Ține minte preferința utilizatorului
|
||||||
|
- Trigger: La click bifă
|
||||||
|
- Durata: Persistent (până la ștergere manuală)
|
||||||
|
|
||||||
|
3. fg_scan_clear_after_submit
|
||||||
|
- Salvează: TRUE (flag)
|
||||||
|
- Scop: Semnalizează dacă să reseteze după reload
|
||||||
|
- Trigger: Înainte de submit
|
||||||
|
- Durata: Temporară (se șterge după reload)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Comportament După Reîncărcare
|
||||||
|
|
||||||
|
```
|
||||||
|
SCENARIUL: Utilizatorul reîncarcă pagina
|
||||||
|
REZULTAT:
|
||||||
|
1. Se restaurează Operator Code din localStorage
|
||||||
|
2. Se restaurează starea "Enable Scan-to-Boxes"
|
||||||
|
3. Alte câmpuri rămân goale (din motive de securitate)
|
||||||
|
4. Focusul merge pe CP Code
|
||||||
|
5. Sistemul este gata pentru scanare
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Coduri și Format Special
|
||||||
|
|
||||||
|
### Coduri de Prefix Obligatorii
|
||||||
|
|
||||||
|
```
|
||||||
|
┌──────────────────────────────────────────┐
|
||||||
|
│ CODURI SPECIALE - Format Strict │
|
||||||
|
├──────────────────────────────────────────┤
|
||||||
|
│ OP = Operator Code (Calitate) │
|
||||||
|
│ Format: OP + 2-3 caractere │
|
||||||
|
│ Ex: OP001, OP123, OPA01 │
|
||||||
|
│ Lungime totală: 4-6 caractere │
|
||||||
|
│ │
|
||||||
|
│ CP = Cod Produs (Product Code) │
|
||||||
|
│ Format: CP + numere/litere │
|
||||||
|
│ Ex: CP123456, CP-ABC-999 │
|
||||||
|
│ Lungime variabilă (min 4) │
|
||||||
|
│ │
|
||||||
|
│ OC = Operator Control (Calitate) │
|
||||||
|
│ Format: OC + numere │
|
||||||
|
│ Ex: OC001, OC999 │
|
||||||
|
│ Lungime: 5-6 caractere │
|
||||||
|
│ │
|
||||||
|
│ 000 = Status OK (Fără defecte) │
|
||||||
|
│ 001-999 = Coduri de defecte specifice │
|
||||||
|
└──────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
### Numerele de Cutie
|
||||||
|
|
||||||
|
```
|
||||||
|
GENERARE AUTOMATĂ:
|
||||||
|
Format: BOX + numere incrementale
|
||||||
|
Exemplu: BOX00001, BOX00002, BOX12345
|
||||||
|
|
||||||
|
ETICHETA TIPĂRITĂ:
|
||||||
|
- Conținut: "Box: BOX12345"
|
||||||
|
- Cod de bare: 1D barcode (scanabil)
|
||||||
|
- Format: ZPL (Zebra Programming Language)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Tastele Rapid și Navigare
|
||||||
|
|
||||||
|
### Comenzi Tastatură
|
||||||
|
|
||||||
|
| Tasta | Funcție |
|
||||||
|
|-------|---------|
|
||||||
|
| **Tab** | Navigare între câmpuri (în ordine) |
|
||||||
|
| **Enter** | Avansare la câmpul următor (dacă valid) |
|
||||||
|
| **Backspace** | Ștergere caractere |
|
||||||
|
| **Scan Barcode** | Completează câmpul și avansează automat |
|
||||||
|
| **Escape** | Închide modalul (nu-l recomand) |
|
||||||
|
|
||||||
|
### Flux Recomandat
|
||||||
|
|
||||||
|
```
|
||||||
|
1. Scannez barcode operator
|
||||||
|
↓ (automat cu 4 char)
|
||||||
|
2. Scannez barcode produs
|
||||||
|
↓ (automat după validare)
|
||||||
|
3. Scannez barcode operator 1
|
||||||
|
↓ (automat după validare)
|
||||||
|
4. Scannez barcode operator 2
|
||||||
|
↓ (automat după validare)
|
||||||
|
5. Scannez/introduc cod defect (3 cifre)
|
||||||
|
↓ (automat la 3 cifre)
|
||||||
|
6. SUBMIT AUTOMAT
|
||||||
|
↓
|
||||||
|
7. [Dacă Enable Scan-to-Boxes] MODAL APARE
|
||||||
|
└→ Asignare la cutie
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Troubleshooting și Rezolvare Probleme
|
||||||
|
|
||||||
|
### Problemă: "Scan not submitted"
|
||||||
|
|
||||||
|
**Cauze:**
|
||||||
|
- Operator Code nu începe cu OP
|
||||||
|
- CP Code nu începe cu CP
|
||||||
|
- OC1/OC2 Code nu încep cu OC
|
||||||
|
- Defect code nu are exact 3 cifre
|
||||||
|
|
||||||
|
**Soluție:**
|
||||||
|
```
|
||||||
|
1. Verificați formatul fiecărui cod
|
||||||
|
2. Asigurați-vă că codurile încep cu literele corecte
|
||||||
|
3. Pentru defect, introduceți EXACT 3 cifre (001, nu 1 sau 0001)
|
||||||
|
4. Resetați formularul și reîncercați
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Problemă: "QZ Tray not connected"
|
||||||
|
|
||||||
|
**Cauze:**
|
||||||
|
- QZ Tray nu este instalat
|
||||||
|
- QZ Tray nu este activ/pornit
|
||||||
|
- Firewall blochează conexiunea
|
||||||
|
|
||||||
|
**Soluție:**
|
||||||
|
```
|
||||||
|
1. Descărcați și instalați QZ Tray de la qz.io
|
||||||
|
2. Porniți serviciul QZ Tray (din tasktray)
|
||||||
|
3. Verificați conexiunea la localhost:8383
|
||||||
|
4. Reîncărcați pagina
|
||||||
|
5. Încercați din nou "Create New Box"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Problemă: "No printers found"
|
||||||
|
|
||||||
|
**Cauze:**
|
||||||
|
- Nicio imprimantă conectată
|
||||||
|
- Imprimantă nu este configurată
|
||||||
|
- Driver-ul imprimantei este defect
|
||||||
|
|
||||||
|
**Soluție:**
|
||||||
|
```
|
||||||
|
1. Conectați imprimanta fizic (USB sau rețea)
|
||||||
|
2. Instalați driver-ii necesari
|
||||||
|
3. Configurați imprimanta în setările sistemului
|
||||||
|
4. Testați tipărirea din alt program
|
||||||
|
5. Reîncărcați pagina FG Scan
|
||||||
|
6. Încercați din nou
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Problemă: "Defect code must be 3 digits"
|
||||||
|
|
||||||
|
**Cauze:**
|
||||||
|
- Introdusă mai puțin de 3 cifre (ex: 00, 1)
|
||||||
|
- Introdusă mai mult de 3 cifre (ex: 0000)
|
||||||
|
- Introduse caractere non-numerice
|
||||||
|
|
||||||
|
**Soluție:**
|
||||||
|
```
|
||||||
|
Introduceți EXACT 3 CIFRE NUMERICE:
|
||||||
|
✓ CORECT: 000, 001, 123, 999
|
||||||
|
✗ GREȘIT: 00, 1, 0001, 12a, defect
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Problemă: Etichetele nu se tipăresc
|
||||||
|
|
||||||
|
**Verificări:**
|
||||||
|
```
|
||||||
|
1. QZ Tray conectat? → Verificați status
|
||||||
|
2. Imprimanta selectată? → Setări sistem
|
||||||
|
3. Hârtie în imprimantă? → Reîncărcați hârtie
|
||||||
|
4. Driver corect? → Reinstalați driver
|
||||||
|
5. Format ZPL acceptat? → Imprimanta suportă ZPL?
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Cerințe Sistem și Configurație
|
||||||
|
|
||||||
|
### Hardware Necesar
|
||||||
|
|
||||||
|
```
|
||||||
|
✓ Computer/Server cu browser modern
|
||||||
|
✓ Imprimantă etichetă (cu suport ZPL de preferință)
|
||||||
|
✓ Scannere barcode (pentru eficiență)
|
||||||
|
✓ Conexiune rețea (pentru baza de date)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Software Necesar
|
||||||
|
|
||||||
|
```
|
||||||
|
✓ Browser: Chrome, Firefox, Edge (versiuni recente)
|
||||||
|
✓ QZ Tray: v2.2.0 sau mai nou (pentru tipărire)
|
||||||
|
✓ Java Runtime Environment (pentru QZ Tray)
|
||||||
|
✓ Driver imprimantă compatibil
|
||||||
|
```
|
||||||
|
|
||||||
|
### Setări Browser
|
||||||
|
|
||||||
|
```
|
||||||
|
✓ JavaScript activat
|
||||||
|
✓ LocalStorage activat
|
||||||
|
✓ Pop-ups dezblocate pentru QZ Tray
|
||||||
|
✓ Certificate SSL valid (dacă HTTPS)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. Informații Suplimentare
|
||||||
|
|
||||||
|
### Integrare Bază de Date
|
||||||
|
|
||||||
|
```
|
||||||
|
TABELE IMPLICITE:
|
||||||
|
1. fg_scans - Înregistrează scanări
|
||||||
|
2. boxes - Stochează cutii create
|
||||||
|
3. cp_to_box - Relații produs-cutie
|
||||||
|
4. operators - Informații operatori
|
||||||
|
5. products - Informații produse
|
||||||
|
```
|
||||||
|
|
||||||
|
### Fluxul Datelor
|
||||||
|
|
||||||
|
```
|
||||||
|
INPUT (Barcode/Tastatură)
|
||||||
|
↓
|
||||||
|
VALIDARE (în client + server)
|
||||||
|
↓
|
||||||
|
SALVARE DB (fg_scans table)
|
||||||
|
↓
|
||||||
|
[IF Scan-to-Boxes AND defect=000]
|
||||||
|
├→ CREATE BOX (boxes table)
|
||||||
|
├→ PRINT LABEL (QZ Tray)
|
||||||
|
├→ SCAN LABEL (verficare)
|
||||||
|
└→ CREATE RELATION (cp_to_box table)
|
||||||
|
↓
|
||||||
|
CONFIRMAȚIE (notificare utilizator)
|
||||||
|
↓
|
||||||
|
RESET & READY (pentru următoarea scanare)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. Suport și Contact
|
||||||
|
|
||||||
|
Pentru probleme sau întrebări:
|
||||||
|
|
||||||
|
- **Administrator Sistem**: Contactați dept. IT
|
||||||
|
- **Documentație QZ Tray**: https://qz.io
|
||||||
|
- **Report Bug**: Contactați manager-ul modulului
|
||||||
|
- **Training**: Consultați alte pagini de ajutor din aplicație
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Document**: Ghid Utilizare FG Scan Module
|
||||||
|
**Versiune**: 1.0
|
||||||
|
**Dată Actualizare**: 4 Ianuarie 2026
|
||||||
|
**Limbă**: Română
|
||||||
|
**Status**: Activ
|
||||||
|
|
||||||
Reference in New Issue
Block a user