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:
60
docs/PLAN.md
60
docs/PLAN.md
@@ -245,13 +245,18 @@ catalog_tipuri_deviz (id, tenant_id, denumire)
|
||||
catalog_tipuri_motoare (id, tenant_id, denumire)
|
||||
mecanici (id, tenant_id, user_id, nume, prenume, activ)
|
||||
|
||||
-- Clients (nomenclator clienti cu date eFactura ANAF)
|
||||
clients (id, tenant_id, tip_persoana, denumire, cod_fiscal, reg_com,
|
||||
adresa, judet, oras, cod_postal, tara, telefon, email,
|
||||
cont_iban, banca, observatii, activ, created_at, updated_at)
|
||||
|
||||
-- Core Business
|
||||
vehicles (id, tenant_id, client_nume, client_telefon, client_email,
|
||||
vehicles (id, tenant_id, client_id, client_nume, client_telefon, client_email,
|
||||
client_cod_fiscal, client_adresa, nr_inmatriculare,
|
||||
marca_id, model_id, an_fabricatie, serie_sasiu,
|
||||
tip_motor_id, created_at, updated_at)
|
||||
|
||||
orders (id, tenant_id, nr_comanda, data_comanda, vehicle_id,
|
||||
orders (id, tenant_id, nr_comanda, data_comanda, vehicle_id, client_id,
|
||||
tip_deviz_id, status, km_intrare, observatii,
|
||||
-- client snapshot (denormalized)
|
||||
client_nume, client_telefon, nr_auto, marca_denumire, model_denumire,
|
||||
@@ -266,8 +271,8 @@ order_lines (id, order_id, tenant_id, tip, descriere,
|
||||
um, cantitate, pret_unitar, -- material
|
||||
total, mecanic_id, ordine, created_at, updated_at)
|
||||
|
||||
invoices (id, tenant_id, order_id, nr_factura, serie_factura,
|
||||
data_factura, modalitate_plata,
|
||||
invoices (id, tenant_id, order_id, client_id, nr_factura, serie_factura,
|
||||
data_factura, tip_document, modalitate_plata,
|
||||
client_nume, client_cod_fiscal, nr_auto,
|
||||
total_fara_tva, tva, total_general, created_at, updated_at)
|
||||
|
||||
@@ -379,6 +384,46 @@ _sync_state (table_name, last_sync_at)
|
||||
4. Responsive testing (phone, tablet, desktop)
|
||||
5. Reports: sumar lunar, export CSV
|
||||
|
||||
### Faza 8: Nomenclator Clienti (Clients)
|
||||
**Livrabil: CRUD clienti cu date eFactura ANAF, legatura 1:N cu vehicule**
|
||||
|
||||
1. Model `clients` + migrare Alembic (backend)
|
||||
2. `client_id` FK pe `vehicles`, `orders`, `invoices`
|
||||
3. CRUD endpoints: `GET/POST /api/clients`, `GET/PUT/DELETE /api/clients/{id}`
|
||||
4. wa-sqlite schema update (tabel `clients`, FK-uri)
|
||||
5. Frontend: pagina Clienti (list, create, edit, delete)
|
||||
6. Frontend: selector client in VehiclePicker si OrderCreate
|
||||
7. Sync: adauga `clients` in `SYNCABLE_TABLES`
|
||||
8. Playwright E2E tests (desktop + mobile)
|
||||
|
||||
### Faza 9: Edit/Delete/Devalidare Comenzi
|
||||
**Livrabil: Gestionare completa comenzi - edit, stergere, devalidare**
|
||||
|
||||
1. `PUT /api/orders/{id}` - edit header comanda (doar in DRAFT)
|
||||
2. `DELETE /api/orders/{id}` - stergere comanda (orice nefacturat)
|
||||
3. `POST /api/orders/{id}/devalidate` - VALIDAT → DRAFT
|
||||
4. `DELETE /api/invoices/{id}` - stergere factura (permite stergere comanda FACTURAT)
|
||||
5. Frontend: butoane edit/delete/devalidare pe OrderDetail
|
||||
6. Confirmare stergere cu modal
|
||||
7. Playwright E2E tests
|
||||
|
||||
### Faza 10: Integrare Nomenclator Clienti
|
||||
**Livrabil: Clienti integrati in flux comenzi si facturi**
|
||||
|
||||
1. Auto-populare date client pe comanda din nomenclator
|
||||
2. Selectie client existent sau creare client nou la vehicul
|
||||
3. Validare date client complete la facturare (CUI, adresa)
|
||||
4. PDF factura cu date client din nomenclator
|
||||
|
||||
### Faza 11: Bon Fiscal (tip_document)
|
||||
**Livrabil: Suport dual FACTURA + BON_FISCAL pe invoices**
|
||||
|
||||
1. `tip_document` pe invoices: FACTURA (B2B, eFactura) sau BON_FISCAL (B2C, casa de marcat)
|
||||
2. Factura: necesita date client complete (CUI, adresa)
|
||||
3. Bon fiscal: format simplificat, fara date client obligatorii
|
||||
4. UI: selectie tip document la facturare
|
||||
5. PDF template diferentiat pentru bon fiscal
|
||||
|
||||
---
|
||||
|
||||
## Referinta din Prototip (doar consultare)
|
||||
@@ -405,6 +450,9 @@ SaaS-ul trebuie sa fie compatibil cu ROAAUTO VFP9+Oracle. Clientii care cresc po
|
||||
| `order_lines` (tip=manopera) | `dev_oper` | SaaS unifica oper+materiale in order_lines |
|
||||
| `order_lines` (tip=material) | `dev_estimari_produse` | Acelasi tabel, filtrat pe `tip` |
|
||||
| `vehicles` | `dev_masiniclienti` | Renamed, aceleasi coloane client+vehicul |
|
||||
| `clients` | `nom_parteneri` + `adrese_parteneri` | Adrese simplificate flat |
|
||||
| `clients.tip_persoana` | `nom_parteneri.tip_persoana` | PF/PJ |
|
||||
| `clients.cod_fiscal` | `nom_parteneri.cod_fiscal` | CUI sau CNP |
|
||||
| `catalog_marci` | `dev_nom_marci` | +tenant_id |
|
||||
| `catalog_modele` | `dev_nom_masini` | Identic |
|
||||
| `catalog_ansamble` | `dev_nom_ansamble` | +tenant_id |
|
||||
@@ -414,6 +462,10 @@ SaaS-ul trebuie sa fie compatibil cu ROAAUTO VFP9+Oracle. Clientii care cresc po
|
||||
| `catalog_tipuri_motoare` | `dev_tipuri_motoare` | +tenant_id |
|
||||
| `mecanici` | `dev_mecanici` | +tenant_id, +user_id |
|
||||
| `invoices` | `facturi` (local) | Identic structural |
|
||||
| `invoices.tip_document` | `vanzari.tip_factura` | FACTURA/BON_FISCAL |
|
||||
| `invoices.client_id` | `vanzari.id_part` | FK la client |
|
||||
| `orders.client_id` | (denormalizat) | Referinta directa la client |
|
||||
| `vehicles.client_id` | (implicit in dev_masiniclienti) | 1:N client → vehicule |
|
||||
| `tenants` | - | Doar SaaS (nu exista in Oracle) |
|
||||
| `users` | - | Doar SaaS |
|
||||
| `appointments` | - | Doar SaaS (feature nou) |
|
||||
|
||||
Reference in New Issue
Block a user