feat: add clients nomenclator, order edit/delete/devalidate, invoice types, dashboard redesign

- New clients table with PF/PJ support, fiscal data (CUI, IBAN, eFactura fields)
- Full CRUD API for clients with search, sync integration
- Order lifecycle: edit header (DRAFT), devalidate (VALIDAT→DRAFT), delete order/invoice
- Invoice types: FACTURA (B2B) vs BON_FISCAL (B2C) with different nr formats
- OrderCreateView redesigned as multi-step flow (client→vehicle→details)
- Autocomplete from catalog_norme/catalog_preturi in OrderLineForm
- Dashboard now combines stats + full orders table with filter tabs and search
- ClientPicker and VehiclePicker with inline creation capability
- Frontend schema aligned with backend (missing columns causing sync errors)
- Mobile responsive fixes for OrderDetailView buttons

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-14 00:36:40 +02:00
parent 3e449d0b0b
commit 9db4e746e3
34 changed files with 2221 additions and 211 deletions

View File

@@ -82,3 +82,26 @@ Running on WSL2 with code on Windows NTFS (`/mnt/e/`): Vite is configured with `
- `asyncio_mode = auto` set in `pytest.ini` — no need to mark tests with `@pytest.mark.asyncio`
- `auth_headers` fixture registers a user and returns `Authorization` header for authenticated tests
- Demo credentials (after `make seed`): `demo@roaauto.ro` / `demo123`
## Execution Preferences
- Executia task-urilor se face cu **team agents** (nu cu skill superpowers subagents)
- **Playwright testing obligatoriu**: orice implementare majora trebuie testata E2E cu Playwright
- Desktop: 1280x720, Mobile: 375x812
- Verificari: responsive, elemente nu se suprapun, nu ies din ecran, butoane cu gap suficient
- Raportul Playwright se salveaza in `docs/playwright-report-YYYY-MM-DD.md`
## Data Model: Clients
- Tabel `clients` - nomenclator clienti cu date eFactura ANAF, separat de vehicule
- Un client poate avea mai multe vehicule (1:N prin client_id pe vehicles)
- `tip_persoana`: PF (persoana fizica) / PJ (persoana juridica)
- Campuri eFactura: cod_fiscal, reg_com, adresa, judet, oras, cod_postal, cont_iban, banca
## Data Model: Invoices
- `tip_document`: FACTURA (B2B, eFactura ANAF) sau BON_FISCAL (B2C, casa de marcat)
- Factura: necesita date client complete (CUI, adresa)
- Bon fiscal: format simplificat
## Order Lifecycle
- `DRAFT``VALIDAT``FACTURAT` (cu devalidare VALIDAT → DRAFT)
- Stergere: orice nefacturat; FACTURAT = sterge factura intai
- Edit header doar in DRAFT