Files
solduri2roa/docs/raport_sursa_saga_xlsx.md
Marius Mutu 15bb26ac15 Etapa 2: plan v3, rapoarte de cercetare si etalonul de regresie
Cercetare: ambele formate SAGA (VFP xls/xlsx si Firebird .FDB), cu dovezi
fisier:linie in docs/raport_sursa_saga_xlsx.md si raport_exporturi_saga_noua.md.

Plan v3 dupa review de strategie si arhitectura: contract intern + trei
cititoare, mapare in doua fisiere cu proprietari diferiti, lane-uri.

Etalon de regresie anonimizat in tests/golden/ (sume si structura neatinse,
zero IBAN si zero cod fiscal real). Tabela de corespondenta ramane ignorata.

Iesirile de productie ies din git (raman pe disc); .gitignore acopera si
copiile de baze de client si iesirile intermediare ale convertorului.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYeAtVxeS8m4oXekjX8Am2
2026-09-21 15:44:57 +03:00

20 KiB

Raport sursa-saga: balanta.xls SAGA, tabela conturi_roa si exporturile folosite

Cercetare read-only. Nu s-a modificat niciun fisier din saga2roa, saga2roa_danube, saga2roa_rompetrol. Fisierele temporare sunt in C:\Users\mmari\AppData\Local\Temp\opencode\sursa_saga.

0. Cum am citit .xls-ul (ce a mers)

Ordinea ceruta, cu rezultatul exact:

  1. pandas + xlrd: pandas NU e instalat (ModuleNotFoundError: No module named 'pandas'), xlrd la fel. Am instalat doar xlrd (py -m pip install xlrd -> 2.0.2). Cu xlrd.open_workbook fisierul se citeste corect.
  2. openpyxl pe .xls esueaza (confirmat): openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old .xls file format.
  3. LibreOffice exista (C:\Program Files\LibreOffice\program\soffice.exe) si conversia a mers: soffice --headless --convert-to xlsx --outdir <temp> balanta.xls -> exit 0. Fidelitate verificata: xlsx-ul convertit are tot 342 randuri x 35 coloane, sheet balanta, acelasi antet.
  4. Excel COM din PowerShell: nu a fost nevoie (xlrd si LibreOffice au acoperit).

Concluzie: se poate citi fie direct cu xlrd, fie prin conversie LibreOffice.

1. Structura balantei SAGA exportate in Excel (saga2roa_danube\balanta.xls)

  • O singura foaie: balanta. 342 randuri x 35 coloane.
  • Randul 1 (index 0) = antetul, direct pe prima linie; nu exista randuri de titlu deasupra. Datele incep la randul 2 (index 1). Ultimul rand de date = randul 342 (index 341).
  • NU exista rand de totaluri. Toate cele 341 de randuri de date au cont si denumire completate; ultimul rand este contul 7651. Randul "Totaluri:" exista doar in raportul PDF "Balanta de verificare", nu in acest xls.

1.1 Coloanele, in ordine (litera + nume)

Lit. Nume Lit. Nume Lit. Nume
A cont M rulajt_d Y rulaj_d_1
B denumire N rulajt_c Z rulaj_c_1
C categorie O total_deb AA rulajt_d_1
D tip P total_cred AB rulajt_c_1
E deb_init Q fin_d AC total_deb_1
F cred_init R fin_c AD total_cred_1
G deb_prec S deb_init_1 AE fin_d_1
H cred_prec T cred_init_1 AF fin_c_1
I sold_in_d U deb_prec_1 AG analitic
J sold_in_c V cred_prec_1 AH validat
K rulaj_d W sold_in_d_1 AI linie
L rulaj_c X sold_in_c_1

Aceasta lista coincide exact cu structura conturi.dbf documentata in cod la saga2roa_danube\saga2roa_danube.prg:25 (comentariul cu capul tabelei SAGA). Deci balanta.xls este exportul in Excel al tabelei SAGA conturi (plan de conturi cu solduri), NU raportul "Balanta de verificare". Confirmare suplimentara: saga2roa_danube.prg:30 citeste direct conturi.dbf din directorul SAGA (K:\MARIUS\SAGA C.3.0\0001\).

1.2 Primele 10 randuri de date (Excel rand 2..11)

