# PRD Lista Firme

## 1. Ce construim

Un serviciu care actualizează datele unei firme, necesare pentru contabilitate, periodic sau la cerere.

Doi consumatori: IRIS (16 din 23 de atribute), Vertigo (8).

## 2. Cele trei decizii de model

**Cheia e CUI-ul, rolul e o suprapunere.** Aceeași firmă e și client, și partener.

**Istoric datat, nu stare curentă.** Contabilitatea întreabă „era plătitor de TVA la 14 martie", nu „e azi". Serviciul ANAF acceptă parametru `data` exact pentru asta, iar IRIS îngheață oricum totul în `ContextSnapshot`. Vertigo confirmă tiparul — are deja „valoare actuală / valoare nouă / data intrării în vigoare" pentru TVA la încasare. Aia nu e o excepție, e regula pentru toate atributele.

**Golul se declară, nu se completează cu default.** IRIS are câmp dedicat, `goluri[]`, și regula „câmp lipsă ≠ blocare".

## 3. Pas 0 — situația inițială

Clienții Bono sunt firme nou înființate, deci pornim de la zero. Sursa la zi 0 e **dosarul de înființare**, nu ANAF: o firmă proaspăt înmatriculată nu apare imediat în registre, iar dacă e neplătitoare de TVA nu apare deloc în registrul plătitorilor. ANAF preia ștafeta abia ca sursă de întreținere.

Atributele: Status ANAF și status ONRC pornesc pe „activ" prin definiție.

## 4. Atribute — clientul Bono

Este posibil ca ONRC să nu aibă un API pentru actualizarea datelor. Deci pentru atributele cu sursa ONRC e posibil să avem nevoie de o altă sursă de date (ex: termene.ro, listafirme.ro).

Teoretic clienții Bono vor face modificările ce țin de firmă (capital social, CAEN-uri, sediu social) prin intermediul Bono. Totuși o sursă externă a datelor ar fi utilă pentru că unii clienți pot face astfel de modificări la ONRC și în afara Bono.

În cazul în care unele informații nu pot fi actualizate automat, probabil vom folosi serviciul contra cost al ONRC prin care putem cere datele unei firme. Probabil o vom face anual.

Atributele cu sursa SPV — vector fiscal se verifică trimestrial sau anual. În MVP, vectorul fiscal va fi verificat periodic de contabil.

### Identitate

| # | Atribut | Cod atribut | Util pentru: | Ritm | Sursă |
|---|---|---|---|---|---|
| 1 | CUI | `BONOclient_CUI` | — | — | — |
| 2 | Denumire | `BONOclient_denumire` | IRIS | zilnic | serviciul web ANAF |
| 3 | Tip entitate | `BONOclient_Tip_Entitate` | IRIS | zilnic | derivat din denumire (SRL / PFA) |
| 4 | Capital social | `BONOclient_Capital_social` | Vertigo | lunar | ONRC |
| 5 | Nr. Reg. Comerțului | `BONOclient_J` | Vertigo | zilnic | serviciul web ANAF |
| 6 | Asociat *n* — nume | `BONOclient_Asociat_n` | IRIS / Vertigo | anual | ONRC |
| 7 | Administrator — nume | `BONOclient_Administrator` | IRIS / Vertigo | anual | ONRC |

### Restul

