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>
4.6 KiB
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