cont denumire tip deb_init cred_init deb_prec cred_prec rulaj_d rulaj_c total_deb total_cred fin_d fin_c
1012 CAPITAL SUBSCRIS VARSAT P 0 2000.00 0 2000.00 0 0 0 2000.00 0 2000.00
105 REZERVE DIN REEVALUARE P 0 3009833.83 0 3009833.83 0 0 0 3009833.83 0 3009833.83
105.10 REZERVE DIN REEVALUARE CELULA INSILOZARE P 0 167629.29 0 167629.29 0 0 0 167629.29 0 167629.29
105.102 REZERVA DIN REEVAL.TRANSPORTOR TORNADO ORIZONTAL P 0 4669.56 0 4669.56 0 0 0 4669.56 0 4669.56
105.103 REZERVA DIN REEVAL.TRANSPOROTR TORNADO ORIZONTAL P 0 2263.31 0 2263.31 0 0 0 2263.31 0 2263.31
105.104 REZERVA DIN REEVAL.TRANSPORTOR TORNADO ORIZONTAL P 0 4669.56 0 4669.56 0 0 0 4669.56 0 4669.56
105.105 REZERVA DIN REEVAL TRANSPORTOR ELEVATOR TEE100 P 0 3788.75 0 3788.75 0 0 0 3788.75 0 3788.75
105.106 REZERVA DIN REEVAL TRNASPORTOR ELEVATOR TEE100 P 0 3940.44 0 3940.44 0 0 0 3940.44 0 3940.44
105.11 REZERVA DIN REEV.CELULA INSILOZARE P 0 167628.38 0 167628.38 0 0 0 167628.38 0 167628.38
105.17 REZERVA DIN REEVAL.RETEA ELECTRICA P 0 12143.52 0 12143.52 0 0 0 12143.52 0 12143.52

1.3 Ultimele 5 randuri (Excel rand 338..342)

cont denumire tip deb_init cred_init deb_prec cred_prec rulaj_d rulaj_c total_deb total_cred fin_d fin_c
6811 CHELT. DE EXPLOATARE CU AMORTIZAREA IMOBILIZARILOR A 0 0 119978.76 119978.76 39992.94 39992.94 159971.70 159971.70 0 0
698 CHELT. CU IMPOZITUL PE VENIT SI CU ALTE IMPOZITE A 0 0 1722.00 1722.00 0 0 1722.00 1722.00 0 0
704 VEN. DIN SERVICII PRESTATE P 0 0 172156.50 172156.50 25185.81 25185.81 197342.31 197342.31 0 0
7584 VEN. DIN SUBVENTII PT. INVESTITII P 0 0 6956.34 6956.34 2318.78 2318.78 9275.12 9275.12 0 0
7651 VEN. DIN DIFERENTE FAVORABILE DE CURS VALUTAR P 0 0 14081.25 14081.25 7523.61 7523.61 21604.86 21604.86 0 0

Nu exista rand de totaluri dupa acestea; randul 342 este ultimul.

1.4 Sintetic vs analitic

  • Nu exista indentare si nu exista o coloana separata care sa spuna sintetic/analitic. Coloana analitic (AG) este 1 pe toate cele 341 de randuri, deci nu distinge nimic.
  • Singurul criteriu real este punctul in codul de cont:
    • 78 randuri fara punct (0 puncte) = conturi sintetice (ex. 1012, 105, 1171, 401);
    • 263 randuri cu exact 1 punct = conturi analitice (ex. 105.10, 105.102, 1171.100, 208.500, 2813.114, 401.00032);
    • nu exista coduri cu 2 sau mai multe puncte in acest fisier.
  • Partea de analitic are lungime variabila 1..5 caractere si poate fi si alfanumerica: in fisier apar si 105.RAI, 4428.TP (litere), pe langa 00001..00134 (5 cifre).
  • Atentie: un cont sintetic fara punct poate fi si frunza (ex. 1012 nu are analitice), deci "are punct" = analitic, dar "nu are punct" NU inseamna automat parinte.
  • Codul de analitic arata exact ca in exemplu (401.00027), adica sintetic.<cod analitic SAGA>.

1.5 Coloanele de sume: ce sunt totaluri si ce sunt solduri

Relatii verificate pe toate cele 341 de randuri (toleranta 0.005):

Verificare Rezultat
total_deb = deb_prec + rulaj_d si total_cred = cred_prec + rulaj_c 341/341 OK
fin_d - fin_c = total_deb - total_cred 341/341 OK
sold_in_d - sold_in_c = deb_prec - cred_prec 341/341 OK

