Document de cerințe

PRD ECB

ECB: calculul diferențelor de curs valutar

Versiunea 0.2 (draft), 05.11.2026. Responsabil: Raluca. Scris cu Bruce, din fișa modulului (docs/bruce/03-fisa-modul.md) și din fișa nevoii (docs/bruce/01-nevoie.md), unde stau sursele fiecărei decizii.

Marcaje: ⚠ = întrebare deschisă; (propus) = propunerea lui Bruce, neconfirmată încă de Raluca. Tot restul e decis de Raluca între 03.11 și 05.11.2026.

PRD-ul e scurt cu intenție: regulile și contractele stau aici, iar ecranul contabilului se definește în prototip.


1. Ce rezolvă

Când o firmă-client plătește sau încasează o factură în valută la alt curs decât cel la care a fost înregistrată factura, diferența de curs trebuie înregistrată contabil (6651 sau 7651). SAGA nu face această înregistrare automat, iar azi contabilul o face manual, pentru fiecare plată și încasare.

ECB (engine contabil Bono) e locul de lângă Nucleu care face calculele pe care SAGA nu le face automat. Submodulul de față calculează diferențele de curs valutar, generează notele contabile și le pune în fișierul CSV care se importă în SAGA. Contabilul nu mai calculează nimic.

2. Unde stă în închiderea lunii

ECB rulează lunar, pentru fiecare firmă-client, în această ordine:

  1. importul în SAGA al XML-ului de încasări și plăți ale lunii;
  2. rularea ECB;
  3. importul în SAGA al fișierului CSV cu notele de diferență;
  4. închiderea lunii în SAGA, cu reevaluarea. Notele de diferență trebuie să fie în SAGA înainte de reevaluare. Rularea ECB are doi pași, fiecare pornit de contabil cu un buton (Raluca, 05.11.2026):
  5. Populează lista — ECB aduce din Nucleu doar perechile factură–plată (sau factură–încasare) reconciliate de Lotus, din luna procesată. Perechile sunt 1 la 1: o factură plătită în două tranșe înseamnă două perechi (Raluca, 05.11.2026).
  6. Generează notele — ECB calculează diferențele și generează notele. Facturile și plățile procesate trec în statusul „Procesată” și ies din lista de procesat.

3. Când se aplică și când nu

Se aplică unei perechi factură–plată (sau factură–încasare) când toate condițiile sunt îndeplinite:

4. Datele de intrare

Datele stau în Nucleu. ECB își ia singur ce îi trebuie; Nucleu nu i le trimite. ECB ia doar perechile reconciliate de Lotus, 1 la 1. Despre plată sau încasare se știu toate informațiile: clientul de la care au intrat banii sau furnizorul căruia i s-a plătit, data, cursul, suma în valută și contul în care s-a făcut tranzacția (Raluca, 05.11.2026).

Pentru fiecare pereche factură–plată (sau factură–încasare):

5. Regulile de calcul

5.1. Cursul de bază (termen propus de Bruce: cursul față de care se calculează diferența; în ecran, coloana „Curs factură”)

5.2. Plata sau încasarea dintr-un cont în valută

Diferența în lei = suma în valută plătită × (cursul plății − cursul de bază).

5.3. Plata dintr-un cont în lei

Diferența în lei = suma plătită în lei − suma în valută plătită × cursul de bază.

5.4. Rotunjire și diferență zero (propus)

5.5. Exemple

  1. Plată din cont în valută, factură din aceeași lună. Factură primită de 1.000 EUR la 4,9700; se plătesc 400 EUR la 5,0000 → 400 × 0,0300 = 12,00 lei, nefavorabilă: 6651 = 5124.xx 12,00 lei.
  2. Plată din cont în valută, factură din luna trecută. Factură primită de 500 EUR, cursul de închidere al lunii trecute 5,0200; se plătesc 500 EUR la 5,0000 → 500 × (−0,0200) = −10,00 lei, favorabilă: 5124.xx = 7651 10,00 lei.
  3. Plată parțială din cont în lei. Factură primită de 1.000 EUR la 4,9700; din contul în lei se plătesc 2.010,00 lei, adică 400,00 EUR la 5,0250 → 2.010,00 − 400,00 × 4,9700 = 22,00 lei, nefavorabilă: 6651 = 5121.xx 22,00 lei.
  4. Încasare în cont în valută. Factură emisă de 2.000 EUR la 4,9800; se încasează 2.000 EUR la 4,9700 → 2.000 × (−0,0100) = −20,00 lei, nefavorabilă: 6651 = 5124.xx 20,00 lei.

6. Nota contabilă

Toate notele se fac pe contul băncii din care s-a plătit sau în care s-a încasat (decizia Ralucăi din 04.11.2026: reevaluarea SAGA nu ia în calcul notele de diferență importate pe conturile de terți):

7. Fișierul CSV pentru SAGA

8. Fără note duble

9. Perechi oprite: nu există

Raluca (05.11.2026): nu există niciun scenariu în care o pereche să nu poată primi nota. Lista de cazuri oprite propusă de Bruce în versiunea 0.1 a fost scoasă, împreună cu fila „Oprite” din ecran.

10. Ecranul contabilului (se definește în prototip)

Pe firmă-client și pe lună (Raluca, 05.11.2026):

11. Metrica de succes (propus)

Toate perechile factură–plată în valută ale lunii primesc nota de diferență în fișierul CSV fără alt calcul al contabilului, iar nicio plată nu primește două note.

12. Întrebări deschise

  1. Sursa cursului de închidere al ultimei luni închise, pentru facturile din lunile anterioare (secțiunea 4).
  2. Cine face importul în SAGA, și separatorul zecimal al sumei (secțiunea 7).
  3. Ce se întâmplă când legătura factură–plată se schimbă după generarea notei (secțiunea 8).
  4. Aplicația în care stă ecranul contabilului (secțiunea 10).
  5. Închis (Raluca, 05.11.2026): restul plății unei facturi plătite parțial, venit într-o lună următoare, e o pereche nouă. De asta se ocupă Lotus și IRIS; ECB doar o primește din Nucleu, ca pe oricare altă pereche.

13. Verificarea „spiritul Bono”