Calculul diferenței de curs, pas cu pas
1. Când rulează
Lunar, pentru fiecare firmă-client, după importul în SAGA al XML-ului de încasări și plăți și înainte de închiderea lunii. Contabilul pornește doi pași: „Populează lista” (ECB aduce perechile din Nucleu) și „Generează notele” (ECB face calculul de mai jos).
2. Intrarea: o pereche factură–plată
ECB ia din Nucleu doar perechile reconciliate de Lotus, 1 la 1. O factură plătită în două tranșe înseamnă două perechi. Pentru fiecare pereche:
| Câmp | Ce e |
|---|---|
factura.suma, factura.data | suma în valută și data facturii |
factura.curs | cursul la care a fost înregistrată factura |
factura.tip | primită (de la furnizor) sau emisă (către client) |
plata.sumaVal | suma plătită sau încasată, în valuta facturii |
plata.sumaLei | doar la plata din Cont RON: suma plătită în lei |
plata.data, plata.curs | data și cursul plății sau al încasării |
plata.cont | contul bancar: 5121.01 RON, 5124.01 EUR, 5124.02 USD, 5124.03 GBP |
plata.tip | plată sau încasare |
valuta, partener, factura.numar | valuta, furnizorul sau clientul, numărul facturii |
3. Pasul 1 — cursul facturii (cursul de bază)
- Factura și plata sunt în aceeași lună →
baza = factura.curs; în ecran scrie „factură”. - Factura e dintr-o lună anterioară →
baza= cursul de închidere al ultimei luni închise (luna dinaintea plății, închisă în sistemele noastre, cu reevaluarea făcută); în ecran scrie „reevaluare”.
4. Pasul 2 — diferența în lei
- Plată sau încasare dintr-un cont în valută:
dif = plata.sumaVal × (plata.curs − baza). - Plată din Cont RON:
dif = plata.sumaLei − plata.sumaVal × baza. - Diferența se rotunjește la 2 zecimale. Dacă e 0,00, nu se face notă.
5. Pasul 3 — favorabilă sau nefavorabilă
| Tranzacția | dif > 0 | dif < 0 |
|---|---|---|
| Plată (factură primită) | nefavorabilă | favorabilă |
| Încasare (factură emisă) | favorabilă | nefavorabilă |
6. Pasul 4 — nota contabilă
- Nefavorabilă:
6651 = plata.cont. - Favorabilă:
plata.cont = 7651. - Suma notei:
|dif|. Data notei:plata.data. - Explicația:
dif. curs fact. <factura.numar> <partener>. - Numărul notei (NDP):
DIFF1,DIFF2…, unic în ziua notei, continuat de la o generare la alta.
7. Pasul 5 — fișierul CSV pentru SAGA
Un singur fișier pe firmă-client și pe lună, cu toate notele lunii, refăcut la fiecare generare. UTF-8 cu BOM, coloane despărțite prin virgulă, rânduri CRLF, data în formatul zz.ll.aaaa:
DATA,NDP,CONT_D,CONT_C,SUMA,EXPLICATIE
14.10.2026,DIFF1,6651,5124.01,12.00,dif. curs fact. FP-101 Adobe Systems Ireland
⚠ Separatorul zecimal al sumei se confirmă la primul import în SAGA.
8. Pasul 6 — fără note duble
După generare, factura și plata trec din „de procesat” în „procesată”. O plată procesată nu mai primește notă, nici la o nouă populare sau generare.
9. Pe scurt, ca pseudocod
pentru fiecare pereche (factura, plata) cu status "de procesat":
daca luna(factura.data) == luna(plata.data):
baza = factura.curs # „factură”
altfel:
baza = curs_inchidere(ultima_luna_inchisa, valuta) # „reevaluare”
daca plata.cont == "5121.01":
dif = plata.sumaLei - plata.sumaVal * baza
altfel:
dif = plata.sumaVal * (plata.curs - baza)
dif = rotunjeste(dif, 2)
daca dif != 0:
nefav = (dif > 0) daca plata.tip == "plata" altfel (dif < 0)
debit, credit = ("6651", plata.cont) daca nefav altfel (plata.cont, "7651")
nota = (plata.data, NDP_urmator(plata.data), debit, credit, abs(dif),
"dif. curs fact. " + factura.numar + " " + partener)
adauga nota in fisierul CSV al lunii
marcheaza factura si plata "procesata"
10. Exemple
- 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.01.
- Plată din cont în valută, factură din luna trecută. Cursul de închidere al lunii trecute 5,0200; se plătesc 500 EUR la 5,0000 → 500 × (−0,0200) = −10,00 lei, favorabilă: 5124.01 = 7651.
- Plată parțială din Cont RON. Factură primită de 1.000 EUR la 4,9700; 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.01.
- Î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.01.