Interpretare (sprijinita si de cod, saga2roa\balanta.sql:11: deb_init+deb_prec as debit, cred_init+cred_prec as credit):

  • deb_prec / cred_prec = sume precedente (rulaj cumulat pana la inceputul perioadei) — corespund coloanelor "Sume precedente" din raportul PDF;
  • rulaj_d / rulaj_c = rulaj perioada;
  • total_deb / total_cred = sume totale = precedente + rulaj (NU sold);
  • fin_d / fin_c = sold final;
  • deb_init / cred_init = solduri de preluare (initial), separat de precedent;
  • sold_in_d / sold_in_c = sold la inceput, pe netul precedentelor;
  • rulajt_d / rulajt_c = rulaj total cumulat; in acest fisier nu este egal cu total_deb/cred decat pe 95/341 randuri (deci nu e o simpla copie a lui total_deb).

Setul _1 (coloanele S..AF): pe 265/341 randuri este complet zero, iar pe 78/341 randuri este identic cu setul principal. Cele 78 sunt exact randurile sintetice (fara punct), cele 265 sunt analiticele + 2 randuri sintetice complet zero. Nu am putut stabili din fisierele disponibile ce reprezinta setul _1 (pare o a doua balanta / a doua perioada); nu il folosesc ca fapt dovedit.

1.6 Comparatie cu CSV-ul produs de extract_balanta.py din PDF

CSV-ul din PDF (balanta_FUNDATIA.csv) are coloanele: pagina, cont, denumire, prec_d, prec_c, rulaj_d, rulaj_c, total_d, total_c, sold_d, sold_c, este_total.

Corespondenta de semantica (raportul PDF "Balanta de verificare" = 8 coloane numerice, vezi si saga2roa\Balanta de verificare 16052018 1317.xls rand 7-9: Sume precedente / Rulaje perioada / Sume totale / Solduri finale):

CSV (PDF) xls
prec_d / prec_c deb_prec / cred_prec
rulaj_d / rulaj_c rulaj_d / rulaj_c
total_d / total_c total_deb / total_cred
sold_d / sold_c fin_d / fin_c

Coloane in CSV care lipsesc din xls: pagina (numarul paginii PDF), este_total (markerul randului de totaluri). Coloane in xls care nu exista in CSV: categorie, tip, deb_init, cred_init, sold_in_d, sold_in_c, rulajt_d, rulajt_c, cele 16 coloane _1, analitic, validat, linie.

Se poate produce EXACT acelasi CSV din xls? Nu exact, dar foarte aproape:

  • Coloanele de cont si de sume se pot mapa 1:1 si valorile sunt coerente (aceleasi relatii total = prec + rulaj, sold = total pe net);
  • pagina nu se poate reface din xls (e proprie PDF-ului, depinde de paginare si de ruperile de denumire);
  • este_total: xls-ul nu are rand de totaluri; s-ar putea doar calcula/adapta, nu citi;
  • denumirea poate diferi: in PDF denumirea e recompusa din fragmente pe pagini (extract_balanta.py:124-126 lipeste randurile de continuare), in xls e o singura celula;
  • setul de conturi poate diferi daca PDF-ul si xls-ul sunt din perioade/firme diferite (in cazul de fata xls este DANUBE, CSV-urile existente sunt FUNDATIA/MASTERJOB). Deci: da pentru conturi + cele 8 sume, nu pentru pagina si este_total.

2. Tabela de corespondenta conturi SAGA -> conturi ROA

2.1 Cele doua fisiere, structura DBF

saga2roa\CONTURI_ROA.DBF (varianta DANUBE, 56 inregistrari, 4 campuri):

Camp Tip Lungime
CONT C 20
ACONT C 20
CONT2 C 4
ACONT2 C 4

Primele 15 randuri (CONT | ACONT | CONT2 | ACONT2):

2131  | TOATE   | 2131 | (gol)
2133  | TOATE   | 2133 | (gol)
214   | TOATE   | 214  | (gol)
2813  | TOATE   | 2813 | (gol)
2814  | TOATE   | 2814 | (gol)
3024  | ATM     | 3024 | 1
3024  | ATUO    | 3024 | 2
3024  | (gol)   | 3024 | 3
303   | TOATE   | 303  | (gol)
371   | TOATE   | 371  | 5
371   | MARFA   | 371  | 6
371   | MCKM4-5 | 371  | 7
378   | MCKM4-5 | 378  | 7
378   | MFEN    | 378  | 1
378   | (gol)   | 378  | 1

