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>
This commit is contained in:
2025-12-11 17:30:51 +02:00
parent 5823cedb94
commit 21c12ddb0f
45 changed files with 7524 additions and 0 deletions

View File

@@ -0,0 +1,155 @@
# 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