diff --git a/data-entry-app/docs/IMPLEMENTATION_PLAN_AUTH_UNITAR.md b/data-entry-app/docs/IMPLEMENTATION_PLAN_AUTH_UNITAR.md
new file mode 100644
index 0000000..25ac284
--- /dev/null
+++ b/data-entry-app/docs/IMPLEMENTATION_PLAN_AUTH_UNITAR.md
@@ -0,0 +1,484 @@
+# Plan: Sincronizare Nomenclatoare Oracle + Auth SSO + OCR Furnizori
+
+## Obiective
+1. **Sincronizare nomenclatoare din Oracle în SQLite** (furnizori, casa/banca)
+2. **Auth pentru data-entry-app** cu SSO (frontend-uri separate pe path)
+3. **OCR: căutare furnizor după CUI** + creare locală dacă nu există
+4. **Deploy Windows IIS** cu path routing
+
+---
+
+## Arhitectura Aleasă
+
+```
+roa2web.romfast.ro (IIS + ARR)
+│
+├── /reports/ → reports-app/frontend/
+├── /data/ → data-entry-app/frontend/
+│
+├── /api/reports/* → reports-backend:8001
+├── /api/data/* → data-entry-backend:8003
+└── /api/auth/* → reports-backend (auth provider)
+```
+
+**URL-uri compacte:**
+- `roa2web.romfast.ro/reports/` - Rapoarte
+- `roa2web.romfast.ro/data/` - Introducere date (bonuri fiscale)
+- `roa2web.romfast.ro/api/reports/` - API rapoarte
+- `roa2web.romfast.ro/api/data/` - API introducere date
+
+**SSO**: Același domeniu = localStorage partajat = token JWT valid pentru ambele
+
+---
+
+## Faza 1: Auth pentru Data-Entry-App
+
+### 1.1 Backend - Integrare shared/auth/
+
+**Fișiere de modificat:**
+- `data-entry-app/backend/app/main.py`
+- `data-entry-app/backend/app/routers/receipts.py`
+- `data-entry-app/backend/app/core/config.py`
+
+**Acțiuni:**
+```python
+# main.py - Adăugare middleware
+import sys
+sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent.parent / "shared"))
+
+from auth.middleware import AuthenticationMiddleware
+from auth.dependencies import get_current_user
+
+app.add_middleware(
+ AuthenticationMiddleware,
+ excluded_paths=["/docs", "/redoc", "/openapi.json", "/health", "/"]
+)
+```
+
+```python
+# receipts.py - Înlocuire placeholder
+from auth.dependencies import get_current_user
+from auth.models import CurrentUser
+
+@router.get("/")
+async def list_receipts(
+ current_user: CurrentUser = Depends(get_current_user)
+):
+ # folosește current_user.username
+```
+
+### 1.2 Frontend - Auth Store + Login Page
+
+**Fișiere de creat/copiat din reports-app:**
+- `data-entry-app/frontend/src/stores/auth.js` (copiat)
+- `data-entry-app/frontend/src/views/LoginView.vue` (copiat)
+- `data-entry-app/frontend/src/router/index.js` (adăugat guard)
+- `data-entry-app/frontend/src/services/api.js` (axios interceptor)
+
+**Decizie SSO:**
+- Frontend data-entry folosește `/api/auth/login` de pe reports-backend
+- Sau: redirect la `/login` (reports-app) care setează token în localStorage
+- Token valid pentru ambele (același JWT_SECRET_KEY)
+
+---
+
+## Faza 2: Sincronizare Nomenclatoare Oracle → SQLite
+
+### 2.1 Noi Modele SQLModel
+
+**Fișier:** `data-entry-app/backend/app/db/models/nomenclature.py`
+
+```python
+class SyncedSupplier(SQLModel, table=True):
+ """Furnizori sincronizați din Oracle"""
+ __tablename__ = "synced_suppliers"
+
+ id: int = Field(primary_key=True) # ID din Oracle (ID_PART)
+ company_id: int = Field(index=True)
+ name: str = Field(max_length=200) # DEN_PART
+ fiscal_code: Optional[str] = Field(max_length=20, index=True) # COD_FISCAL
+ address: Optional[str] = Field(max_length=500)
+ synced_at: datetime = Field(default_factory=datetime.utcnow)
+
+class LocalSupplier(SQLModel, table=True):
+ """Furnizori creați local din OCR (neexistenți în Oracle)"""
+ __tablename__ = "local_suppliers"
+
+ id: Optional[int] = Field(default=None, primary_key=True)
+ company_id: int = Field(index=True)
+ name: str = Field(max_length=200)
+ fiscal_code: str = Field(max_length=20, unique=True, index=True)
+ address: Optional[str] = Field(max_length=500)
+ created_by: str = Field(max_length=100)
+ created_at: datetime = Field(default_factory=datetime.utcnow)
+ oracle_synced: bool = Field(default=False) # True când e creat în Oracle
+
+class SyncedCashRegister(SQLModel, table=True):
+ """Case/Bănci sincronizate din Oracle"""
+ __tablename__ = "synced_cash_registers"
+
+ id: int = Field(primary_key=True) # ID din Oracle
+ company_id: int = Field(index=True)
+ name: str = Field(max_length=100)
+ account_code: str = Field(max_length=20) # 5311, 5121 etc.
+ register_type: str = Field(max_length=20) # CASA sau BANCA
+ synced_at: datetime = Field(default_factory=datetime.utcnow)
+```
+
+### 2.2 Alembic Migration
+
+**Fișier:** `data-entry-app/backend/migrations/versions/xxx_add_nomenclature_tables.py`
+
+### 2.3 Sync Service
+
+**Fișier:** `data-entry-app/backend/app/services/sync_service.py`
+
+```python
+class NomenclatureSyncService:
+ """Sincronizare nomenclatoare din Oracle în SQLite"""
+
+ @staticmethod
+ async def sync_suppliers(company_id: int, schema: str) -> int:
+ """Sincronizează furnizori pentru o companie"""
+ async with oracle_pool.get_connection() as conn:
+ cursor = conn.cursor()
+ cursor.execute(f"""
+ SELECT ID_PART, DEN_PART, COD_FISCAL, ADRESA
+ FROM {schema}.NOM_PARTENERI
+ WHERE TIP_PART IN ('F', 'A') -- Furnizori sau Ambele
+ """)
+ # Upsert în SQLite
+
+ @staticmethod
+ async def sync_cash_registers(company_id: int, schema: str) -> int:
+ """Sincronizează case și bănci"""
+ # Similar pentru NOM_CASE și NOM_BANCI
+
+ @staticmethod
+ async def get_schema_for_company(company_id: int) -> str:
+ """Obține schema Oracle pentru o companie"""
+ # Folosește cache din shared sau query V_NOM_FIRME
+```
+
+### 2.4 Strategia de Sync Hibrid
+
+1. **La startup app**: Sync automat (background task)
+2. **Periodic**: Task programat la 4h
+3. **On-demand**: Căutare live în Oracle când CUI nu există local
+
+**Fișier:** `data-entry-app/backend/app/main.py`
+```python
+@app.on_event("startup")
+async def startup_sync():
+ # Background sync pentru company-urile active
+ asyncio.create_task(sync_nomenclatures_background())
+```
+
+---
+
+## Faza 3: OCR + Căutare Furnizor după CUI
+
+### 3.1 Flow Căutare Furnizor
+
+```
+OCR extrage CUI
+ ↓
+Căutare în SyncedSupplier (SQLite)
+ ↓ (nu găsit)
+Căutare în LocalSupplier (SQLite)
+ ↓ (nu găsit)
+Căutare LIVE în Oracle (NOM_PARTENERI)
+ ↓ (nu găsit)
+Creare LocalSupplier cu date OCR
+ ↓
+Utilizator poate edita înainte de submit
+```
+
+### 3.2 Endpoint Căutare Furnizor
+
+**Fișier:** `data-entry-app/backend/app/routers/nomenclature.py`
+
+```python
+@router.get("/suppliers/search")
+async def search_supplier(
+ company_id: int,
+ fiscal_code: Optional[str] = None,
+ name: Optional[str] = None,
+ current_user: CurrentUser = Depends(get_current_user)
+) -> SupplierSearchResult:
+ """
+ Caută furnizor:
+ 1. În SQLite (synced + local)
+ 2. Live în Oracle dacă nu găsit
+ 3. Returnează sugestie creare dacă nu există
+ """
+
+@router.post("/suppliers/local")
+async def create_local_supplier(
+ supplier: LocalSupplierCreate,
+ current_user: CurrentUser = Depends(get_current_user)
+) -> LocalSupplier:
+ """Crează furnizor local din date OCR"""
+```
+
+### 3.3 Modificare OCR Flow în Frontend
+
+**Fișier:** `data-entry-app/frontend/src/views/ReceiptCreateView.vue`
+
+```javascript
+// După OCR, caută automat furnizor
+async function handleOCRResult(ocrData) {
+ if (ocrData.cui) {
+ const result = await api.get('/api/data-entry/suppliers/search', {
+ params: { company_id: selectedCompany.id, fiscal_code: ocrData.cui }
+ });
+
+ if (result.found) {
+ form.partner_id = result.supplier.id;
+ form.partner_name = result.supplier.name;
+ } else {
+ // Afișează opțiune creare locală
+ showCreateSupplierDialog(ocrData);
+ }
+ }
+}
+```
+
+---
+
+## Faza 4: Deploy Windows IIS
+
+### 4.1 Serviciu Windows pentru data-entry-backend
+
+**Fișier:** `deployment/windows/scripts/Install-DataEntry.ps1`
+
+Similar cu Install-ROA2WEB.ps1 dar:
+- ServiceName: `ROA2WEB-DataEntry`
+- Port: 8003
+- BackendPath: `C:\inetpub\wwwroot\roa2web\data-entry-app\backend`
+- FrontendPath: `C:\inetpub\wwwroot\roa2web\data-entry-app\frontend`
+
+**Actualizare Install-ROA2WEB.ps1** pentru structura unitară:
+- BackendPath: `C:\inetpub\wwwroot\roa2web\reports-app\backend`
+- FrontendPath: `C:\inetpub\wwwroot\roa2web\reports-app\frontend`
+
+### 4.2 Actualizare web.config
+
+**Fișier:** `deployment/windows/config/web.config`
+
+Reguli URL compacte (`/reports/`, `/data/`, `/api/reports/`, `/api/data/`):
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+**IIS Virtual Directories (pentru URL-uri compacte):**
+```powershell
+# /reports/ → reports-app/frontend/
+New-WebVirtualDirectory -Site "Default Web Site" -Name "reports" `
+ -PhysicalPath "C:\inetpub\wwwroot\roa2web\reports-app\frontend"
+
+# /data/ → data-entry-app/frontend/
+New-WebVirtualDirectory -Site "Default Web Site" -Name "data" `
+ -PhysicalPath "C:\inetpub\wwwroot\roa2web\data-entry-app\frontend"
+```
+
+### 4.3 Structura Foldere (UNITARĂ - identică dev/prod)
+
+**În development (git repo):**
+```
+roa2web/
+├── reports-app/
+│ ├── backend/ # FastAPI port 8001
+│ ├── frontend/ # Vue.js port 3000
+│ └── telegram-bot/ # Bot Telegram
+├── data-entry-app/
+│ ├── backend/ # FastAPI port 8003
+│ └── frontend/ # Vue.js port 3010
+└── shared/ # Cod partajat (auth, database)
+```
+
+**În producție (Windows IIS) - IDENTIC:**
+```
+C:\inetpub\wwwroot\roa2web\
+├── reports-app/
+│ ├── backend/ # Serviciu Windows port 8001
+│ └── frontend/ # Servit de IIS pe /
+├── data-entry-app/
+│ ├── backend/ # Serviciu Windows port 8003
+│ └── frontend/ # Servit de IIS pe /data-entry/
+├── telegram-bot/ # Serviciu Windows port 8002
+└── shared/ # Cod partajat
+```
+
+**Avantaje structură unitară:**
+- Deploy simplu: `xcopy /E /Y source\reports-app dest\reports-app`
+- Path-uri identice în cod (no surprises)
+- Un singur script de deploy pentru ambele medii
+
+---
+
+## Faza 5: Configurare Dev (identic cu prod)
+
+### 5.1 Vite Config pentru URL-uri Compacte
+
+**Fișier:** `data-entry-app/frontend/vite.config.js`
+```javascript
+export default defineConfig({
+ base: '/data/', // URL compact în producție
+ server: {
+ proxy: {
+ '/api/auth': 'http://localhost:8001',
+ '/api/data': 'http://localhost:8003'
+ }
+ }
+})
+```
+
+**Fișier:** `reports-app/frontend/vite.config.js` (ACTUALIZAT)
+```javascript
+export default defineConfig({
+ base: '/reports/', // URL compact în producție (era '/')
+ server: {
+ proxy: {
+ '/api/auth': 'http://localhost:8001',
+ '/api/reports': 'http://localhost:8001'
+ }
+ }
+})
+```
+
+**IMPORTANT:** Actualizare API calls în frontend:
+- Reports: `/api/reports/companies`, `/api/reports/invoices`, etc.
+- Data Entry: `/api/data/receipts`, `/api/data/suppliers`, etc.
+- Auth (comun): `/api/auth/login`, `/api/auth/refresh`
+
+### 5.2 Script Start Unificat
+
+**Fișier:** `start-all.sh` (nou)
+
+```bash
+#!/bin/bash
+# Pornește toate serviciile pentru dev
+
+# SSH tunnel
+./ssh_tunnel.sh start
+
+# Reports backend
+cd reports-app/backend && uvicorn app.main:app --port 8001 &
+
+# Data entry backend
+cd data-entry-app/backend && uvicorn app.main:app --port 8003 &
+
+# Reports frontend
+cd reports-app/frontend && npm run dev -- --port 3000 &
+
+# Data entry frontend
+cd data-entry-app/frontend && npm run dev -- --port 3010 &
+
+wait
+```
+
+---
+
+## Ordine Implementare
+
+| # | Task | Efort | Dependențe |
+|---|------|-------|------------|
+| 1 | Modele SQLModel nomenclatoare | 30 min | - |
+| 2 | Alembic migration | 15 min | #1 |
+| 3 | Sync service (Oracle → SQLite) | 2h | #2 |
+| 4 | Auth middleware în data-entry-backend | 1h | - |
+| 5 | Auth store + login în data-entry-frontend | 1h | #4 |
+| 6 | Endpoint căutare furnizor | 1h | #3 |
+| 7 | Frontend OCR + furnizor flow | 1.5h | #6 |
+| 8 | web.config IIS actualizat | 30 min | - |
+| 9 | Script deploy data-entry Windows | 1h | #8 |
+| 10 | Testare end-to-end | 1h | all |
+
+**Total estimat: ~10h**
+
+---
+
+## Fișiere Critice de Modificat/Creat
+
+### Backend data-entry-app:
+- `app/main.py` - middleware auth + startup sync
+- `app/db/models/nomenclature.py` - noi modele (CREARE)
+- `app/services/sync_service.py` - sync Oracle (CREARE)
+- `app/services/nomenclature_service.py` - refactorizare
+- `app/routers/nomenclature.py` - endpoint-uri noi (CREARE)
+- `app/routers/receipts.py` - auth dependencies
+- `migrations/versions/xxx_nomenclature.py` - migrare (CREARE)
+
+### Frontend data-entry-app:
+- `src/stores/auth.js` - copiat din reports-app
+- `src/views/LoginView.vue` - copiat + adaptat
+- `src/router/index.js` - auth guard
+- `src/services/api.js` - axios config
+- `src/views/ReceiptCreateView.vue` - OCR + supplier flow
+
+### Deploy (structură unitară):
+- `deployment/windows/config/web.config` - reguli noi + actualizate
+- `deployment/windows/scripts/Install-ROA2WEB.ps1` - ACTUALIZAT pentru structura unitară
+- `deployment/windows/scripts/Install-DataEntry.ps1` - NOU
+- `deployment/windows/scripts/Build-ROA2WEB.ps1` - ACTUALIZAT pentru ambele apps
+- `deployment/windows/docs/WINDOWS_DEPLOYMENT.md` - ACTUALIZAT cu noua structură
+
+### Shared:
+- Nu necesită modificări (refolosim exact ce există)
+
+---
+
+## Întrebări Rezolvate
+
+| Întrebare | Răspuns |
+|-----------|---------|
+| Furnizor nou din OCR? | Creare automată în SQLite (LocalSupplier) |
+| Sync strategy? | Hibrid: startup + periodic 4h + on-demand |
+| Auth sharing? | Frontend-uri separate pe path, același token JWT (SSO via localStorage) |
+| Deployment? | IIS path routing, servicii Windows separate |
+| Structura directoare? | **UNITARĂ** - grupat pe app (`{app}/backend`, `{app}/frontend`) identic dev/prod |
+| SSO cum funcționează? | Același domeniu IIS → localStorage partajat → token valid pentru ambele API-uri |
+| URL-uri? | **COMPACTE**: `/reports/`, `/data/`, `/api/reports/`, `/api/data/` |
+| Root (/)? | Redirect automat la `/reports/` |
diff --git a/data-entry-app/docs/IMPLEMENTATION_PLAN_OCR.md b/data-entry-app/docs/IMPLEMENTATION_PLAN_OCR.md
new file mode 100644
index 0000000..49e2724
--- /dev/null
+++ b/data-entry-app/docs/IMPLEMENTATION_PLAN_OCR.md
@@ -0,0 +1,254 @@
+# Plan: OCR Inteligent cu Early Exit
+
+> **Context Handover Document** - Plan de implementare pentru următoarea sesiune
+
+## Obiectiv
+Optimizare proces OCR - dacă PaddleOCR pe light preprocessing dă rezultate bune, să NU mai ruleze heavy preprocessing și Tesseract.
+
+---
+
+## Criterii Early Exit (TOATE trebuie îndeplinite)
+
+**Continuă cu alte încercări DACĂ:**
+- Confidență < **85%** SAU
+- Lipsește ORICARE din câmpurile critice:
+ - ✗ Număr bon (`receipt_number`)
+ - ✗ Dată (`receipt_date`)
+ - ✗ Valoare totală (`amount`)
+ - ✗ Valoare TVA (`tva_total` sau `tva_entries`)
+ - ✗ Cod fiscal (`cui`)
+
+**Early exit DOAR când:**
+- Confidență >= 85% **ȘI**
+- TOATE 5 câmpurile sunt extrase
+
+---
+
+## Flow Propus: Adaptive OCR Pipeline
+
+```
+1. PaddleOCR + Light Preprocessing (cel mai rapid, cel mai bun pentru PDF-uri clare)
+ ↓
+ Verifică: conf >= 85% AND toate 5 câmpurile extrase?
+ ├─ DA → STOP, returnează rezultat
+ └─ NU → continuă la pasul 2
+
+2. PaddleOCR + Heavy Preprocessing (pentru bonuri termice șterse)
+ ↓
+ Combină cu rezultatul anterior (merge)
+ Verifică: toate câmpurile extrase acum?
+ ├─ DA → STOP
+ └─ NU → continuă la pasul 3
+
+3. Tesseract + Light (fallback pentru cazuri dificile)
+ ↓
+ Combină toate rezultatele
+ Returnează cel mai bun rezultat combinat
+```
+
+---
+
+## Beneficii Estimate
+
+| Tip document | OCR calls | Timp estimat |
+|--------------|-----------|--------------|
+| PDF clar (Kineterra) | 1 | ~2-3 sec |
+| PDF mediu | 2 | ~5 sec |
+| Bon termic șters | 3 | ~8-10 sec |
+
+**Comparație cu acum:** Totdeauna 4 calls → maxim 3, de obicei 1-2
+
+---
+
+## Fișier de Modificat
+
+**`data-entry-app/backend/app/services/ocr_service.py`**
+
+### Înlocuire completă `_process_sync()`:
+
+```python
+def _process_sync(
+ self,
+ image_path: Path,
+ mime_type: str
+) -> Tuple[bool, str, Optional[ExtractionResult]]:
+ """Synchronous processing with ADAPTIVE OCR pipeline."""
+
+ logger.info(f"[OCR Service] Starting processing: {image_path}, mime: {mime_type}")
+
+ # Load image
+ if mime_type == 'application/pdf':
+ try:
+ images = self.preprocessor.pdf_to_images(image_path)
+ if not images:
+ return False, "Failed to extract images from PDF", None
+ image = images[0]
+ except RuntimeError as e:
+ return False, str(e), None
+ else:
+ try:
+ image = self.preprocessor.load_image(image_path)
+ except ValueError as e:
+ return False, str(e), None
+
+ raw_texts = []
+ extraction = None
+
+ # ══════════════════════════════════════════════════════════════
+ # STEP 1: PaddleOCR + Light (fastest, best for clear PDFs)
+ # ══════════════════════════════════════════════════════════════
+ logger.info("[OCR] Step 1: PaddleOCR + Light preprocessing")
+ light_img = self.preprocessor.preprocess_light(image)
+
+ try:
+ paddle_light = self.ocr_engine._paddle_recognize(light_img)
+ if paddle_light and paddle_light.text:
+ extraction = self.extractor.extract(paddle_light.text)
+ extraction.ocr_engine = "paddle-light"
+ raw_texts.append(f"═══ PaddleOCR (light, conf: {paddle_light.confidence:.0%}) ═══\n{paddle_light.text}")
+
+ # Early exit if complete
+ if self._is_extraction_complete(extraction):
+ extraction.raw_text = "\n\n".join(raw_texts)
+ logger.info("[OCR] ✓ Early exit: complete extraction from paddle-light")
+ return True, "OCR complete (fast mode)", extraction
+ except Exception as e:
+ logger.warning(f"[OCR] PaddleOCR light failed: {e}")
+ extraction = ExtractionResult()
+
+ # ══════════════════════════════════════════════════════════════
+ # STEP 2: PaddleOCR + Heavy (for faded thermal receipts)
+ # ══════════════════════════════════════════════════════════════
+ logger.info("[OCR] Step 2: PaddleOCR + Heavy preprocessing")
+ heavy_img = self.preprocessor.preprocess_heavy(image)
+
+ try:
+ paddle_heavy = self.ocr_engine._paddle_recognize(heavy_img)
+ if paddle_heavy and paddle_heavy.text:
+ extraction_heavy = self.extractor.extract(paddle_heavy.text)
+ extraction_heavy.ocr_engine = "paddle-heavy"
+ raw_texts.append(f"═══ PaddleOCR (heavy, conf: {paddle_heavy.confidence:.0%}) ═══\n{paddle_heavy.text}")
+
+ # Merge with previous
+ extraction = self._merge_extractions(extraction, extraction_heavy)
+
+ if self._is_extraction_complete(extraction):
+ extraction.raw_text = "\n\n".join(raw_texts)
+ extraction.ocr_engine = "paddle-adaptive"
+ logger.info("[OCR] ✓ Early exit: complete extraction after paddle-heavy")
+ return True, "OCR complete (paddle dual)", extraction
+ except Exception as e:
+ logger.warning(f"[OCR] PaddleOCR heavy failed: {e}")
+
+ # ══════════════════════════════════════════════════════════════
+ # STEP 3: Tesseract fallback
+ # ══════════════════════════════════════════════════════════════
+ logger.info("[OCR] Step 3: Tesseract fallback")
+
+ try:
+ tesseract_result = self.ocr_engine._tesseract_recognize(light_img)
+ if tesseract_result and tesseract_result.text:
+ extraction_tess = self.extractor.extract(tesseract_result.text)
+ extraction_tess.ocr_engine = "tesseract"
+ raw_texts.append(f"═══ Tesseract (conf: {tesseract_result.confidence:.0%}) ═══\n{tesseract_result.text}")
+
+ extraction = self._merge_extractions(extraction, extraction_tess)
+ except Exception as e:
+ logger.warning(f"[OCR] Tesseract failed: {e}")
+
+ # Final result
+ if extraction is None:
+ return False, "No text detected", None
+
+ extraction.raw_text = "\n\n".join(raw_texts)
+ extraction.ocr_engine = "adaptive-full"
+
+ # Build result message
+ fields_found = []
+ if extraction.amount: fields_found.append("amount")
+ if extraction.receipt_date: fields_found.append("date")
+ if extraction.receipt_number: fields_found.append("number")
+ if extraction.cui: fields_found.append("CUI")
+ if extraction.tva_total or extraction.tva_entries: fields_found.append("TVA")
+
+ message = f"OCR complete (full pipeline). Found: {', '.join(fields_found) or 'no fields'}"
+ logger.info(f"[OCR] Final result: {message}")
+
+ return True, message, extraction
+```
+
+### Adăugare metodă `_is_extraction_complete()`:
+
+```python
+def _is_extraction_complete(self, ext: ExtractionResult, min_confidence: float = 0.85) -> bool:
+ """
+ Check if extraction has ALL required fields to skip further processing.
+
+ Required for early exit (ALL must be true):
+ - Overall confidence >= 85%
+ - ALL 5 critical fields present: number, date, amount, TVA, CUI
+ """
+ # Must have high confidence
+ if ext.overall_confidence < min_confidence:
+ logger.info(f"[OCR] Confidence {ext.overall_confidence:.0%} < {min_confidence:.0%} - continuing")
+ return False
+
+ # Check all required fields
+ has_number = bool(ext.receipt_number)
+ has_date = bool(ext.receipt_date)
+ has_amount = bool(ext.amount)
+ has_tva = bool(ext.tva_total) or bool(ext.tva_entries)
+ has_cui = bool(ext.cui)
+
+ missing = []
+ if not has_number: missing.append("number")
+ if not has_date: missing.append("date")
+ if not has_amount: missing.append("amount")
+ if not has_tva: missing.append("TVA")
+ if not has_cui: missing.append("CUI")
+
+ if missing:
+ logger.info(f"[OCR] Missing: {', '.join(missing)} - continuing")
+ return False
+
+ logger.info(f"[OCR] ✓ All 5 fields found with {ext.overall_confidence:.0%} confidence")
+ return True
+```
+
+---
+
+## Cod de Șters
+
+După implementare, poți șterge:
+- `_merge_all_extractions()` - înlocuită de flow secvențial
+- `_format_dual_raw_text()` - nefolosită
+- Bucla `for i, processed in enumerate(variants):` - înlocuită complet
+
+---
+
+## Context: Rezultate OCR Kineterra
+
+Din testele anterioare, **PaddleOCR + Light** a dat cele mai bune rezultate:
+
+| Variantă | Conf | CUI | Adresa |
+|----------|------|-----|--------|
+| **PaddleOCR Light** | **83%** | **31180432** ✓ | MUN.CONSTANTA ✓ |
+| PaddleOCR Heavy | 83% | 31189432 ✗ | CONSTANTN ✗ |
+| Tesseract Light | 50% | 31100400 ✗ | corupt |
+| Tesseract Heavy | 42% | - | corupt |
+
+---
+
+## Testare
+
+După implementare, testează cu toate PDF-urile:
+
+1. **`abonament kineterra.pdf`** - ar trebui să facă early exit la Step 1
+2. **`benzina 27 octombrie.pdf`** - verifică extracție completă
+3. **`igiena 11 octombrie.pdf`** - verifică extracție completă
+4. **`benzina 14 august.pdf`** - verifică extracție completă
+
+---
+
+*Generat: 2024-12-12*
+*Pentru continuare în următoarea sesiune Claude*
diff --git a/PLAN_DATA_ENTRY_RECEIPTS.md b/data-entry-app/docs/PLAN_DATA_ENTRY_RECEIPTS.md
similarity index 100%
rename from PLAN_DATA_ENTRY_RECEIPTS.md
rename to data-entry-app/docs/PLAN_DATA_ENTRY_RECEIPTS.md
diff --git a/data-entry-app/docs/abonament kineterra.pdf b/data-entry-app/docs/abonament kineterra.pdf
new file mode 100644
index 0000000..76fa159
Binary files /dev/null and b/data-entry-app/docs/abonament kineterra.pdf differ
diff --git a/data-entry-app/docs/benzina 14 august.pdf b/data-entry-app/docs/benzina 14 august.pdf
new file mode 100644
index 0000000..9ae5fd8
Binary files /dev/null and b/data-entry-app/docs/benzina 14 august.pdf differ
diff --git a/data-entry-app/docs/benzina 27 octombrie .pdf b/data-entry-app/docs/benzina 27 octombrie .pdf
new file mode 100644
index 0000000..3143458
Binary files /dev/null and b/data-entry-app/docs/benzina 27 octombrie .pdf differ
diff --git a/data-entry-app/docs/igiena 11 octombrie .pdf b/data-entry-app/docs/igiena 11 octombrie .pdf
new file mode 100644
index 0000000..ed8e621
--- /dev/null
+++ b/data-entry-app/docs/igiena 11 octombrie .pdf
@@ -0,0 +1,2086 @@
+%PDF-1.3
+%âãÏÓ
+1 0 obj
+<>
+endobj
+2 0 obj
+<>
+endobj
+3 0 obj
+<>/Font<>>>>>/Rotate 0/AF[6 0 R]/Type/Page>>
+endobj
+4 0 obj<>stream
+q 195.5755 0.0000 0.0000 792.0000 0.0000 0.0000 cm /Im0 Do Q q 0.2020 0.0000 0.0000 0.2020 0.0000 0.0000 cm BT
+3 Tr
+/Ft0 1 Tf
+-0.035 Tc
+17.4086 0 0 40 9.07 3497 Tm
+(NIVS: ) Tj
+28.5839 0 0 40 60 3497 Tm
+(1360760 ) Tj
+21.8954 0 0 41.25 9.77 3449 Tm
+(OPERATOR:FLORENT ) Tj
+20.682 0 0 41.25 227.85 3449 Tm
+(INA ) Tj
+22.0059 0 0 41.25 278.77 3449 Tm
+(CUSMIR ) Tj
+13.3033 0 0 48.75 10.06 3400 Tm
+(NR ) Tj
+24.6151 0 0 48.75 42.88 3400 Tm
+(POS: ) Tj
+26.7823 0 0 48.75 97.71 3400 Tm
+(C3POS-) Tj
+24.7714 0 0 48.75 181.74 3400 Tm
+(C12 ) Tj
+21.9939 0 0 47.5 2.77 3311 Tm
+(QLIENT ) Tj
+27.2511 0 0 47.5 94.71 3311 Tm
+(C.U. ) Tj
+45.1441 0 0 47.5 154.67 3311 Tm
+(I./ ) Tj
+36.9724 0 0 47.5 217.6 3311 Tm
+(C.IE. ) Tj
+27.5038 0 0 47.5 292.3 3311 Tm
+(:RO1879855 ) Tj
+21.1264 0 0 43.75 -1.11 3219 Tm
+(DETERGENT ) Tj
+20.5004 0 0 43.75 135.79 3219 Tm
+(GEAMURI ) Tj
+16.3336 0 0 43.75 246.77 3219 Tm
+(5L ) Tj
+23.6223 0 0 43.75 287.89 3219 Tm
+(PH ) Tj
+21.3702 0 0 43.75 329.9 3219 Tm
+(MISAUON ) Tj
+27.2716 0 0 50 0.96 3167 Tm
+(U79005130 ) Tj
+32.6134 0 0 50 136.58 3167 Tm
+(6422 ) Tj
+27.1727 0 0 50 198.7 3167 Tm
+(768027152 ) Tj
+22.2987 0 0 41.25 -3.12 3128 Tm
+(PROSOP ) Tj
+22.7218 0 0 41.25 92.89 3128 Tm
+(HARTIE ) Tj
+0 Tc
+41.25 0 0 41.25 189.74 3128 Tm
+(2 ) Tj
+-0.035 Tc
+22.5766 0 0 41.25 217.58 3128 Tm
+(STR ) Tj
+25.232 0 0 41.25 272.68 3128 Tm
+(640G/ROLA ) Tj
+20.5545 0 0 41.25 412.9 3128 Tm
+(MLI ) Tj
+28.1421 0 0 36.25 2.79 3081 Tm
+(IZ4441011047 ) Tj
+29.5604 0 0 36.25 174.62 3081 Tm
+(6422465006429 ) Tj
+24.0428 0 0 50 196.89 3634 Tm
+(BINE ) Tj
+30.2041 0 0 50 269.93 3634 Tm
+(ATI ) Tj
+22.4532 0 0 50 320.95 3634 Tm
+(VENIT ) Tj
+20.8894 0 0 50 406.85 3634 Tm
+(IN ) Tj
+17.926 0 0 50 450.92 3634 Tm
+(MAGAZ ) Tj
+18.5243 0 0 50 517.87 3634 Tm
+(INUL ) Tj
+23.1722 0 0 50 580.89 3634 Tm
+(BRICK ) Tj
+29.905 0 0 40 345.68 3595 Tm
+(CIF: ) Tj
+26.6236 0 0 40 400.87 3595 Tm
+(RO10562600 ) Tj
+21.106 0 0 40 9.9 3032 Tm
+(ROSOP ) Tj
+23.5846 0 0 40 90.88 3032 Tm
+(HORTIE ) Tj
+0 Tc
+40 0 0 40 188.75 3032 Tm
+(2 ) Tj
+-0.035 Tc
+23.1555 0 0 40 216.57 3032 Tm
+(STR ) Tj
+26.3735 0 0 40 273.88 3032 Tm
+(4506/ROLA ) Tj
+20.8502 0 0 40 413.9 3032 Tm
+(ML6 ) Tj
+28.4894 0 0 47.5 10.9 2980 Tm
+(Z677101186146 ) Tj
+29.8907 0 0 47.5 202.62 2980 Tm
+(6422465006719 ) Tj
+25.7316 0 0 56.25 -0.49 2926 Tm
+(SACI ) Tj
+21.374 0 0 56.25 64.9 2926 Tm
+(MENAJ ) Tj
+23.7919 0 0 56.25 147.86 2926 Tm
+(EXIRA ) Tj
+24.2523 0 0 56.25 232.71 2926 Tm
+(351. ) Tj
+26.2895 0 0 56.25 296.63 2926 Tm
+(50BUC/SET ) Tj
+27.6479 0 0 56.25 427.65 2926 Tm
+(60 ) Tj
+28.0802 0 0 45 10.8 2876 Tm
+(IZ1022100021038102 ) Tj
+29.7256 0 0 45 260.62 2876 Tm
+(6422768020146 ) Tj
+27.1352 0 0 57.5 4.5 2822 Tm
+(SACI ) Tj
+21.374 0 0 57.5 66.9 2822 Tm
+(MENAJ ) Tj
+26.6117 0 0 57.5 150.68 2822 Tm
+(35L ) Tj
+24.7164 0 0 57.5 213.1 2822 Tm
+(NEGRI ) Tj
+23.4361 0 0 57.5 289.75 2822 Tm
+(C2 ) Tj
+21.4677 0 0 57.5 331.7 2822 Tm
+(50BLUC/ROL ) Tj
+30.27 0 0 47.5 1.89 2776 Tm
+(Z974101075372 ) Tj
+29.2302 0 0 47.5 206.63 2776 Tm
+(6425385000492 ) Tj
+17.0747 0 0 42.5 10.68 2725 Tm
+(SOLUT ) Tj
+23.5085 0 0 42.5 72.83 2725 Tm
+(IE ) Tj
+21.2999 0 0 42.5 109.77 2725 Tm
+(CURATARE ) Tj
+21.9856 0 0 42.5 234.59 2725 Tm
+(SPRAY ) Tj
+22.3616 0 0 42.5 317.89 2725 Tm
+(MOBILA ) Tj
+28.713 0 0 42.5 414.66 2725 Tm
+(300 ) Tj
+26.3394 0 0 43.75 10.96 2675 Tm
+(UZ102010108824 ) Tj
+32.0192 0 0 43.75 206.59 2675 Tm
+(642276802669 ) Tj
+18.2461 0 0 52.5 9.66 2625 Tm
+(SACI ) Tj
+21.0596 0 0 52.5 68.9 2625 Tm
+(MENAJ ) Tj
+21.4029 0 0 52.5 151.87 2625 Tm
+(EXTRA ) Tj
+25.9464 0 0 52.5 234.69 2625 Tm
+(35L ) Tj
+22.2452 0 0 52.5 296.69 2625 Tm
+(5OBUC ) Tj
+27.7155 0 0 52.5 365.99 2625 Tm
+(/SET ) Tj
+27.6479 0 0 52.5 428.65 2625 Tm
+(60 ) Tj
+27.1421 0 0 42.5 9.96 2577 Tm
+(UZ1022100021038102 ) Tj
+28.3557 0 0 42.5 262.64 2577 Tm
+(6422768O20146 ) Tj
+18.2461 0 0 45 12.66 2526 Tm
+(SACI ) Tj
+21.6883 0 0 45 67.9 2526 Tm
+(MENAJ ) Tj
+25.9464 0 0 45 151.69 2526 Tm
+(35L ) Tj
+21.9701 0 0 45 207.09 2526 Tm
+(NEGRI ) Tj
+23.4361 0 0 45 289.75 2526 Tm
+(C2 ) Tj
+23.9292 0 0 45 331.66 2526 Tm
+(50BUC/ROL ) Tj
+27.8066 0 0 46.25 10.8 2477 Tm
+(IZ974101075372 ) Tj
+29.3953 0 0 46.25 206.63 2477 Tm
+(6425385000492 ) Tj
+0 Tc
+55 0 0 55 3.71 2424 Tm
+(+ ) Tj
+-0.035 Tc
+22.1574 0 0 55 25.89 2424 Tm
+(BEC ) Tj
+21.5083 0 0 55 81.88 2424 Tm
+(LED ) Tj
+20.8861 0 0 55 137.88 2424 Tm
+(ECO ) Tj
+24.2986 0 0 55 192.95 2424 Tm
+(A50 ) Tj
+26.1926 0 0 55 248.84 2424 Tm
+(E27 ) Tj
+23.2279 0 0 55 303.75 2424 Tm
+(7N ) Tj
+21.2557 0 0 55 345.88 2424 Tm
+(LUMINA ) Tj
+21.3938 0 0 55 442.9 2424 Tm
+(REC ) Tj
+28.6299 0 0 46.25 11.83 2377 Tm
+(EL13801101103 ) Tj
+29.6074 0 0 46.25 206.58 2377 Tm
+(5949054916415 ) Tj
+23.8603 0 0 46.25 9.88 2327 Tm
+(+BEC ) Tj
+21.5083 0 0 46.25 81.88 2327 Tm
+(LED ) Tj
+26.1926 0 0 46.25 137.84 2327 Tm
+(E27 ) Tj
+22.2026 0 0 46.25 193.22 2327 Tm
+(15W ) Tj
+28.8879 0 0 46.25 248.99 2327 Tm
+(175-250V ) Tj
+21.2557 0 0 46.25 373.88 2327 Tm
+(LUMINA ) Tj
+0 Tc
+46.25 0 0 46.25 470.77 2327 Tm
+(R ) Tj
+-0.035 Tc
+26.3974 0 0 48.75 -0.17 2280 Tm
+(ELO9081109 ) Tj
+29.2809 0 0 48.75 151.47 2280 Tm
+(8680985523118 ) Tj
+24.0125 0 0 42.5 320.89 3775 Tm
+(FIVE-HOLDING ) Tj
+26.8276 0 0 42.5 497.5 3775 Tm
+(S.0. ) Tj
+25.8903 0 0 50 246.85 3725 Tm
+(JUD. ) Tj
+22.8536 0 0 50 307.76 3725 Tm
+(CONSIANTA, ) Tj
+18.6428 0 0 50 457.91 3725 Tm
+(MUN, ) Tj
+21.216 0 0 50 525.78 3725 Tm
+(CONSTANTA ) Tj
+26.4193 0 0 42.5 306.51 3686 Tm
+(SIR. ) Tj
+20.0911 0 0 42.5 378.85 3686 Tm
+(ION ) Tj
+20.0019 0 0 42.5 428.9 3686 Tm
+(RONTA ) Tj
+20.694 0 0 42.5 511.09 3686 Tm
+(NR ) Tj
+0 Tc
+42.5 0 0 42.5 566.49 3686 Tm
+(3 ) Tj
+47.5 0 0 47.5 9.75 2228 Tm
+(+ ) Tj
+-0.035 Tc
+21.617 0 0 47.5 26.9 2228 Tm
+(BEC ) Tj
+22.046 0 0 47.5 81.87 2228 Tm
+(LED ) Tj
+24.2986 0 0 47.5 137.95 2228 Tm
+(A70 ) Tj
+26.1926 0 0 47.5 193.84 2228 Tm
+(E27 ) Tj
+22.2026 0 0 47.5 249.22 2228 Tm
+(18W ) Tj
+21.5181 0 0 47.5 304.88 2228 Tm
+(LUMINA ) Tj
+21.6796 0 0 47.5 401.89 2228 Tm
+(RECE ) Tj
+0 Tc
+47.5 0 0 47.5 470.39 2228 Tm
+(6 ) Tj
+-0.035 Tc
+25.5244 0 0 45 9.85 2180 Tm
+(EL9001612 ) Tj
+29.6074 0 0 45 137.58 2180 Tm
+(5849054922850 ) Tj
+19.501 0 0 45 10.91 1555 Tm
+(BTOTAL ) Tj
+0 Tc
+47.5 0 0 47.5 9.75 2129 Tm
+(+ ) Tj
+-0.035 Tc
+21.617 0 0 47.5 27.9 2129 Tm
+(BEC ) Tj
+22.046 0 0 47.5 82.87 2129 Tm
+(LED ) Tj
+20.8861 0 0 47.5 138.88 2129 Tm
+(ECO ) Tj
+22.0301 0 0 47.5 194.89 2129 Tm
+(R5O ) Tj
+26.1926 0 0 47.5 249.84 2129 Tm
+(E27 ) Tj
+27.648 0 0 47.5 305.7 2129 Tm
+(74 ) Tj
+21.2557 0 0 47.5 346.88 2129 Tm
+(LUMINA ) Tj
+21.3938 0 0 47.5 442.9 2129 Tm
+(REC ) Tj
+16.4921 0 0 46.25 9.9 2080 Tm
+(EL1 ) Tj
+29.532 0 0 46.25 42.65 2080 Tm
+(38011001103 ) Tj
+29.2766 0 0 46.25 208.58 2080 Tm
+(5949054916415 ) Tj
+21.2837 0 0 46.25 10.9 2031 Tm
+(HARTIE ) Tj
+25.351 0 0 46.25 102.82 2031 Tm
+(IGIENICA ) Tj
+23.8639 0 0 46.25 223.89 2031 Tm
+(BRICK ) Tj
+0 Tc
+46.25 0 0 46.25 306.44 2031 Tm
+(3 ) Tj
+-0.035 Tc
+22.582 0 0 46.25 333.58 2031 Tm
+(STRATURI ) Tj
+28.6635 0 0 45 10.96 1984 Tm
+(UZ905335 ) Tj
+29.2302 0 0 45 142.63 1984 Tm
+(6425667001247 ) Tj
+21.5713 0 0 50 8.89 1938 Tm
+(HARTIE ) Tj
+29.6861 0 0 50 103.78 1938 Tm
+(IGIENI ) Tj
+19.5283 0 0 50 187.79 1938 Tm
+(CA ) Tj
+23.8639 0 0 50 222.89 1938 Tm
+(BRICK ) Tj
+0 Tc
+50 0 0 50 305.4 1938 Tm
+(3 ) Tj
+-0.035 Tc
+22.7991 0 0 50 332.58 1938 Tm
+(STRATURI ) Tj
+26.3919 0 0 43.75 -0.05 1898 Tm
+(UZ9005335 ) Tj
+28.8999 0 0 43.75 134.63 1898 Tm
+(6425667001247 ) Tj
+21.2837 0 0 45 0.9 1853 Tm
+(HARTIE ) Tj
+25.5902 0 0 45 94.81 1853 Tm
+(IGIENICA ) Tj
+23.518 0 0 45 216.89 1853 Tm
+(BRICK ) Tj
+0 Tc
+45 0 0 45 299.46 1853 Tm
+(3 ) Tj
+-0.035 Tc
+22.7991 0 0 45 328.58 1853 Tm
+(STRATURI ) Tj
+30.9941 0 0 41.25 10.89 1805 Tm
+(Z900535 ) Tj
+29.8907 0 0 41.25 130.62 1805 Tm
+(6425667001247 ) Tj
+22.181 0 0 45 10.95 1755 Tm
+(ARTIE ) Tj
+25.8294 0 0 45 89.81 1755 Tm
+(IGIENICA ) Tj
+24.2098 0 0 45 212.88 1755 Tm
+(BRICK ) Tj
+0 Tc
+45 0 0 45 296.46 1755 Tm
+(3 ) Tj
+-0.035 Tc
+23.2334 0 0 45 325.57 1755 Tm
+(STRATURI ) Tj
+25.9555 0 0 42.5 10.91 1707 Tm
+(Z9005335 ) Tj
+29.5604 0 0 42.5 125.62 1707 Tm
+(6425667001247 ) Tj
+26.5189 0 0 45 10.87 1656 Tm
+(RTIE ) Tj
+26.0685 0 0 45 85.81 1656 Tm
+(IGIENICA ) Tj
+24.5556 0 0 45 209.88 1656 Tm
+(BRICK ) Tj
+0 Tc
+45 0 0 45 294.46 1656 Tm
+(3 ) Tj
+-0.035 Tc
+23.4505 0 0 45 322.57 1656 Tm
+(STRATURI ) Tj
+29.6537 0 0 45 10.81 1607 Tm
+(2905335 ) Tj
+30.3861 0 0 45 122.61 1607 Tm
+(6425667001247 ) Tj
+23.8736 0 0 100 11.83 1404 Tm
+(IA ) Tj
+20.4648 0 0 100 60.88 1404 Tm
+(LE ) Tj
+20.081 0 0 38.75 -0.13 1256 Tm
+(EST ) Tj
+18.5277 0 0 41.25 9.81 1160 Tm
+(OTAL ) Tj
+21.3464 0 0 41.25 71.81 1160 Tm
+(TUA ) Tj
+0 Tc
+41.25 0 0 41.25 127.91 1160 Tm
+(A ) Tj
+41.25 0 0 41.25 156.5 1160 Tm
+(-) Tj
+-0.035 Tc
+23.5079 0 0 41.25 183.85 1160 Tm
+(21% ) Tj
+23.6523 0 0 38.75 -2.25 1120 Tm
+(OTAL ) Tj
+20.3299 0 0 38.75 74.82 1120 Tm
+(TUA ) Tj
+20.3131 0 0 38.75 129.9 1120 Tm
+(BON ) Tj
+14.0302 0 0 33.75 9.06 1079 Tm
+(NR. ) Tj
+24.2857 0 0 33.75 51.88 1079 Tm
+(POZ. ) Tj
+22.9273 0 0 33.75 120.95 1079 Tm
+(ART. ) Tj
+23.8736 0 0 33.75 193.83 1079 Tm
+(IN ) Tj
+22.5624 0 0 33.75 231.89 1079 Tm
+(BON: ) Tj
+29.6324 0 0 40 5.89 508 Tm
+(Z:0146 ) Tj
+27.8509 0 0 40 101.87 508 Tm
+(BF:0171 ) Tj
+21.8841 0 0 43.75 11.84 454 Tm
+(ID ) Tj
+24.8686 0 0 43.75 48.88 454 Tm
+(BF: ) Tj
+31.0124 0 0 36.25 7.42 362 Tm
+(S/N:D8470001107 ) Tj
+23.8351 0 0 43.75 10.75 307 Tm
+(CASIER ) Tj
+31.3154 0 0 43.75 105.9 307 Tm
+(1: ) Tj
+27.937 0 0 38.75 322.7 759 Tm
+(C3POS-CT2:1360760 ) Tj
+0 Tc
+52.5 0 0 52.5 594.16 3168 Tm
+(1 ) Tj
+-0.035 Tc
+20.3832 0 0 52.5 609.9 3168 Tm
+(BUC ) Tj
+0 Tc
+52.5 0 0 52.5 665.89 3168 Tm
+(X ) Tj
+-0.035 Tc
+27.5601 0 0 52.5 693.83 3168 Tm
+(27. ) Tj
+25.8839 0 0 52.5 734.7 3168 Tm
+(93= ) Tj
+32.5188 0 0 52.5 790.8 3168 Tm
+(27.93 ) Tj
+0 Tc
+52.5 0 0 52.5 873.88 3168 Tm
+(A ) Tj
+52.5 0 0 52.5 578.16 3076 Tm
+(1 ) Tj
+-0.035 Tc
+20.2856 0 0 52.5 595.9 3076 Tm
+(ROLA ) Tj
+0 Tc
+52.5 0 0 52.5 666.89 3076 Tm
+(X ) Tj
+-0.035 Tc
+27.0613 0 0 52.5 695.05 3076 Tm
+(13. ) Tj
+22.26 0 0 52.5 741.76 3076 Tm
+(00 ) Tj
+31.3942 0 0 52.5 792.9 3076 Tm
+(13.00 ) Tj
+0 Tc
+52.5 0 0 52.5 874.88 3076 Tm
+(A ) Tj
+58.75 0 0 58.75 618.94 2970 Tm
+(1 ) Tj
+-0.035 Tc
+20.8928 0 0 58.75 637.9 2970 Tm
+(BUC ) Tj
+0 Tc
+58.75 0 0 58.75 693.88 2970 Tm
+(X ) Tj
+-0.035 Tc
+27.5324 0 0 58.75 721.68 2970 Tm
+(9. ) Tj
+30.6923 0 0 58.75 749.64 2970 Tm
+(96-) Tj
+33.3314 0 0 58.75 805.61 2970 Tm
+(9,95 ) Tj
+0 Tc
+58.75 0 0 58.75 874.87 2970 Tm
+(A ) Tj
+-0.035 Tc
+19.8177 0 0 36.25 381.91 279 Tm
+(BON ) Tj
+23.0709 0 0 36.25 435.89 279 Tm
+(FISCAL ) Tj
+28.9694 0 0 36.25 378.66 231 Tm
+(9000221498 ) Tj
+0 Tc
+55 0 0 55 621.07 2872 Tm
+(1 ) Tj
+-0.035 Tc
+20.8928 0 0 55 636.9 2872 Tm
+(BUC ) Tj
+0 Tc
+55 0 0 55 692.88 2872 Tm
+(X ) Tj
+-0.035 Tc
+27.9084 0 0 55 720.6 2872 Tm
+(5. ) Tj
+29.6546 0 0 55 748.87 2872 Tm
+(49-) Tj
+27.9084 0 0 55 803.6 2872 Tm
+(5, ) Tj
+27.3771 0 0 55 831.88 2872 Tm
+(49 ) Tj
+0 Tc
+55 0 0 55 873.88 2872 Tm
+(A ) Tj
+48.75 0 0 48.75 606.29 2778 Tm
+(1 ) Tj
+-0.035 Tc
+21.0511 0 0 48.75 620.9 2778 Tm
+(ROLA ) Tj
+0 Tc
+48.75 0 0 48.75 689.9 2778 Tm
+(X ) Tj
+-0.035 Tc
+40.3527 0 0 48.75 717.43 2778 Tm
+(5.81 ) Tj
+35.3862 0 0 48.75 805.5 2778 Tm
+(5.81 ) Tj
+0 Tc
+48.75 0 0 48.75 870.89 2778 Tm
+(A ) Tj
+47.5 0 0 47.5 590.34 2679 Tm
+(1 ) Tj
+-0.035 Tc
+20.3832 0 0 47.5 606.9 2679 Tm
+(BUC ) Tj
+0 Tc
+47.5 0 0 47.5 662.9 2679 Tm
+(X ) Tj
+-0.035 Tc
+27.9633 0 0 47.5 691.02 2679 Tm
+(10, ) Tj
+24.3622 0 0 47.5 731.89 2679 Tm
+(49= ) Tj
+32.3752 0 0 47.5 786.87 2679 Tm
+(10.49 ) Tj
+0 Tc
+47.5 0 0 47.5 869.89 2679 Tm
+(A ) Tj
+51.25 0 0 51.25 622.2 2576 Tm
+(1 ) Tj
+-0.035 Tc
+19.8736 0 0 51.25 634.91 2576 Tm
+(BUC ) Tj
+0 Tc
+51.25 0 0 51.25 689.89 2576 Tm
+(X ) Tj
+-0.035 Tc
+35.0821 0 0 51.25 716.5 2576 Tm
+(5.49: ) Tj
+33.5238 0 0 51.25 798.52 2576 Tm
+(5.49 ) Tj
+0 Tc
+51.25 0 0 51.25 868.88 2576 Tm
+(A ) Tj
+48.75 0 0 48.75 608.29 2481 Tm
+(1 ) Tj
+-0.035 Tc
+20.6683 0 0 48.75 620.9 2481 Tm
+(ROLA ) Tj
+0 Tc
+48.75 0 0 48.75 688.9 2481 Tm
+(X ) Tj
+-0.035 Tc
+27.9084 0 0 48.75 716.6 2481 Tm
+(5. ) Tj
+26.065 0 0 48.75 743.53 2481 Tm
+(81= ) Tj
+31.6613 0 0 48.75 797.55 2481 Tm
+(5,81 ) Tj
+0 Tc
+48.75 0 0 48.75 866.89 2481 Tm
+(A ) Tj
+46.25 0 0 46.25 618.38 2380 Tm
+(1 ) Tj
+-0.035 Tc
+20.3832 0 0 46.25 633.9 2380 Tm
+(BUC ) Tj
+0 Tc
+46.25 0 0 46.25 688.9 2380 Tm
+(X ) Tj
+-0.035 Tc
+35.0821 0 0 46.25 715.5 2380 Tm
+(5.54: ) Tj
+34.1446 0 0 46.25 797.51 2380 Tm
+(5.54 ) Tj
+0 Tc
+46.25 0 0 46.25 866.9 2380 Tm
+(A ) Tj
+51.25 0 0 51.25 622.2 2279 Tm
+(1 ) Tj
+-0.035 Tc
+19.8736 0 0 51.25 633.91 2279 Tm
+(BUC ) Tj
+0 Tc
+51.25 0 0 51.25 687.89 2279 Tm
+(X ) Tj
+-0.035 Tc
+18.838 0 0 51.25 721.78 2279 Tm
+(9. ) Tj
+26.7509 0 0 51.25 745.52 2279 Tm
+(80= ) Tj
+33.3314 0 0 51.25 796.61 2279 Tm
+(9.80 ) Tj
+0 Tc
+51.25 0 0 51.25 865.88 2279 Tm
+(A ) Tj
+50 0 0 50 592.25 2175 Tm
+(1 ) Tj
+-0.035 Tc
+20.3832 0 0 50 607.9 2175 Tm
+(BUC ) Tj
+0 Tc
+50 0 0 50 662.9 2175 Tm
+(X ) Tj
+-0.035 Tc
+30.3905 0 0 50 688.94 2175 Tm
+(13.61= ) Tj
+30.9036 0 0 50 783.92 2175 Tm
+(13.61 ) Tj
+0 Tc
+50 0 0 50 867.89 2175 Tm
+(A ) Tj
+51.25 0 0 51.25 616.2 2078 Tm
+(1 ) Tj
+-0.035 Tc
+20.3832 0 0 51.25 632.9 2078 Tm
+(BUC ) Tj
+0 Tc
+51.25 0 0 51.25 687.89 2078 Tm
+(X ) Tj
+-0.035 Tc
+29.9234 0 0 51.25 714.58 2078 Tm
+(5.54+ ) Tj
+32.9029 0 0 51.25 796.53 2078 Tm
+(5,54 ) Tj
+0 Tc
+51.25 0 0 51.25 865.88 2078 Tm
+(A ) Tj
+51.25 0 0 51.25 594.2 1978 Tm
+(1 ) Tj
+-0.035 Tc
+20.3832 0 0 51.25 606.9 1978 Tm
+(BUC ) Tj
+0 Tc
+51.25 0 0 51.25 661.89 1978 Tm
+(X ) Tj
+-0.035 Tc
+30.3905 0 0 51.25 688.94 1978 Tm
+(13.54= ) Tj
+32.8658 0 0 51.25 783.85 1978 Tm
+(13.54 ) Tj
+0 Tc
+51.25 0 0 51.25 866.88 1978 Tm
+(A ) Tj
+45 0 0 45 589.42 1894 Tm
+(1 ) Tj
+-0.035 Tc
+20.3832 0 0 45 606.9 1894 Tm
+(BUC ) Tj
+0 Tc
+45 0 0 45 661.91 1894 Tm
+(X ) Tj
+-0.035 Tc
+30.7801 0 0 45 688.92 1894 Tm
+(13.54= ) Tj
+32.8658 0 0 45 786.85 1894 Tm
+(13.54 ) Tj
+0 Tc
+45 0 0 45 869.9 1894 Tm
+(A ) Tj
+45 0 0 45 589.42 1804 Tm
+(1 ) Tj
+-0.035 Tc
+20.3832 0 0 45 606.9 1804 Tm
+(BUC ) Tj
+0 Tc
+45 0 0 45 662.91 1804 Tm
+(X ) Tj
+-0.035 Tc
+31.1697 0 0 45 689.91 1804 Tm
+(13.54= ) Tj
+33.8468 0 0 45 787.82 1804 Tm
+(13.54 ) Tj
+0 Tc
+45 0 0 45 872.9 1804 Tm
+(A ) Tj
+-0.035 Tc
+22.3236 0 0 48.75 3.89 663 Tm
+(PRETUL ) Tj
+22.7923 0 0 48.75 100.95 663 Tm
+(ARTICOLELOR ) Tj
+20.1525 0 0 48.75 266.9 663 Tm
+(MARCATE ) Tj
+19.5283 0 0 48.75 377.79 663 Tm
+(CU ) Tj
+21.4767 0 0 48.75 450.84 663 Tm
+(INCLUD ) Tj
+23.3562 0 0 48.75 541.79 663 Tm
+(TAKA ) Tj
+19.4762 0 0 48.75 617.95 663 Tm
+(VERDE ) Tj
+19.9516 0 0 48.75 4.79 614 Tm
+(CONFORM ) Tj
+23.3952 0 0 48.75 120.95 614 Tm
+(ART. ) Tj
+26.9368 0 0 48.75 178.68 614 Tm
+(34 ) Tj
+23.6624 0 0 48.75 211.88 614 Tm
+(DIN ) Tj
+18.8065 0 0 48.75 267.81 614 Tm
+(OUG ) Tj
+35.6967 0 0 48.75 322.82 614 Tm
+(R.5/2015 ) Tj
+20.8894 0 0 48.75 465.85 614 Tm
+(IN ) Tj
+20.4065 0 0 48.75 502.95 614 Tm
+(VALOARE ) Tj
+20.3055 0 0 48.75 611.9 614 Tm
+(DE ) Tj
+31.9784 0 0 48.75 653.8 614 Tm
+(2.45 ) Tj
+0 Tc
+52.5 0 0 52.5 588.16 1704 Tm
+(1 ) Tj
+-0.035 Tc
+20.8928 0 0 52.5 605.9 1704 Tm
+(BUC ) Tj
+0 Tc
+52.5 0 0 52.5 662.89 1704 Tm
+(X ) Tj
+-0.035 Tc
+35.0938 0 0 52.5 689.77 1704 Tm
+(13.54-) Tj
+33.8468 0 0 52.5 789.82 1704 Tm
+(13.54 ) Tj
+0 Tc
+52.5 0 0 52.5 875.88 1704 Tm
+(A ) Tj
+57.5 0 0 57.5 589.98 1601 Tm
+(1 ) Tj
+-0.035 Tc
+20.8928 0 0 57.5 605.9 1601 Tm
+(BUC ) Tj
+0 Tc
+57.5 0 0 57.5 662.88 1601 Tm
+(X ) Tj
+-0.035 Tc
+30.6694 0 0 57.5 690.93 1601 Tm
+(13. ) Tj
+31.7383 0 0 57.5 734.55 1601 Tm
+(54-) Tj
+34.3374 0 0 57.5 790.8 1601 Tm
+(13.54 ) Tj
+0 Tc
+57.5 0 0 57.5 877.87 1601 Tm
+(A ) Tj
+-0.035 Tc
+21.4056 0 0 41.25 242.9 422 Tm
+(DATA: ) Tj
+31.7787 0 0 41.25 324.89 422 Tm
+(11-10-2025 ) Tj
+21.6838 0 0 41.25 476.78 422 Tm
+(ORA: ) Tj
+31.5049 0 0 41.25 545.9 422 Tm
+(12:51:01 ) Tj
+33.9512 0 0 45 805.81 1555 Tm
+(186.16 ) Tj
+15.6712 0 0 45 210.98 181 Tm
+(UA ) Tj
+21.5162 0 0 45 245.89 181 Tm
+(RUGAM ) Tj
+20.6877 0 0 45 327.62 181 Tm
+(SA ) Tj
+25.0296 0 0 45 373.88 181 Tm
+(PASTRATI ) Tj
+20.1195 0 0 45 492.9 181 Tm
+(BONUL ) Tj
+35.5044 0 0 45 573.83 181 Tm
+(FISCAL! ) Tj
+20.3315 0 0 43.75 162.95 132 Tm
+(VOCEA ) Tj
+25.3923 0 0 43.75 244.73 132 Tm
+(CLIENTULU|: ) Tj
+28.2245 0 0 43.75 410.7 132 Tm
+(08008 ) Tj
+24.2548 0 0 43.75 492.88 132 Tm
+(BRICK: ) Tj
+28.9489 0 0 43.75 588.69 132 Tm
+(0800827425 ) Tj
+25.808 0 0 47.5 178.77 82 Tm
+(TIPARIT ) Tj
+23.6624 0 0 47.5 286.88 82 Tm
+(DIN ) Tj
+22.6358 0 0 47.5 341.76 82 Tm
+(COGITO ) Tj
+21.7249 0 0 47.5 438.87 82 Tm
+(ERP ) Tj
+22.3374 0 0 47.5 493.92 82 Tm
+(WW. ) Tj
+20.7218 0 0 47.5 547.78 82 Tm
+(COGI ) Tj
+24.7121 0 0 47.5 603.78 82 Tm
+(TO-ERP. ) Tj
+18.5089 0 0 47.5 698.91 82 Tm
+(RO ) Tj
+34.3506 0 0 42.5 807.8 1300 Tm
+(186.16 ) Tj
+34.4956 0 0 41.25 836.63 1251 Tm
+(0.00 ) Tj
+30.3893 0 0 37.5 821.64 1159 Tm
+(32.31 ) Tj
+29.907 0 0 35 820.64 1117 Tm
+(32.31 ) Tj
+29.0126 0 0 52.5 450.66 463 Tm
+(90002214982025101112510101460171 ) Tj
+24.6196 0 0 30 863.14 1080 Tm
+(17 ) Tj
+19.7698 0 0 42.5 725.08 516 Tm
+(NR. ) Tj
+22.618 0 0 42.5 765.95 516 Tm
+(ANEF: ) Tj
+25.0882 0 0 42.5 835.73 516 Tm
+(0001 ) Tj
+26.5139 0 0 55 741.76 363 Tm
+(TD:00029241 ) Tj
+23.8351 0 0 43.75 781.75 319 Tm
+(CASIER ) Tj
+0 Tc
+43.75 0 0 43.75 878.47 319 Tm
+(1 ) Tj
+ET
+ Q
+endstream
+endobj
+5 0 obj
+<>stream
+ JFIF
+
+
++&.%#%.&D5//5DNB>BN_UU_wqw
+
+
++&.%#%.&D5//5DNB>BN_UU_wqw P" 1 (l@8@&n.e&S0R@ @&Ra@38N ` # @`&ȃ"N4441b&ԲDd@"biĀ E"U8ܵ&2#F,I
+`BRTQi $1 0)(q Bh b`$H@ !)*8@LӠj `r&ЁPf͠粨]vN:Èh llJ4CB`&
+I DBj:L$I Tc04@*I@2`& (l@ "Lb A
+i(Hhd6 @dY&j44K HDi&n#IH%@*i,TD` 2Qp !( h@Mi D 0lpbY!<dZ*dg*i{OP_B
+]Xb 4
0HE (8j
S!0 @FB$8@dR4,L %$ # dIC4
1Ȕ *Lch+vjƾU-z$ 0bQŃi
B-0@@ Q`6Dh ` C "ڠ BpІb h000p LW%؍}#c5
R@
+L@ %$
iSp8F 4M@!)DI: a89D &%$` Fi +&c_[12L J#d !I&
` 4k=iWzOжkh Ӷ}k$(v=K.ƥaCwnUפao5[X7١\EU m p,(H%(`@&FI,$@) `&