Observatii: ACONT2 poate fi gol, o cifra, sau alfanumeric (X, PG, PO, TXV, ANAF, C4-5). CONT2 poate diferi de CONT (ex. 409 -> 4091, 431 -> 4311, 4314 -> 4313, 4374 -> 4371, 4381 -> 4371). Exista un export identic ca structura in saga2roa\conturi.csv (antet cont;acont;cont2;acont2, 56 randuri) si saga2roa\conturi.xls (foaie Sheet1, 57 randuri cu antet) — dar acestea doua NU sunt identice bit-cu-bit cu CONTURI_ROA.DBF: in csv/xls codul analitic e lipit in cont (707.ATM) si acont e gol, iar unele valori difera (MCKM4-5 vs MCK4-5). Sunt variante, nu acelasi fisier.

saga2roa_rompetrol\conturi_roa.dbf (varianta ROMPETROL, 135 inregistrari, 6 campuri):

Camp Tip Lungime
CONT2 C 4
ACONT2 C 4
DENUMIRE C 100
CONT_ALT C 20
COD C 20
CONT C 20

Primele 15 randuri (CONT2 | ACONT2 | DENUMIRE | CONT_ALT | COD | CONT):

121  | 3001 | PROFIT SI PIERDERE                              | (gol) | B1203010_NG_011 | 121
167  | 5501 | GARANTIE DE BUNA EXECUTIE _NG                   | (gol) | B1203080_NG_081 | 167.01
201  | 1101 | CHELTUIELI DE CONSTITUIRE_SOLD INITIAL          | (gol) | B1301010_NG_011 | 201
303  | 2201 | MAT. DE NATURA OB. DE INVENTAR                  | (gol) | B1301010_NG_022 | 303.TOATE
401  | 6301 | FURNIZORI NG                                    | (gol) | B1301010_NG_032 | 401.RESTUL
401  | 6302 | FURNIZORI G                                     | (gol) | B1307010_NG_011 | 401.00032
401  | 6302 | FURNIZORI G                                     | (gol) | B1307010_KMGR_022 | 401.00005
401  | 6302 | FURNIZORI G                                     | (gol) | B1307010_RSC_022 | 401.00018
401  | 6302 | FURNIZORI G                                     | (gol) | B1307080_NG_081 | 401.00002
401  | 6302 | FURNIZORI G                                     | (gol) | B1307080_NG_085 | 401.00001
404  | 6301 | FURNIZORI DE IMOBILIZARI NG                     | (gol) | B1311010_NG_011 | 404.RESTUL
404  | 6302 | FURNIZORI DE IMOBILIZARI G                      | (gol) | B1311010_NG_022 | 404.0002
404  | 6302 | FURNIZORI DE IMOBILIZARI G                      | (gol) | B1311010_RIV_022 | 404.00005
404  | 6302 | FURNIZORI DE IMOBILIZARI G                      | (gol) | B1311010_NG_032 | 404.00012
408  | 6305 | FURNIZORI - FACTURI NESOSITE IMOBILIZARI NG     | (gol) | B1311090_NG_011 | PLANCONT

Aici CONT este codul SAGA complet (inclusiv analitic: 401.00032, 611.1) sau un marcaj special (303.TOATE, 401.RESTUL, PLANCONT); CONT2/ACONT2 sunt contul sintetic/analitic ROA; CONT_ALT = cont alternativ ROA; COD = codul suplimentar ROMPETROL (structura B.../I..._NG_...).

2.2 Unde se foloseste tabela in cele doua .prg

Toate locurile (grep conturi_roa in *.prg):

saga2roa_danube\saga2roa_danube.prg

  • :30-34 defineste caile; :40-44 daca conturi_roa.dbf lipseste o creeaza goala (CREATE TABLE (cont C(20), acont C(20), cont2 C(4), acont2 C(4)));
  • :79 Select Cast(Alltrim(Cont) + '.' + Alltrim(acont) As C(20)) As Cont, cont2, acont2 From conturi_roa -> cheia de cautare este cont + '.' + acont;
  • :173-203 ("Corectare conturi analitice") este locul de fond:
    lcContSintetic = Left(m.lcCont, m.lnPos - 1)
    lcContAnalitic = Substr(m.lcCont, m.lnPos + 1)
    lcContToate   = m.lcContSintetic + '.TOATE'
    ...
    Locate For Alltrim(Cont) = m.lcCont
    If !Found()
        Locate For Alltrim(Cont) = m.lcContToate
    ...
    Replace cont2 With m.lcCont2, acont2 With m.lcAcont2
    