| # | Atribut | Cod atribut | Util pentru: | Ritm | Sursă |
|---|---|---|---|---|---|
| 8 | Status ONRC | `BONOclient_Status_ONRC` | Vertigo | lunar | ONRC |
| 9 | Status ANAF | `BONOclient_Status_ANAF` | Vertigo | zilnic | serviciul web ANAF |
| 10 | Status TVA | `BONOclient_Status_TVA` | IRIS | zilnic | serviciul web ANAF |
| 11 | Regim impozitare | `BONOclient_impozit` | IRIS | trimestrial / anual | SPV — vector fiscal |
| 12 | Plătitor TVA | `BONOclient_TVA` | IRIS | zilnic | serviciul web ANAF |
| 13 | TVA la încasare | `BONOclient_TVAincasare` | IRIS | zilnic | serviciul web ANAF |
| 14 | Perioadă raportare TVA | `BONOclient_TVA_perioada` | IRIS | trimestrial / anual | SPV — vector fiscal |
| 15 | Cod VIES | `BONOclient_VIES` | IRIS | per tranzacție intracom. | VIES |
| 16 | Adresa sediu social | `BONOclient_Sediu_Adresa` | Vertigo | lunar | ONRC |
| 17 | Data expirare sediu | `BONOclient_Sediu_Expira` | Vertigo | lunar + alertă | ONRC |
| 18 | Activitate la sediu | `BONOclient_Activitate_Sediu` | IRIS | la modificare | derivat din Adresa sediu social |
| 19 | CAEN principal | `BONOclient_CAEN_prim` | IRIS | lunar | serviciul web ANAF |
| 20 | CAEN secundare | `BONOclient_CAEN_sec[]` | IRIS | lunar | ONRC |
| 21 | Regim auto | `BONOclient_Regim_Auto` | IRIS | la modificare, push imediat | Vertigo |
| 22 | Mijloace fixe | `BONOclient_Mijloace_Fixe[]` | IRIS | continuu | Vertigo |
| 23 | Număr salariați | `BONOclient_Nr_Salariati` | IRIS | lunar | SalarEasy |
| 24\* | Versiune profil | `versiune_profil` | IRIS | la fiecare push | Lista Firme |
| 25\* | Goluri | `goluri[]` | IRIS | la fiecare push | Lista Firme |

Plus **Data înființare** (`BONOclient_DataInfiintare`), care se ia la Pas 0 și nu se mai actualizează niciodată.

## 5. Recapitulare pe surse — clientul Bono

**ANAF — 7 atribute:** Denumire, Nr. Reg. Comerțului, Status ANAF, Status TVA, Plătitor TVA, TVA la încasare, CAEN principal.

**ONRC — 7 atribute:** Capital social, Asociat *n*, Administrator, Status ONRC, Adresa sediu social, Data expirare sediu, CAEN secundare.

**SPV — vector fiscal — 2 atribute:** Regim impozitare, Perioadă raportare TVA.

**VIES — 1 atribut:** Cod VIES.

**SalarEasy — 1 atribut:** Număr salariați.

**Vertigo — 2 atribute:** Regim auto, Mijloace fixe.

**Derivate — 2 atribute:** Tip entitate, Activitate la sediu.

**Fără sursă — 1 atribut:** CUI (cheia de căutare).

**Metadate — 2:** Versiune profil, Goluri.

## 6. Atribute — partenerii Bono

Diferența de fond față de client: partenerul nu se reîmprospătează periodic, se **verifică la data documentului**. Contabilitatea nu întreabă „e furnizorul activ fiscal azi", ci „era activ la data facturii" — iar serviciul ANAF acceptă parametru `data` exact pentru asta. IRIS îngheață rezultatul în `ContextSnapshot` și ține și momentul verificării, în `verificat_la`.

### Identitate

| # | Atribut | Cod atribut | Util pentru: | Ritm | Sursă |
|---|---|---|---|---|---|
| 1 | CUI partener | `Partener_CUI` | — | — | din document |
| 2 | Nume partener | `Partener_Nume` | IRIS | la prima apariție + lunar | serviciul web ANAF |
| 3 | Tip partener | `Partener_tip` | IRIS | la prima apariție | derivat din formatul identificatorului (PJ / PF) |
| 4 | Tip entitate | `Partener_Entitate` | IRIS | la prima apariție + lunar | serviciul web ANAF |
| 5 | Adresa partener | `Partener_Adr` | IRIS | — | din document |
| 6 | Țară partener | `Partener_tara` | IRIS | la prima apariție | din document / serviciul web ANAF (pentru RO) |
| 7 | Grupă țară | `Partener_Tara` | IRIS | la prima apariție | derivat din țară (RO / UE / non-UE) |

### Restul

