Files
roa2web-service-auto/docs/data-entry/REQUIREMENTS.md
Marius Mutu 21c12ddb0f feat: Add data-entry-app for fiscal receipts with approval workflow
New application for entering fiscal receipts (bonuri fiscale) with:

Backend (FastAPI + SQLModel + Alembic):
- Receipt, ReceiptAttachment, AccountingEntry models
- CRUD operations with async SQLite database
- Workflow: DRAFT → PENDING_REVIEW → APPROVED/REJECTED
- Auto-generation of accounting entries with VAT calculation
- File upload support (images, PDFs)
- Predefined expense types (Fuel, Materials, Office, etc.)
- Nomenclature service for partners, accounts, cash registers

Frontend (Vue.js 3 + PrimeVue + Pinia):
- ReceiptsListView with filters and stats
- ReceiptCreateView with image upload
- ReceiptDetailView with accounting entries
- ReceiptApprovalView for accountant approval

Documentation:
- REQUIREMENTS.md with functional specifications
- ARCHITECTURE.md with technical decisions
- CLAUDE.md for AI assistant guidance

Phase 1 MVP uses SQLite, prepared for Oracle integration in Phase 2.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 17:30:51 +02:00

4.6 KiB

Requirements: Data Entry - Bonuri Fiscale (Faza 1)

Obiectiv

Sistem de introducere bonuri fiscale cu:

  • Upload poze bonuri de la utilizatori
  • Generare automata note contabile (staging area)
  • Aprobare de contabil inainte de finalizare
  • SQLite + ORM (SQLModel) + Migrari (Alembic)
  • Pregatit pentru integrare Oracle in Faza 2

Cerinte Functionale

1. Gestiune Bonuri Fiscale

1.1 Creare Bon

  • Utilizatorul poate uploada o poza a bonului fiscal
  • Campuri obligatorii: tip document, directie, data, suma, furnizor, casa/banca
  • Campuri optionale: numar bon, serie, descriere
  • Tipuri document: Bon Fiscal, Chitanta
  • Directii: Cheltuiala (plata), Incasare

1.2 Upload Atasamente

  • Suport pentru imagini (JPEG, PNG) si PDF
  • Limita dimensiune: 10MB per fisier
  • Multiple atasamente per bon
  • Previzualizare imagine in UI

1.3 Workflow Aprobare

DRAFT → PENDING_REVIEW → APPROVED/REJECTED → (Faza 2: SYNCED)
  • DRAFT: Utilizator completeaza datele
  • PENDING_REVIEW: Trimis spre aprobare, sistem genereaza note contabile
  • APPROVED: Contabil a aprobat
  • REJECTED: Contabil a respins (cu motiv)
  • SYNCED: (Faza 2) Sincronizat in Oracle

2. Note Contabile

2.1 Generare Automata

  • La trimiterea spre aprobare, sistemul genereaza propuneri note contabile
  • Logica bazata pe tip cheltuiala selectat
  • Include calcul TVA automat (19%)

2.2 Editare de Contabil

  • Contabilul poate modifica conturile propuse
  • Poate adauga/sterge linii
  • Modificarile sunt logate

2.3 Tipuri Cheltuieli Predefinite

Tip Cheltuiala Cont Debit TVA Descriere
Combustibil 6022 4426 (19%) Benzina, motorina
Materiale consumabile 6028 4426 (19%) Diverse materiale
Rechizite birou 6024 4426 (19%) Papetarie, toner
Telefonie 626 4426 (19%) Telefon, internet
Parcare 6022 4426 (19%) Taxe parcare
Alimentatie 6028 - Fara TVA deductibila
Transport 624 4426 (19%) Taxi, transport
Altele 628 4426 (19%) Alte cheltuieli

3. Roluri si Permisiuni

3.1 Utilizator Standard

  • Creare bonuri noi (DRAFT)
  • Editare bonuri proprii in DRAFT
  • Trimitere spre aprobare
  • Vizualizare status bonuri proprii

3.2 Contabil (Rol Aprobare)

  • Toate permisiunile utilizator
  • Vizualizare toate bonurile in asteptare
  • Aprobare/Respingere bonuri
  • Editare note contabile propuse
  • Aprobare in masa

4. Nomenclatoare

Preluate din Oracle (read-only):

  • Parteneri: Furnizori si clienti
  • Conturi: Plan conturi sintetice
  • Case/Banci: Registre casa si conturi bancare
  • Firme: Lista firme disponibile

Cerinte Non-Functionale

Performance

  • Timp raspuns API < 200ms (fara upload)
  • Upload fisiere < 5s pentru 10MB
  • Paginare pentru liste > 50 elemente

Securitate

  • Autentificare JWT (shared cu reports-app)
  • Validare MIME type pentru fisiere
  • Sanitizare nume fisiere
  • Acces bazat pe rol

Scalabilitate

  • Arhitectura pregatita pentru Oracle (Faza 2)
  • Separare clara intre storage local si DB
  • API design RESTful consistent

API Endpoints

Bonuri

POST   /api/receipts/                    # Creare bon
GET    /api/receipts/                    # Lista bonuri
GET    /api/receipts/{id}                # Detalii bon
PUT    /api/receipts/{id}                # Modificare bon (DRAFT)
DELETE /api/receipts/{id}                # Stergere bon (DRAFT)

Workflow

POST   /api/receipts/{id}/submit         # DRAFT → PENDING
POST   /api/receipts/{id}/approve        # PENDING → APPROVED
POST   /api/receipts/{id}/reject         # PENDING → REJECTED
POST   /api/receipts/{id}/resubmit       # REJECTED → PENDING

Note Contabile

GET    /api/receipts/{id}/entries        # Lista note
PUT    /api/receipts/{id}/entries        # Modificare note
POST   /api/receipts/{id}/entries/regenerate  # Re-generare

Atasamente

POST   /api/receipts/{id}/attachments    # Upload
GET    /api/receipts/{id}/attachments    # Lista
GET    /api/attachments/{id}/download    # Download
DELETE /api/attachments/{id}             # Stergere

Nomenclatoare

GET    /api/receipts/partners            # Furnizori/Clienti
GET    /api/receipts/accounts            # Conturi
GET    /api/receipts/cash-registers      # Case/Banci
GET    /api/receipts/expense-types       # Tipuri cheltuieli

Criterii de Succes (Faza 1)

  • Utilizator poate uploada poza bon + date de baza
  • Sistem genereaza automat note contabile
  • Contabil poate vedea, edita si aproba note
  • Bonurile aprobate sunt vizibile in lista
  • Migrarile Alembic functioneaza corect
  • Poze bonuri se salveaza si se afiseaza corect