saga2roa_rompetrol\saga2roa_rompetrol3.prg

  • :59-73 caile + crearea goala (6 campuri);
  • :120-124 citeste tabela si comenteaza rolul coloanelor (cont = cont saga, cont2/acont2 = conturi ROA, cont_alt = cont alternativ ROA, cod = cod suplimentar ROMPETROL);
  • :126-169 construieste planul ROA (cPlanROA): face Full Join intre conturi_roa si planul SAGA pe cont, plus un Join special pentru randurile cu cont = 'PLANCONT' (:134-138), si sterge din plan conturile acoperite de un X.TOATE (:152-157);
  • :244-306 foloseste tabela la corectarea registrului jurnal, atat pe debit cat si pe credit (:262-273 si :292-303), cu X.TOATE si X.RESTUL (:265, :295);
  • :572-575 foloseste cPlanROA (deci indirect tabela) pentru planul de conturi analitic.

In saga2roa\balanta.prg (versiune mai veche, firma COFFEE) tabela se foloseste identic ca in danube (:34, :40-44, :79, :188); in saga2roa\balanta.BAK:28 apare chiar o cale fixa E:\vali\COFFEE\conturi_roa.dbf.

2.3 Ce decide exact tabela

Tabela doar re-codeaza contul: pentru un cod SAGA dat (cont, optional cu analitic) stabileste cont2 (sinteticul ROA, max 4 car.) si acont2 (analiticul ROA, max 4 car.). Deci:

  • redenumirea sinteticului (ex. SAGA 409 -> ROA 4091, 431 -> 4311);
  • analiticul (acont2), care poate fi gol (cont fara analitic in ROA), o cifra, sau alfanumeric;
  • suporta marcaje speciale in coloana cont: X.TOATE (toate analiticele sinteticului X), X.RESTUL (restul, doar in rompetrol), PLANCONT (fallback de plan pe cont2);
  • in rompetrol mai decide denumirea ROA (denumire), contul alternativ (cont_alt) si codul suplimentar (cod).

Ce NU decide tabela:

  • nu decide tip (D/P): tipul vine din planul SAGA (cPlan, danube :81) si e transportat prin join-uri (:154, rompetrol :572); tabela nu are coloana de tip.
  • nu decide conturile cu parteneri: listele sunt hardcodate in .prg (lcListaConturiBalP / lcListaConturiIregP, danube :308-309, rompetrol :114-115). Partenerii vin din clienti.dbf/furnizori.dbf, nu din tabela.
  • nu decide sume, doar maparea de coduri.

2.4 Completata manual sau generata automat?

Dovada: niciunul dintre .prg nu scrie in tabela. Singurele operatii pe conturi_roa sunt Use, Select, Locate si CREATE TABLE (doar daca fisierul lipseste) — vezi danube :36-44, :79, :188-199 si rompetrol :65-73, :120, :132-138, :262-303. Nu exista INSERT/REPLACE/APPEND catre conturi_roa in niciun .prg.

Concluzie: tabela este completata manual (un nomenclator de corespondenta intretinut de om), posibil pornita dintr-un export (in rompetrol coloana COD are coduri structurate de tip B1203010_NG_011, care par generate din planul ROMPETROL) si apoi corectata/curatata manual (valori de mana: acont2 = X, PG, PO, TXV, ANAF; randuri PLANCONT, TOATE, RESTUL).

3. Alte exporturi SAGA folosite in .prg (in afara de balanta)

Ambele .prg citesc din directorul SAGA urmatoarele tabele (danube :30-34, rompetrol :59-63):