| # | Atribut | Cod atribut | Util pentru: | Ritm | Sursă |
|---|---|---|---|---|---|
| 8 | Status ANAF | `Partener_Activ_Fiscal` | IRIS | la conspectare, la data documentului | serviciul web ANAF |
| 9 | Status TVA | `Partener_Cod_ActivTVA` | IRIS | la conspectare, la data documentului | serviciul web ANAF |
| 10 | Regim TVA | `Partener_TVA_Regim` | IRIS | la conspectare, la data documentului | serviciul web ANAF |
| 11 | Cod VIES | `Partener_Cod_ViesTVA` | IRIS | la conspectare, doar parteneri UE | VIES |
| 12 | IBAN partener | `Partener_IBAN` *(nou)* | IRIS | la conspectare | extras de cont |
| 13\* | Data verificării | `verificat_la` | IRIS | la fiecare verificare | Lista Firme |

### Recapitulare pe surse — parteneri

**ANAF — 5 atribute:** Nume partener, Tip entitate, Status ANAF, Status TVA, Regim TVA.

**VIES — 1 atribut:** Cod VIES.

**Din document — 4 atribute:** CUI partener, Adresa partener, Țară partener, IBAN partener.

**Derivate — 2 atribute:** Tip partener, Grupă țară.

**Metadate — 1:** Data verificării.

### Observații

**Oraș partener** (`Partener_oras`) l-am absorbit în adresă, la fel cum am făcut la client.

**Rol partener** (`Partener_Rol` — furnizor / beneficiar) nu intră aici. E proprietate a documentului, nu a firmei — aceeași firmă e furnizor pe o factură și beneficiar pe alta. Aceeași decizie ca la `BONOclient_Rol`.

## 7. Furnizori alternativi pentru cele 7 atribute ONRC

| Atribut | Firmoscop | Termene | Targetare | Listafirme |
|---|---|---|---|---|
| Capital social | ? | ? | NU | ? |
| Asociat — nume | DA | DA | ? | DA |
| Administrator — nume | DA | DA | DA | DA |
| Status ONRC | DA | DA | DA | DA |
| Adresa sediu social | ? | DA | DA | DA |
| Data expirare sediu | NU | **DA** | NU | ? |
| CAEN secundare | ? | ? | NU | ? |

**DA** = listat explicit. **?** = categoria există, câmpul nu e documentat public. **NU** = nu apare.

### Cost

- **Firmoscop** — singurul cu preț transparent. Web gratuit nelimitat. API/MCP: 49 RON/lună (50 verificări) sau credite de la 0,90 RON/verificare, care nu expiră.
- **Termene** — credite, ~2,40 RON/raport. Preț de plan și tarif API nepublicate, doar prin consultant.
- **Targetare** — căutare gratuită. Preț API nepublicat, doar ofertă personalizată.
- **Listafirme** — 20 credite gratis la înscriere. Abonamente 500 / 1.000 / 3.000 RON pe an. Tarif API separat, nepublicat.

### Concluzie

Termene e singurul care acoperă expirarea sediului și singurul cu documentație pe câmpuri — are două endpoint-uri dedicate, „Asociați și Administratori Simplu" (nume, prenume, funcție) și „Complet". Niciunul din cei patru nu returnează CNP.

Firmoscop e cel mai ieftin și se poate testa gratuit azi, dar e construit pe verdict de risc, nu pe câmpuri de registru.

Trei câmpuri rămân neconfirmate la toți: capital social, CAEN secundare și expirarea sediului la trei din patru. Se lămuresc doar cerând un răspuns API pe un CUI de test, cu întrebarea pusă pe câmpuri, nu pe categorii.


## 8. Changelog

| Data | Versiune | Modificare |
|---|---|---|
| 4 septembrie 2026 | V0.1 | Prima versiune. Atribute pentru clientul Bono (23 + 2 metadate) și pentru parteneri (12 + 1 metadată), cu sursă și frecvență per atribut. Recapitulare pe surse. Analiza celor patru furnizori alternativi pentru datele ONRC, cu acoperire și cost. |
