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:
155
docs/data-entry/REQUIREMENTS.md
Normal file
155
docs/data-entry/REQUIREMENTS.md
Normal 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
|
||||
Reference in New Issue
Block a user