Fisier SAGA Rol Campuri folosite (din cod) Exemplu in directoare
conturi.dbf plan de conturi + solduri Cont, tip, denumire, deb_init, deb_prec, cred_init, cred_prec (danube :81, :103; balanta.sql:11) saga2roa\conturi.dbf (864 inreg.)
registru.dbf registru jurnal / note contabile danube: cont_d, cont_c, explicatie, cod, suma, Data (:94-99); rompetrol: + id_nota, id_cont_d, id_cont_c, Curs, suma_val, cod_valuta, ndp, fel_d (:232) saga2roa\REGISTRU.DBF (2619 inreg.)
clienti.dbf nomenclator clienti (parteneri) cod, denumire, cod_fiscal, reg_com, analitic, judet, adresa, tara, is_tva (+ banca, cont_banca, tel, email in rompetrol) saga2roa\clienti.dbf (11 inreg.)
furnizori.dbf nomenclator furnizori (parteneri) aceleasi campuri saga2roa\furnizori.dbf (76 inreg.)

Structurile reale ale fisierelor-exemplu (format SAGA mai vechi):

  • conturi.dbf (15 campuri): CONT C(20), DENUMIRE C(60), TIP C(1), DEB_INIT N(15,2), CRED_INIT N(15,2), DEB_PREC N(15,2), CRED_PREC N(15,2), CONT_INCH C(20), DEB_INIT_V N(14,2), CRED_INIT_ N(14,2), DEB_PREC_V N(14,2), CRED_PREC_ N(14,2), COD_VALUTA C(3), BLOCAT N(1). Atentie: aceasta difera de structura documentata in cod (saga2roa_danube.prg:25, 35 campuri), care este formatul SAGA C.3.0 folosit de danube — si care coincide cu balanta.xls.
  • REGISTRU.DBF (23 campuri): ID_NOTA N(10), VALIDAT C(1), CONT_D C(20), CONT_C C(20), SUMA N(15,2), COD_VALUTA C(3), CURS N(15,4), SUMA_VAL N(14,2), TVA N(15,2), EXPLICATIE C(70), DATA D(8), ID_CONT_D C(20), ID_CONT_C C(20), CATEGORIE C(16), NDP C(16), FEL_D C(20), TIP C(1), COD C(8), PLAN C(1), SECTOR C(1), SURSA C(1), CAPITOL C(1), ARTICOL C(1).
  • clienti.dbf / furnizori.dbf: incep cu COD C(8), DENUMIRE C(64), COD_FISCAL C(20), REG_COM C(16), ANALITIC C(20) (clienti are 31 campuri, furnizori 27).

Nu exista exporturi separate de tip "solduri furnizori" sau "solduri clienti" sau "facturi" folosite de aceste .prg. Soldurile per partener se calculeaza in .prg din registru.dbf + nomenclatoarele clienti/furnizori (danube :85-92, :311-343), nu se citesc dintr-un fisier dedicat. In directoare exista si fisiere saga2roa\facturi_jurnal_tva_COFFEE*.xlsx (coloane an, luna, cont, tip, numar, data, nume, cod_fiscal, sold, soldtvaneex, baza24, tva24, ...), dar niciun .prg nu le refera (grep pe facturi_jurnal, balanta.xls, Balanta de verificare in toate .prg-urile: zero rezultate). Sunt exporturi folosite de alt flux, nu de saga2roa*.

4. Raport de lucru

  1. Facut: cercetare read-only; citit balanta.xls (xlrd + conversie LibreOffice), structurile DBF saga2roa\CONTURI_ROA.DBF si saga2roa_rompetrol\conturi_roa.dbf, toate locurile conturi_roa din cele trei .prg, plus structurile conturi/registru/clienti/furnizori.dbf. Scris acest fisier.
  2. Verificari: openpyxl pe .xls -> InvalidFileException (confirmat); xlrd 2.0.2 OK; soffice --headless --convert-to xlsx -> exit 0, fidelitate 342x35. Relatii de sume pe 341/341 randuri (tabel 1.5). Niciun fisier din saga2roa* modificat (doar citire); grep conturi_roa = 19 potriviri, toate citite; grep exporturi nefolosite = 0.
  3. Nefacut / deschis: semnificatia setului _1 din balanta.xls (265 randuri zero, 78 identice cu setul principal) nu e dovedibila din fisierele disponibile; perioada la care se refera balanta.xls (nu exista in fisier un camp de an/luna); este_total nu are echivalent in xls (nu exista rand de totaluri).
  4. Stare periculoasa: niciuna. Fisierele de proiect nu au fost atinse; temporarele sunt in Temp\opencode\sursa_saga; nu s-a facut write-back, nu au ramas procese, nu s-au consumat date.