solduri2roa: balante SAGA PDF -> xlsx initializare ROACONT
Extragere pe coordonate (pdfplumber), generarea celor doua xlsx pentru FUNDATIA si MASTER 12/2025, regulile de mapare si rapoartele de verificare. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BdA5a3ECKFD6Citf1ptPZu
This commit is contained in:
91
docs/config_cont_ireg.md
Normal file
91
docs/config_cont_ireg.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# CONFIG_CONT_IREG (MARIUSM_AUTO@ROA_CENTRAL)
|
||||
|
||||
Sursa: Oracle LOCAL (server dezvoltare ROA_CENTRAL), NU productie.
|
||||
|
||||
## Sursa si conectare
|
||||
|
||||
- DSN (tnsnames.ora, `D:\ROA\instantclient_19_18\tnsnames.ora:206`): `ROA_CENTRAL` = HOST 10.0.20.121, PORT 1521, SERVICE_NAME ROA
|
||||
- Schema citita: `MARIUSM_AUTO`
|
||||
- Comanda exacta folosita:
|
||||
|
||||
```
|
||||
set TNS_ADMIN=D:\ROA\instantclient_19_18
|
||||
set NLS_LANG=ROMANIAN_ROMANIA.AL32UTF8
|
||||
sqlplus.exe -S "MARIUSM_AUTO/ROMFASTSOFT@ROA_CENTRAL"
|
||||
```
|
||||
|
||||
Parola: din `D:\ROA\ROACONT\docs\oracle_parola_standard.secret` (valoare implicita si in `COMUN\utile\Teste\test_init_env_auto.prg:22`).
|
||||
|
||||
## Structura tabelei (DESC)
|
||||
|
||||
| Coloana | Tip | NULL? |
|
||||
|---|---|---|
|
||||
| ID_CONT_IREG | NUMBER | N |
|
||||
| CONT | VARCHAR2(4) | Y |
|
||||
| EXPLICATIE | VARCHAR2(50) | Y |
|
||||
| FEL_CONT | NUMBER | Y |
|
||||
| CU_INREGISTRARI | NUMBER | Y |
|
||||
| CU_VENCHELT | NUMBER | N |
|
||||
| CU_PROC_TVA | NUMBER | N |
|
||||
| LUNAI | NUMBER | Y |
|
||||
| ANI | NUMBER | Y |
|
||||
|
||||
Observatie: coloana ceruta ca "denumire" este de fapt `EXPLICATIE`. Tabela are si coloanele `FEL_CONT`, `CU_VENCHELT`, `CU_PROC_TVA`, `LUNAI`, `ANI`. `LUNAI`/`ANI` sunt completate doar pe randul 4511.
|
||||
|
||||
## Randuri (47)
|
||||
|
||||
| ID_CONT_IREG | CONT | EXPLICATIE | FEL_CONT | CU_INREGISTRARI | CU_VENCHELT | CU_PROC_TVA | LUNAI | ANI |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| 63 | 1011 | 1011 | 1 | 0 | 0 | 0 | | |
|
||||
| 59 | 1621 | CREDITE PE TERMEN LUNG | 1 | 1 | 0 | 0 | | |
|
||||
| 54 | 167 | 167 | 1 | 1 | 0 | 0 | | |
|
||||
| 61 | 232 | AVANSURI FZ IMOB CORPORALE | 0 | 1 | 0 | 0 | | |
|
||||
| 62 | 234 | AVANSURI FZ IMOB NECORPORALE | 0 | 1 | 0 | 0 | | |
|
||||
| 47 | 261 | TITLURI DE PARTICIPARELA FILIALE DIN GRUP | 0 | 1 | 0 | 0 | | |
|
||||
| 48 | 2678 | CREANTE IMOBILIZATE | 0 | 1 | 0 | 0 | | |
|
||||
| 53 | 2691 | VARS.REF.TIT.PART.DET.LA FIL.GRUP | 1 | 1 | 0 | 0 | | |
|
||||
| 60 | 371 | MARFA | 0 | 0 | 0 | 0 | | |
|
||||
| 1 | 401 | FURNIZORI | 1 | 1 | 0 | 0 | | |
|
||||
| 73 | 403 | EF. COM. 403 | 1 | 1 | 0 | 0 | | |
|
||||
| 2 | 404 | FURNIZORI IMOBILIZARI | 1 | 1 | 0 | 0 | | |
|
||||
| 3 | 408 | FACTURI NESOSITE | 1 | 1 | 0 | 1 | | |
|
||||
| 4 | 409 | AVANSURI FURNIZORI | 0 | 1 | 0 | 0 | | |
|
||||
| 56 | 4091 | AVANSURI FURNIZORI | 0 | 1 | 0 | 0 | | |
|
||||
| 57 | 4092 | AVANSURI FURNIZORI | 0 | 1 | 0 | 0 | | |
|
||||
| 79 | 4093 | AVANSURI FURNIZORI | 0 | 1 | 0 | 0 | | |
|
||||
| 80 | 4094 | AVANSURI FURNIZORI | 0 | 1 | 0 | 0 | | |
|
||||
| 5 | 4111 | CLIENTI | 0 | 1 | 0 | 0 | | |
|
||||
| 6 | 4118 | CLIENTI INCERTI | 0 | 1 | 0 | 0 | | |
|
||||
| 72 | 413 | EF. COM. 413 | 0 | 1 | 0 | 0 | | |
|
||||
| 7 | 418 | FACTURI NEINTOCMITE | 0 | 1 | 0 | 1 | | |
|
||||
| 8 | 419 | CLIENTI CREDITORI | 1 | 1 | 0 | 1 | | |
|
||||
| 49 | 426 | DREPTURI DE PERSONAL NERIDICATE | 1 | 1 | 0 | 0 | | |
|
||||
| 10 | 4281 | ALTE DATORII IN LEG.CU PERS. | 1 | 0 | 0 | 0 | | |
|
||||
| 11 | 4282 | ALTE CREANTE IN LEGATURA CU PERSONALUL | 0 | 0 | 0 | 0 | | |
|
||||
| 65 | 4511 | DECONTARI IN CADRUL GRUPULUI | 2 | 1 | 0 | 0 | 1 | 2013 |
|
||||
| 76 | 4551 | ACTIONARI | 0 | 1 | 0 | 0 | | |
|
||||
| 68 | 456 | DECONTARI CU ACTIONARII | 0 | 1 | 0 | 0 | | |
|
||||
| 52 | 457 | DIVIDENDE 457 | 1 | 1 | 0 | 0 | | |
|
||||
| 14 | 461 | DEBITORI DIVERSI | 0 | 1 | 0 | 0 | | |
|
||||
| 15 | 462 | CREDITORI DIVERSI | 1 | 1 | 0 | 0 | | |
|
||||
| 51 | 471 | CHELTUIELI IN AVANS | 0 | 1 | 0 | 0 | | |
|
||||
| 67 | 472 | VENITURI IN AVANS | 1 | 1 | 0 | 0 | | |
|
||||
| 75 | 4754 | SUBVENTII INVESTITII | 1 | 1 | 0 | 0 | | |
|
||||
| 64 | 491 | PROVIZ.DEPREC.CREANTE-CLIENTI | 0 | 0 | 0 | 0 | | |
|
||||
| 74 | 5081 | DEPOZITE BANCARE | 0 | 0 | 0 | 0 | | |
|
||||
| 18 | 5121 | BANCA LEI | 0 | 0 | 0 | 0 | | |
|
||||
| 50 | 5122 | CONT CURENT GARANTII BRD | 0 | 0 | 0 | 0 | | |
|
||||
| 19 | 5124 | BANCA VALUTA | 0 | 0 | 0 | 0 | | |
|
||||
| 69 | 5125 | SUME IN CURS DE DECONTARE - POS | 0 | 0 | 0 | 0 | | |
|
||||
| 70 | 5126 | BANCA LEI TVA DEFALCAT | 0 | 0 | 0 | 0 | | |
|
||||
| 71 | 5127 | BANCA VALUTA TVA DEFALCAT | 0 | 0 | 0 | 0 | | |
|
||||
| 20 | 5311 | CASA LEI | 0 | 0 | 0 | 0 | | |
|
||||
| 21 | 5314 | CASA VALUTA | 0 | 0 | 0 | 0 | | |
|
||||
| 22 | 542 | ACHIZITORI | 0 | 1 | 0 | 0 | | |
|
||||
| 58 | 8051 | DOBANDA EXTRABILANTIER | 0 | 1 | 0 | 0 | | |
|
||||
|
||||
Total randuri: 47.
|
||||
|
||||
## Conturi cu CU_INREGISTRARI = 1
|
||||
|
||||
1621, 167, 232, 234, 261, 2678, 2691, 401, 403, 404, 408, 409, 4091, 4092, 4093, 4094, 4111, 4118, 413, 418, 419, 426, 4511, 4551, 456, 457, 461, 462, 471, 472, 4754, 542, 8051
|
||||
166
docs/conturi_cu_analitice.md
Normal file
166
docs/conturi_cu_analitice.md
Normal file
@@ -0,0 +1,166 @@
|
||||
# Conturi cu analitice in balanta SAGA - analitic in ROA sau partener?
|
||||
|
||||
Propunerea mea e in coloana **Propus**. Marius: corecteaza direct in tabel (scrie ANALITIC sau PARTENER)
|
||||
sau spune-mi ce schimbi. Sursa: `balanta_FUNDATIA.csv`, `balanta_MASTERJOB.csv`.
|
||||
|
||||
- **ANALITIC** = ramane cont analitic in planul de conturi ROA (acont 4 caractere) si in balanta.
|
||||
- **PARTENER** = nu se creeaza analitic in ROA; se genereaza rand `FACTURA` per analitic, cu partener
|
||||
nou (cod fiscal = codul SAGA, ex `401.00027`), iar soldul intra pe contul sintetic cu id_partd/id_partc.
|
||||
|
||||
## FUNDATIA
|
||||
|
||||
| Cont | Denumire | Nr. analitice | Sold total | Propus |
|
||||
|---|---|---|---|---|
|
||||
| 1171 | REZULTATUL REPORTAT - PROFITUL NEREP./ PIREDE | 1 | 773,608.10 | **ANALITIC** |
|
||||
| 1171.01 | REZ. REPORTAT PT. EXCEDENT NEREP. SAU DEFICIT | 12 | 773,608.10 | **ANALITIC** |
|
||||
| 1211 | EXCEDENT SAU DEFICIT PRIVIND AFSP | 1 | 150,933.49 | **ANALITIC** |
|
||||
| 2111 | TERENURI | 1 | 100,000.00 | **ANALITIC** |
|
||||
| 212 | CONSTRUCTII | 5 | 1,408,257.53 | **ANALITIC** |
|
||||
| 2814 | AMORT. ALTOR IMOBILIZARI CORP. | 1 | -20,633.36 | **ANALITIC** |
|
||||
| 401 | FURNIZORI | 10 | -314,703.58 | **PARTENER** |
|
||||
| 4092 | FUR.-DEBIT PT.PRESTARI SERVICII | 3 | 809.33 | **PARTENER** |
|
||||
| 4111 | CLIENTI | 1 | 15,126.48 | **PARTENER** |
|
||||
| 446 | ALTE IMPOZITE SI TAXE | 1 | 485.00 | **ANALITIC** |
|
||||
| 4551 | ASOCIATI-CONTURI CURENTE | 2 | -1,571,531.33 | **PARTENER** |
|
||||
| 461 | DEBITORI DIVERSI | 6 | 477,938.37 | **PARTENER** |
|
||||
| 462 | CREDITORI DIVERSI | 3 | -3,400,771.00 | **PARTENER** |
|
||||
| 5121 | CONTURI LA BANCA IN LEI | 1 | 81,966.80 | **PARTENER** |
|
||||
| 5124 | CONTURI LA BANCA IN DEVIZE | 1 | 2,492,540.28 | **PARTENER** |
|
||||
| 5125 | SUME IN CURS DE DECONTARE | 2 | 160,509.43 | **PARTENER** |
|
||||
|
||||
### Detaliu analitice propuse PARTENER
|
||||
|
||||
**401 FURNIZORI**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 401.00004 | GTC AUTO TRADE | 0.00 | 0.30 |
|
||||
| 401.00018 | HOSTVISION SRL | 0.00 | 614.10 |
|
||||
| 401.00043 | BRIT MOTOR AG SRL | 0.00 | 6,640.62 |
|
||||
| 401.00045 | TRACOM IMPEX S.R.L. | 0.00 | 1,392.75 |
|
||||
| 401.00049 | APA CANAL ILFOV | 0.00 | 1,126.82 |
|
||||
| 401.00050 | SC CEGIM SRL | 0.00 | 5,599.99 |
|
||||
| 401.00051 | S.C. CRAMA SPARLENI SRL | 0.00 | 420.00 |
|
||||
| 401.00053 | POPESCU LUMINITA-MACOVICIUC VERONICA | 0.00 | 298,530.00 |
|
||||
| 401.00054 | DEDEMAN SRL | 0.00 | 190.00 |
|
||||
| 401.00055 | AGROMECANIC IMPEX SRL | 0.00 | 189.00 |
|
||||
|
||||
**4092 FUR.-DEBIT PT.PRESTARI SERVICII**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 4092.1 | HOSTVISION | 547.65 | 0.00 |
|
||||
| 4092.2 | ROMARG | 217.70 | 0.00 |
|
||||
| 4092.3 | HORVARTH ALINA GABRIELA PROMISIUNE VZ-C | 43.98 | 0.00 |
|
||||
|
||||
**4111 CLIENTI**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 4111.00004 | EM INTERNATIONAL SERVICES GROUP S.R.L. | 15,126.48 | 0.00 |
|
||||
|
||||
**4551 ASOCIATI-CONTURI CURENTE**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 4551.01 | IONESCU VALENTIN GHEORGHE | 0.00 | 1,383,131.33 |
|
||||
| 4551.02 | EURO ANTR RO12 PIRB 4250 7735 C 0200 1000 | 0.00 | 188,400.00 |
|
||||
|
||||
**461 DEBITORI DIVERSI**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 461.01 | SISTEME INTERNATIONALE DE AFACERI | 15,031.49 | 0.00 |
|
||||
| 461.02 | IMPRUMUT ASOC. NO-ADD | 10,800.00 | 0.00 |
|
||||
| 461.03 | TEMPLUM | 29,445.23 | 0.00 |
|
||||
| 461.04 | DEBITOR EURO ANTREPRENOR | 417,000.01 | 0.00 |
|
||||
| 461.06 | ADRIAN CRISTESCU | 5,000.00 | 0.00 |
|
||||
| 461.07 | FUNDATIA DOMENIU OTETELESANU | 661.64 | 0.00 |
|
||||
|
||||
**462 CREDITORI DIVERSI**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 462.01 | TEMPLUM PLUS | 0.00 | 988,640.00 |
|
||||
| 462.04 | CREDITOR EURO PRO CONSTRUCT | 0.00 | 1,869,897.00 |
|
||||
| 462.05 | MODREA ALAIN FLORIN | 0.00 | 542,234.00 |
|
||||
|
||||
## MASTERJOB
|
||||
|
||||
| Cont | Denumire | Nr. analitice | Sold total | Propus |
|
||||
|---|---|---|---|---|
|
||||
| 117 | REZULTATUL REPORTAT | 8 | 44,795.92 | **ANALITIC** |
|
||||
| 2111 | TERENURI | 1 | 439,966.60 | **ANALITIC** |
|
||||
| 371 | MARFURI | 1 | 38,850.00 | **ANALITIC** |
|
||||
| 401 | FURNIZORI | 18 | -547,108.99 | **PARTENER** |
|
||||
| 4092 | FURNIZORI — DEBITORI PT. PRESTARI DE SERVICII | 1 | 4.00 | **PARTENER** |
|
||||
| 4111 | CLIENTI | 1 | 12,000.00 | **PARTENER** |
|
||||
| 441 | IMPOZITUL PE PROFIT SI ALTE IMPOZITE | 1 | -2,567.00 | **ANALITIC** |
|
||||
| 447 | FONDURI SPECIALE TAXE SI VARSAMINTE ASIMILATE | 1 | -47.00 | **ANALITIC** |
|
||||
| 4551 | ACTIONARI/ASOCIATI - CONTURI CURENTE | 2 | -751,724.61 | **PARTENER** |
|
||||
| 461 | DEBITORI DIVERSI | 3 | 69,289.00 | **PARTENER** |
|
||||
| 462 | CREDITORI DIVERSI | 4 | -9,810.00 | **PARTENER** |
|
||||
| 5121 | CONTURI LA BANCA IN LEI | 2 | 15,578.45 | **PARTENER** |
|
||||
| 5124 | CONTURI LA BANCA IN VALUTA | 2 | 1,060,090.96 | **PARTENER** |
|
||||
| 5125 | SUME IN CURS DE DECONTARE | 1 | 0.50 | **PARTENER** |
|
||||
|
||||
### Detaliu analitice propuse PARTENER
|
||||
|
||||
**401 FURNIZORI**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 401.00001 | MEDIAROM COMUNICATIONS | 0.00 | 14,293.76 |
|
||||
| 401.00003 | TEMPLUM PLUS | 0.00 | 500.00 |
|
||||
| 401.00006 | BIROU INDIVIDUAL NOTARIAL GEORGE TRAGONE | 0.00 | 952.00 |
|
||||
| 401.00007 | ACVATIC TES S.R.L. | 0.00 | 439,966.60 |
|
||||
| 401.00008 | DREAM FISH S.R.L. | 0.00 | 38,850.00 |
|
||||
| 401.00009 | LEROY MERLIN ROMANIA SRL C | 0.00 | 2,902.91 |
|
||||
| 401.00010 | SERVICE ONLAPTOP S.R.L. | 0.00 | 1,230.00 |
|
||||
| 401.00011 | PET PRODUCT SRL | 0.00 | 445.05 |
|
||||
| 401.00012 | BIROU INDIVIDUAL NOTARIAL PIELEANU DANIELA | 0.00 | 4,879.00 |
|
||||
| 401.00013 | CREATIV EXPERT CONSTRUCT S.R.L. | 0.00 | 3,300.00 |
|
||||
| 401.00014 | **(lipsa denumire in PDF)** | 0.00 | 16,802.46 |
|
||||
| 401.00015 | ANDREEA BEATRICE VASILE | 0.00 | 10,000.00 |
|
||||
| 401.00017 | TIRES AND PARTS SRL | 0.00 | 1,245.00 |
|
||||
| 401.00023 | ANGLO CARS S.R.L. | 0.00 | 3,700.90 |
|
||||
| 401.00024 | DAW BENTA SRL | 0.00 | 1,948.01 |
|
||||
| 401.00025 | ROMSYSTEMS S.R.L. | 0.00 | 1,380.40 |
|
||||
| 401.00026 | UNIVERSAL GRUP SRL | 0.00 | 1,380.90 |
|
||||
| 401.00027 | SEBASTIAN CONSTRUCTII MONTAJ SRL | 0.00 | 3,332.00 |
|
||||
|
||||
**4092 FURNIZORI — DEBITORI PT. PRESTARI DE SERVICII**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 4092.01 | ICI | 4.00 | 0.00 |
|
||||
|
||||
**4111 CLIENTI**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 4111.00001 | NEW HOME CONSTRUCT S.A. | 12,000.00 | 0.00 |
|
||||
|
||||
**4551 ACTIONARI/ASOCIATI - CONTURI CURENTE**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 4551.01 | IONESCU VALENTIN | 0.00 | 729,308.61 |
|
||||
| 4551.02 | TOMA IONEL VIOREL RO55 RZBR 0000 0600 1338 1717 | 0.00 | 22,416.00 |
|
||||
|
||||
**461 DEBITORI DIVERSI**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 461.01 | SISTEME INTARNATIONALE DE AF. | 8,289.00 | 0.00 |
|
||||
| 461.02 | HABITAT SI AMBIENT | 20,000.00 | 0.00 |
|
||||
| 461.03 | DEBITORI DIVERSI | 41,000.00 | 0.00 |
|
||||
|
||||
**462 CREDITORI DIVERSI**
|
||||
|
||||
| Analitic SAGA | Denumire (nume partener) | Sold D | Sold C |
|
||||
|---|---|---|---|
|
||||
| 462.01 | CREDITORI DIVERSI -IONESCU ALINA | 0.00 | 3,350.00 |
|
||||
| 462.02 | CREDITORI DIVERSI - REZIDENT COM | 0.00 | 700.00 |
|
||||
| 462.03 | CREDITORI DIVERSI - IONESCU VALENTIN | 0.00 | 760.00 |
|
||||
| 462.05 | CREDITOR C.S.C. | 0.00 | 5,000.00 |
|
||||
116
docs/decizii_import.md
Normal file
116
docs/decizii_import.md
Normal file
@@ -0,0 +1,116 @@
|
||||
|
||||
## 11. Trezorerie: banca si casa (512x / 531x) - PARTENERI, nu analitice
|
||||
Stabilit 20.09.2026.
|
||||
|
||||
- **Conturi bancare `512x`** (5121 lei, 5124 devize, 5125 sume in curs de decontare): analiticele SAGA
|
||||
**nu** devin analitice in ROA. Pentru fiecare analitic se creeaza un **partener cu numele exact al
|
||||
analiticului** (numele contului bancar, ex `RO73 BACX 0000 0008 7243 0001`, `PIRAEUS BANK - RON`),
|
||||
cod fiscal = codul SAGA (`5121.01`), si un rand `FACTURA` pe contul sintetic.
|
||||
- **Casa `531x`**: se creeaza partenerul **`CENTRALA`** (casa centrala), cod fiscal = codul contului
|
||||
(`5311`). Contul nu are analitice in balantele astea - un singur rand `FACTURA` pe sintetic.
|
||||
|
||||
## 12. Partener fara denumire in balanta
|
||||
Daca analiticul nu are denumire in PDF (ex MASTERJOB `401.00014`), partenerul se creeaza cu numele
|
||||
**`FURNIZOR <cod SAGA>`** (`FURNIZOR 401.00014`) si cod fiscal `401.00014`. Contabilitatea il
|
||||
identifica dupa cod si il corecteaza in ROA. Nu se ghiceste numele.
|
||||
|
||||
## 13. Postari directe pe contul sintetic (analitic de diferenta)
|
||||
SAGA permite inregistrari **direct pe contul sintetic**, fara analitic, si in plus **neteaza** D/C la
|
||||
sintetice. Importul ROA construieste sinteticul ca **suma analiticelor**, deci partea postata direct
|
||||
pe sintetic s-ar pierde.
|
||||
|
||||
Regula:
|
||||
1. Diferenta se calculeaza **pe net** (`parinte_D - parinte_C` fata de `SUM(copii_D) - SUM(copii_C)`),
|
||||
pentru ca gross-ul parintelui e netat de SAGA si nu e recuperabil.
|
||||
2. Diferenta **net zero** = doar netare SAGA, se ignora (ex FUNDATIA `1171.01`: -739.831,67 pe ambele
|
||||
laturi, net 0).
|
||||
3. Diferenta **net diferita de zero** = postare reala pe sintetic: se adauga un **analitic nou de
|
||||
diferenta**, cu suma pusa pe latura semnului diferentei, si se **raporteaza explicit** in
|
||||
`verificare_<firma>.md` (nu se ajusteaza analiticele existente).
|
||||
4. La conturile devenite PARTENERI, diferenta devine un **partener de diferenta**, nu un analitic.
|
||||
|
||||
Cazuri gasite la importul 12/2025:
|
||||
| Firma | Cont | Diferenta net | Tratament |
|
||||
|---|---|---|---|
|
||||
| FUNDATIA | 1171.01 | 0,00 (doar netare) | se ignora |
|
||||
| MASTERJOB | 117 | +2.635,87 debit | analitic nou de diferenta |
|
||||
| MASTERJOB | 5121 | +152,16 debit | partener de diferenta (5121 e cont cu parteneri) |
|
||||
|
||||
## 14. Trezorerie (512x / 531x): parteneri pe randuri BALANTA, FARA randuri FACTURA
|
||||
Stabilit 20.09.2026, inlocuieste partea de forma din pct. 11 (regula de continut ramane).
|
||||
|
||||
Conturile de banca si casa **au parteneri, dar nu au facturi**: apar in balanta de verificare si in
|
||||
balanta de parteneri, niciodata in registrul de facturi.
|
||||
|
||||
In xlsx:
|
||||
- **Nu** se genereaza randuri `TIP=FACTURA` pe `512x` / `531x`.
|
||||
- Se genereaza cate un rand `TIP=BALANTA` **per cont bancar / casa**, pe contul sintetic
|
||||
(`acont` gol), cu `nume` = denumirea analiticului SAGA (numele contului bancar, `CENTRALA` la
|
||||
casa) si `cod_fiscal` = codul SAGA (`5121.01`, `5311`), `totdeb`/`totcred` = sumele totale ale
|
||||
analiticului respectiv.
|
||||
|
||||
Confirmare din codul ROA (`COMUN\ferestre\frm_initializare_facturi_balanta.sc2:1104-1107`), la
|
||||
celalalt flux de import (balanta prin `conturi_roa.dbf`), unde exista doua liste distincte:
|
||||
- `lcListaConturiBalP` (balanta de parteneri): `401,404,408,409,4091,4092,4093,4111,418,419,461,462,4551,`**`5311,5121,5124`**
|
||||
- `lcListaConturiIregP` (inregistrari/facturi): aceeasi lista **fara** `5311,5121,5124`
|
||||
|
||||
`5125` nu figureaza in niciuna dintre liste - de tratat separat.
|
||||
|
||||
### Forma concreta in xlsx: randuri FACTURA (decis 20.09.2026)
|
||||
Formularul de import xlsx **nu suporta parteneri pe randurile `BALANTA`**:
|
||||
- `:828` goleste `denumire` cand `tip = 'BALANTA'` (o muta in `explicatia`)
|
||||
- `:867` construieste nomenclatorul de parteneri doar din randurile `WHERE ALLTRIM(tip) = 'FACTURA'`
|
||||
|
||||
Ca sa nu modificam formularul, trezoreria se pune **pe randuri `FACTURA`**, ca orice cont cu
|
||||
parteneri: partenerul se creeaza corect, `id_partd`/`id_partc` se completeaza, iar
|
||||
`balanta_parteneri` se reconstruieste din `ireg_parteneri` (`:1685-1695`), deci cifrele ies exact.
|
||||
|
||||
Efect secundar acceptat: pe conturile de trezorerie raman documente de tip FACTURA
|
||||
(`id_fdoc = 42`, `:528`) care nu sunt facturi reale. Nu deranjeaza balanta de parteneri.
|
||||
|
||||
Regula de continut ramane cea de la pct. 11: un partener per cont bancar, cu numele analiticului
|
||||
(`RO45 PIRB ...`, `PIRAEUS BANK - RON`), iar la casa partenerul `CENTRALA`.
|
||||
|
||||
### Sensul soldului la trezorerie
|
||||
Randurile FACTURA primesc latura dintr-o **lista fixa in cod** (`:379`):
|
||||
`401, 404, 462, 419, 408, 4551` -> credit; **tot restul -> debit**.
|
||||
Un cont bancar cu sold creditor (descoperit de cont) nu se poate exprima printr-un rand FACTURA:
|
||||
se lasa fara rand FACTURA, iar randul `BALANTA` il duce pe credit, unde formularul ii pune automat
|
||||
partenerul `NEREPARTIZAT` (`:415-431`). Se raporteaza cazul, ca sa fie corectat manual in ROA.
|
||||
Caz gasit: MASTER `5121.01 PIRAEUS BANK - RON`, sold creditor 20,80.
|
||||
|
||||
## 15. 512x: analitice SI parteneri; 5125 doar analitice
|
||||
Revizuit 20.09.2026 (inlocuieste forma din pct. 11 si 14 pentru aceste conturi).
|
||||
|
||||
- **`5121`, `5124`** (conturi bancare): analiticele **raman analitice** in planul de conturi si in
|
||||
balanta, **si in plus** fiecare analitic primeste un partener. Concret, pentru fiecare analitic
|
||||
se scriu DOUA randuri, pe acelasi `(cont, acont)`:
|
||||
- un rand `TIP=BALANTA` cu `acont` completat si `totdeb`/`totcred` = sumele totale ale analiticului;
|
||||
- un rand `TIP=FACTURA` cu **acelasi `acont`**, `nume` = denumirea analiticului (numele contului
|
||||
bancar), `cod_fiscal` = codul SAGA (`5121.01`), `sold` = soldul analiticului.
|
||||
|
||||
`acont` trebuie sa fie acelasi pe ambele randuri: formularul scade randurile FACTURA din randul
|
||||
BALANTA care are acelasi `(cont, acont, latura)` (`:415-431`). Cu `acont` diferit suma s-ar
|
||||
dubla si ar aparea un rest negativ pe `NEREPARTIZAT`.
|
||||
- **`5311`** (casa, fara analitice): rand `BALANTA` pe `5311` (acont gol) + rand `FACTURA` pe
|
||||
`5311` (acont gol), partener `CENTRALA`.
|
||||
- **`5125`**: **doar analitice**, fara parteneri. Se trateaza ca orice cont obisnuit cu analitice.
|
||||
- Un analitic cu soldul pe latura opusa laturii fixate in cod (`:379`, trezoreria merge pe debit)
|
||||
nu primeste rand FACTURA; ramane doar randul BALANTA si formularul ii pune `NEREPARTIZAT`.
|
||||
Caz gasit: MASTER `5121.01 PIRAEUS BANK - RON`, sold creditor 20,80.
|
||||
|
||||
## 16. Regula generala: randul FACTURA trebuie sa aiba acelasi `acont` ca randul BALANTA pe care il consuma
|
||||
Confirmat 20.09.2026.
|
||||
|
||||
Formularul grupeaza randurile `FACTURA` pe `(cont, acont, latura)` si **scade** suma lor din randul
|
||||
`BALANTA` cu exact aceeasi cheie; restul ramane pe partenerul `NEREPARTIZAT`, iar daca randul
|
||||
`BALANTA` lipseste, il creeaza el (`frm_initializare_facturi_balanta.sc2:415-431`).
|
||||
|
||||
Consecinte:
|
||||
- `acont` gol pe `FACTURA` + `acont` completat pe `BALANTA` = cheie diferita: suma **se dubleaza**
|
||||
(analiticul ramane intreg in balanta si se mai adauga un rand negativ pe sintetic, pe
|
||||
`NEREPARTIZAT`). Greseala tacuta, nu da eroare.
|
||||
- De aceea: cont cu parteneri **fara** analitice in ROA (401, 4092, 4111, 461, 462, 4551) ->
|
||||
ambele randuri cu `acont` gol. Cont cu parteneri **si** analitice in ROA (5121, 5124) ->
|
||||
ambele randuri cu acelasi `acont`.
|
||||
- Latura conteaza si ea: un rand FACTURA pe debit nu atinge randul BALANTA de pe credit.
|
||||
58
docs/plan_solduri2roa.md
Normal file
58
docs/plan_solduri2roa.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Plan: balante SAGA (PDF) -> xlsx de initializare ROA
|
||||
|
||||
Proiect: `D:\ROA\IMPORT2ROA\solduri2roa`
|
||||
Obiectiv prioritar: doua fisiere xlsx gata de importat in ROACONT pentru FUNDATIA si MASTER, luna 12/2025.
|
||||
Obiectiv secundar (pasul 2): program reutilizabil de conversie SAGA -> xlsx ROA.
|
||||
|
||||
Deciziile de mapare: `decizii_import.md`. Semantica formularului de import: `raport_form_init_balanta.md`.
|
||||
|
||||
## Etapa 1 - extragere fidela din PDF (lane `pdf-extract`)
|
||||
`extract_balanta.py` (pdfplumber, pe coordonate) -> `balanta_FUNDATIA.csv`, `balanta_MASTERJOB.csv`
|
||||
cu `cont;denumire;prec_d;prec_c;rulaj_d;rulaj_c;total_d;total_c;sold_d;sold_c;este_total`.
|
||||
Poarta de trecere (nu se avanseaza cat timp pica):
|
||||
- `total_d = prec_d + rulaj_d`, `total_c = prec_c + rulaj_c` pe fiecare cont
|
||||
- `sold_d - sold_c = total_d - total_c` pe fiecare cont
|
||||
- `SUM(sold_d) = SUM(sold_c)` pe conturile frunza
|
||||
- suma analiticelor = parintele, pe fiecare nivel
|
||||
Un esec = parser gresit, nu date gresite: se repara parserul, nu cifrele.
|
||||
|
||||
## Etapa 2 - semantica formularului (lane `form-init-balanta`)
|
||||
Analiza `COMUN\ferestre\frm_initializare_facturi_balanta.sc2`: coloane obligatorii, validari
|
||||
blocante, crearea partenerului dupa `cod_fiscal` (si daca respinge un "CUI" de forma `401.00027`),
|
||||
regula `id_partd`/`id_partc`, lungimi `cont`/`acont`, rolul `CONFIG_CONT_IREG`.
|
||||
Risc principal de oprit aici: o validare de CUI care refuza `401.00027`.
|
||||
|
||||
## Etapa 3 - conturile cu parteneri (lane `config-cont-ireg`)
|
||||
`CONFIG_CONT_IREG` din Oracle local -> lista conturilor cu `CU_INREGISTRARI = 1`.
|
||||
|
||||
## Etapa 4 - maparea in structura ROA
|
||||
Pentru fiecare firma, din CSV:
|
||||
1. **Conturi fara parteneri**: se pastreaza doar frunzele. `cont` = primele max 4 caractere,
|
||||
`acont` = restul cifrelor concatenate (max 4). Un rand `BALANTA` per frunza, cu
|
||||
`totdeb = total_d`, `totcred = total_c`. Daca suma frunzelor difera de parinte -> analitic de
|
||||
diferenta, raportat explicit.
|
||||
2. **Conturi cu parteneri** (din etapa 3): un singur rand `BALANTA` pe sintetic (fara `acont`),
|
||||
cu suma `total_d` / `total_c` a analiticelor, plus cate un rand `FACTURA` per analitic-partener:
|
||||
`nume` = denumirea analiticului, `cod_fiscal` = `<cont>.<analitic>` din SAGA,
|
||||
`numar` = analiticul, `sold` = soldul analiticului (cu semnul dat de natura contului),
|
||||
`data` = 01.12.2025, `datascad` = 31.12.2025.
|
||||
3. Toate randurile: `an = 2025`, `luna = 12`.
|
||||
Iesire: `init_FUNDATIA_2025_12.xlsx`, `init_MASTER_2025_12.xlsx`, generate din sablonul
|
||||
`init_facturi_balanta_note.xlsx` cu randurile de instructiuni sterse.
|
||||
|
||||
## Etapa 5 - verificare inainte de predare
|
||||
- `SUM(totdeb) = SUM(totcred)` pe tot xlsx-ul
|
||||
- pentru fiecare cont cu parteneri: `SUM(sold FACTURA) = soldul sintetic din balanta`
|
||||
- fiecare cont din balanta apare exact o data (frunza) in xlsx; niciun cont pierdut
|
||||
- `cont` <= 4 caractere, `acont` <= 4 caractere, fara dubluri `cont+acont`
|
||||
Raport: `docs\verificare_<firma>.md`, cu totalurile din balanta alaturi de totalurile din xlsx.
|
||||
|
||||
## Etapa 6 - git
|
||||
`git init`, commit, push pe `gitea.romfast.ro:romfast/solduri2roa.git` (push-to-create).
|
||||
Se comit: scripturile, `docs\`, CSV-urile si xlsx-urile generate. PDF-urile: da (sunt sursa, 30 KB).
|
||||
|
||||
## Pasul 2 (dupa import) - convertorul reutilizabil
|
||||
Generalizarea etapelor 1 + 4 intr-un singur script cu parametri (firma, an, luna, sursa PDF sau
|
||||
xlsx SAGA), cu regulile din `decizii_import.md` scoase intr-un fisier de configurare
|
||||
(conturi cu parteneri, maparea analiticelor). Nu se porneste inainte ca cele doua importuri sa
|
||||
fie validate in ROA.
|
||||
12
docs/prompt_initial.md
Normal file
12
docs/prompt_initial.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# Prompt initial pentru agentii opencode - proiect solduri2roa
|
||||
|
||||
Esti EXECUTANT, nu arhitect. Lucrezi in D:\ROA\IMPORT2ROA\solduri2roa.
|
||||
|
||||
Reguli:
|
||||
- Python 3.13 se apeleaza cu `py` (nu `python`). Librarii deja instalate: pdfplumber, openpyxl.
|
||||
- Nu folosi NICIODATA `sed -i`. Scrie fisiere cu redirectare/heredoc sau cu Python.
|
||||
- Nu da commit (git/svn) si nu modifica nimic in afara D:\ROA\IMPORT2ROA\solduri2roa (D:\ROA\ROACONT e read-only pentru tine).
|
||||
- Codul e simplu si scurt: fara clase inutile, fara framework-uri, fara dependinte noi.
|
||||
- Nu inventa date. Daca o valoare nu se poate extrage sigur, o raportezi ca problema, nu o ghicesti.
|
||||
- Scrii raportul cerut in docs\raport_<lane>.md, scurt, cu fapte si numere, fara povestiri.
|
||||
- Ultimul mesaj: `GATA <lane>` sau `BLOCAT <lane>: motiv`.
|
||||
25
docs/raport_config-cont-ireg.md
Normal file
25
docs/raport_config-cont-ireg.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Raport config-cont-ireg
|
||||
|
||||
Read-only. Doar SELECT. Nu s-a modificat nimic in baza; nu s-a scris in D:\ROA\ROACONT.
|
||||
|
||||
## 1. Facut
|
||||
|
||||
- Livrat: `D:\ROA\IMPORT2ROA\solduri2roa\docs\config_cont_ireg.md` — schema sursa, comanda de conectare, DESC, toate cele 47 randuri, lista CU_INREGISTRARI=1.
|
||||
- Citire: `MARIUSM_AUTO.CONFIG_CONT_IREG` prin `sqlplus -S "MARIUSM_AUTO/ROMFASTSOFT@ROA_CENTRAL"`, TNS_ADMIN=`D:\ROA\instantclient_19_18`.
|
||||
- DSN `ROA_CENTRAL` (10.0.20.121:1521/ROA) din `D:\ROA\instantclient_19_18\tnsnames.ora:206`. Parola din `D:\ROA\ROACONT\docs\oracle_parola_standard.secret` (=`ROMFASTSOFT`, si in `COMUN\utile\Teste\test_init_env_auto.prg:22`).
|
||||
|
||||
## 2. Verificari
|
||||
|
||||
- Conectare verificata: `select user from dual` -> `MARIUSM_AUTO`.
|
||||
- Numarare: `select count(*) from config_cont_ireg` -> 47 (toate scrise in livrabil).
|
||||
- Coloana ceruta "denumire" nu exista; denumirea este `EXPLICATIE` (notat in livrabil).
|
||||
- Tabela are in plus: `FEL_CONT`, `CU_VENCHELT`, `CU_PROC_TVA`, `LUNAI`, `ANI` (incluse in livrabil; LUNAI/ANI doar pe randul 4511).
|
||||
- Nu au fost rulate teste VFP.
|
||||
|
||||
## 3. Nefacut / blocat
|
||||
|
||||
- Nimic in afara scopului. Nu am scris raportul in `D:\ROA\ROACONT` (interzis explicit de sarcina), l-am pus in folderul de livrare.
|
||||
|
||||
## 4. Stare periculoasa
|
||||
|
||||
- Niciuna: zero scrieri in baza, niciun fisier editat in ROACONT, niciun proces ramas.
|
||||
217
docs/raport_form_init_balanta.md
Normal file
217
docs/raport_form_init_balanta.md
Normal file
@@ -0,0 +1,217 @@
|
||||
# Semantica importului `init_facturi_balanta_note.xlsx`
|
||||
|
||||
Analiza read-only. Sursa de cod: `D:\ROA\ROACONT\COMUN\ferestre\frm_initializare_facturi_balanta.sc2`
|
||||
(liniile citate sunt cele din fisierul text FoxBin2Prg). Fara analize speculative.
|
||||
|
||||
## Fluxul
|
||||
|
||||
Butonul **Import** (`cmdNoteFacturiBalanta`, optiunea 1) executa in ordine:
|
||||
|
||||
1. `VerificaImport()` - `frm...sc2:2354`, metoda la `2292-2310`.
|
||||
2. `ExportDate()` - `frm...sc2:2360`, metoda la `738-993`.
|
||||
3. `Creeazanote()` - `frm...sc2:2364`, metoda la `241-733`.
|
||||
4. `ModificaNote()` sau `Scrienote()` - `frm...sc2:2368-2371`.
|
||||
|
||||
`ExportDate` citeste xlsx-ul in cursorul `cFacturiTemp` (`frm...sc2:760-774`) si lasa in urma
|
||||
cursorul `cFacturi` (`frm...sc2:825-847`). `Creeazanote` transforma `cFacturi` in `actactan`
|
||||
(note in Registrul Jurnal, `id_set = 90024`, `frm...sc2:258`).
|
||||
|
||||
**Maparea coloanelor este positionala**, nu dupa numele din capul de tabel: `appendfromxlsx`
|
||||
ia campurile cursorului cu `AFIELDS` in ordine (`appendfromxlsx.prg:111-135`) si scrie pe rand.
|
||||
De aceea numele xlsx difera de numele campului:
|
||||
|
||||
| xlsx | cursor `cFacturiTemp` | citat |
|
||||
|---|---|---|
|
||||
| nume | denumire | `frm...sc2:761` (ord. camp 10) |
|
||||
| numar | nract | `frm...sc2:760` (ord. 7) |
|
||||
| data | dataact | `frm...sc2:760` |
|
||||
| explicatia | explicatie | `frm...sc2:762` |
|
||||
| **sold** | **valoare** | `frm...sc2:765` |
|
||||
| **soldval** | **totval** | `frm...sc2:765` |
|
||||
| **soldtvaneex** | **tva** | `frm...sc2:765` |
|
||||
| **acont4428neex** | **acont4428** | `frm...sc2:765` |
|
||||
|
||||
Maparea sold/soldval/soldtvaneex -> valoare/totval/tva e confirmata si de codul comentat
|
||||
`frm...sc2:781-799` (`sold -> valoare`, `soldtvaneex -> tva`, `soldval -> totval`).
|
||||
|
||||
---
|
||||
|
||||
## 1. Randurile TIP=BALANTA: totdeb/totcred
|
||||
|
||||
**Sunt SUME TOTALE cumulate** (sold initial + rulaje), nu solduri nete. In sablon:
|
||||
"Total sume debitoare BALANTA" / "Total sume creditoare BALANTA" (Sheet1, rand 1). Comentariul
|
||||
din fluxul inrudit o spune explicit: `TOTDEB/TOTCRED = sume totale (sold la 1 ianuarie + rulaj
|
||||
precedent anual + rulaj lunar)` (`frm...sc2:1034`).
|
||||
|
||||
Ce face codul cu ele:
|
||||
- Le transforma in cate o linie separata, nu intr-o diferenta: `totdeb as valoare` pe latura D,
|
||||
`totcred as valoare` pe latura C, unite cu UNION ALL (`frm...sc2:350-356`).
|
||||
- Latura (D/C) pentru BALANTA vine din union-ul de mai sus, NU din lista de la `383` (lista 401,
|
||||
404, 462, 419, 408, 4551 -> C se aplica doar peste `cFacturiTemp`, care la acel moment contine
|
||||
doar randuri FACTURA; `frm...sc2:381-383`).
|
||||
- Nota generata: `id_fdoc = 69` (SOLD) pentru BALANTA, fata de 42 (FACTURA) (`frm...sc2:508`).
|
||||
- Semnul: daca `tipDC = 'C'` -> contul intra pe credit (`pcScc = pcCont`, `pcAscc = pcAcont`);
|
||||
daca `tipDC = 'D'` -> pe debit (`pcScd = pcCont`, `pcAscd = pcAcont`) (`frm...sc2:551-579`).
|
||||
- **Contrapartida: goala.** Partea opusa rămâne `''` (`pcScd/pcAscd` gol pe latura C,
|
||||
`pcScc/pcAscc` gol pe latura D - `frm...sc2:553-556, 567-570`). Nu exista cont de sold
|
||||
initial (891/892) in cod. Nota de BALANTA este **unilaterala**, cate o linie per cont/latura.
|
||||
- Suma postata = soldul BALANTA minus TVA-ul neexigibil de pe aceeasi linie (pentru BALANTA
|
||||
`tva = 0`, deci suma ramane `valoare`) (`frm...sc2:493, 504-506, 531-546`).
|
||||
- Daca un cont are si totdeb si totcred nenule, se genereaza doua linii distincte.
|
||||
|
||||
## 2. Randurile TIP=FACTURA
|
||||
|
||||
**Coloane obligatorii** - sablonul le declara (Sheet1, rand 1 / instructiuni): `an, luna, cont,
|
||||
nr, data, nume, cod_fiscal, sold factura` (optional `facturat/achitat`), `sold TVA Neexigibil`
|
||||
daca exista; "Pentru FACTURA, OBLIGATORIU completati NUME si COD FISCAL". Codul insa **nu le
|
||||
valideaza explicit**; singurul filtru dur este `an` numeric nenul (`frm...sc2:846`,
|
||||
`WHERE !Empty(Val(Transform(an)))`). Un rand fara `an` este ignorat tacit.
|
||||
|
||||
**Partenerul** se creeaza/gaseste astfel:
|
||||
- `ExportDate` grupeaza randurile FACTURA dupa `denumire, cod_fiscal, reg_com` (`frm...sc2:865-869`)
|
||||
si adauga mereu un partener `NEREPARTIZAT` (`frm...sc2:871-877`).
|
||||
- `CompleteazaParteneriROA` (`oproceduri_import.prg:5571-5910`): normalizeaza codul
|
||||
(`Upper`, fara spatii, `oproceduri_import.prg:5624`); daca lungimea <= 3, codul devine `''` si
|
||||
cautarea se face **dupa denumire** (`oproceduri_import.prg:5626-5628, 5639-5650`).
|
||||
- Cauta intai dupa cod exact (`5638-5641`), apoi dupa `NormalizeazaCUI` (`5643-5646`). Daca nu
|
||||
gaseste, **creeaza partener nou** cu `pack_def.adauga_partener` (`5667-5717`), folosind codul
|
||||
fiscal ca atare (`5677`), `tip_persoana = 1` daca lungimea < 13, altfel 2 (`5686`).
|
||||
- **Nu exista validare de CUI (checksum/format).** `NormalizeazaCUI` doar face UPPER, scoate
|
||||
spatiile si taie prefixul `RO` cand restul e numeric (`validare.prg:1679-1699`). Deci
|
||||
`"401.00027"` rămâne `"401.00027"`; are 9 caractere (>3), este folosit ca `cod_fiscal`, iar
|
||||
daca nu exista deja, creeaza un partener nou cu acest cod. **Randul nu este respins.**
|
||||
- `id_part` se intoarce pe randurile FACTURA prin `Update cFacturi Set id_part ... Where
|
||||
cod_fiscal = ... AND denumire = ... AND reg_com = ...` (`frm...sc2:902`).
|
||||
|
||||
**Documentul/nota generata**: `id_fdoc = 42` (FACTURA) (`frm...sc2:508`), o linie de valoare
|
||||
(`facturat` sau `valoare`, minus TVA neexigibil) si, daca exista, o linie `ACHITAT`
|
||||
(`frm...sc2:529-633`), plus notele de TVA neexigibil (`frm...sc2:650-725`). `id_fact` se ia din
|
||||
`vireg_parteneri` sau din `SEQ_IdFact` (`frm...sc2:262-320`).
|
||||
|
||||
## 3. Legatura FACTURA <-> BALANTA
|
||||
|
||||
Nu se aduna si nu se verifica egalitatea; **BALANTA se reduce cu totalul facturilor**:
|
||||
- Se insumeaza `facturat - achitat` pe `cont, acont, tipDC` din randurile FACTURA
|
||||
(`frm...sc2:389-392`); se adauga si soldul de 4428 TVA neexigibil (`frm...sc2:395-402`).
|
||||
- Pentru fiecare grupa se cauta linia BALANTA pe `cont/acont/tipDC` (`frm...sc2:411-412`) si
|
||||
`REPLACE valoare WITH valoare - lnSoldFactura` (`frm...sc2:428`).
|
||||
- Daca linia BALANTA nu exista, se creeaza automat una cu explicatia `DIFERENTA FACTURI` si
|
||||
partener `NEREPARTIZAT` (`frm...sc2:413-426`).
|
||||
- `lnSoldFactura = IIF(sold <> 0, sold, valoare)` - daca `facturat-achitat` e 0, foloseste
|
||||
`SUM(valoare)` (soldul facturii) (`frm...sc2:408`).
|
||||
- **Nu exista verificare de egalitate si nici eroare la diferenta**; restul rămâne sold
|
||||
`NEREPARTIZAT`.
|
||||
|
||||
## 4. Lungimi `cont` / `acont` si combinare
|
||||
|
||||
- Cursorul le declara `C(20)` (`frm...sc2:760`); la iesire se aplica `PADR(ALLTRIM(...), 4, ' ')`
|
||||
(`frm...sc2:826-827`), deci minim 4, fara trunchiere la 4. In baza, `CONFIG_CONT_IREG.CONT`
|
||||
este `VARCHAR2(4)` (docs/config_cont_ireg.md:24). Practic, sablonul cere `cont` <= 4 si
|
||||
`acont` <= 4.
|
||||
- Daca celula `cont` contine un punct (`401.01`), `ExportDate` o separa: `cont = LEFT(pana la
|
||||
punct)`, `acont = SUBSTR(dupa punct)`, iar `acont`-ul din coloana proprie se pastreaza daca
|
||||
nu e gol (`frm...sc2:806-816`).
|
||||
- In nota finala contul sintetic si analiticul sunt **campuri separate**, nu concatenate:
|
||||
`scd/ascd` si `scc/ascc` (`frm...sc2:639-645`); `pcCont = ALLTRIM(cont)`,
|
||||
`pcAcont = ALLTRIM(acont)` (`frm...sc2:477-478`).
|
||||
|
||||
## 5. Rolul `CONFIG_CONT_IREG` / `CU_INREGISTRARI`
|
||||
|
||||
- Se citeste `select cont, decode(fel_cont,'0','D','C') as tipdc, cu_inregistrari from
|
||||
CONFIG_CONT_IREG` (`frm...sc2:435`). Pentru fiecare cont din config, pe liniile BALANTA se
|
||||
forteaza partenerul `NEREPARTIZAT` (`frm...sc2:438-443`), ca sa se poata genera balanta de
|
||||
parteneri.
|
||||
- `cu_inregistrari = 1` marcheaza conturile cu inregistrari de partener. In `Creeazanote`, daca
|
||||
linia BALANTA are cont in config, `tipdc` de config este opus laturii curente si
|
||||
`cu_inregistrari = 1`, atunci pe linia opusa se pune `id_factc/id_factd = id_fact` si
|
||||
`perechec/pereded = nract` (`frm...sc2:582-595`).
|
||||
- Lista efectiva a conturilor cu `CU_INREGISTRARI = 1` (dump Oracle local) este in
|
||||
`docs/config_cont_ireg.md:89-91` (401, 403, 404, 408, 409, 4091-4094, 4111, 4118, 413, 418,
|
||||
419, 426, 4511, 4551, 456, 457, 461, 462, 471, 472, 4754, 542, 8051, plus 1621, 167, 232,
|
||||
234, 261, 2678, 2691). Fluxul de initializare directa are liste echivalente hardcodate:
|
||||
parteneri-balanta `401,404,408,409,4091,4092,4093,4111,418,419,461,462,4551,5311,5121,5124`
|
||||
(`frm...sc2:1104`) si inregistrari-parteneri fara 5311/5121/5124 (`frm...sc2:1107`).
|
||||
- Randurile FACTURA cu partener sunt deci necesare pentru conturile din `CONFIG_CONT_IREG` cu
|
||||
`cu_inregistrari = 1`; BALANTA pe acele conturi primeste partener de diferenta.
|
||||
|
||||
## 6. Unde se completeaza `id_partd` / `id_partc`
|
||||
|
||||
In `Creeazanote`, dupa regula debit/credit:
|
||||
- Linia de valoare: `tipDC = 'C'` -> partenerul pe credit (`pnIdPartC = id_part`,
|
||||
`pnIdPartD = 0`); `tipDC = 'D'` -> pe debit (`pnIdPartD = id_part`, `pnIdPartC = 0`)
|
||||
(`frm...sc2:551-579`). Motivul e in comentariu: 401 pe credit, 4111 pe debit.
|
||||
- Linia `ACHITAT`: invers - `tipDC = 'C'` (furnizor) -> partener pe debit; `tipDC = 'D'`
|
||||
(client) -> pe credit (`frm...sc2:597-630`).
|
||||
- Liniile de TVA neexigibil: 4428 vs 401/4111, partener pe latura contului de partener
|
||||
(`frm...sc2:654-678`).
|
||||
- Suplimentar pentru BALANTA, pe linia opusa, `id_factc/id_factd` din config
|
||||
(`frm...sc2:582-595`). Insertul in `actactan` le scrie in `id_partd/partd/id_partc/partc`
|
||||
(`frm...sc2:639-645, 716-721`).
|
||||
|
||||
## 7. Validari care blocheaza / opresc importul (lista scurta)
|
||||
|
||||
- Documente deja importate: doar avertisment de confirmare, nu blocheaza
|
||||
(`frm...sc2:2292-2310`, mesaj la `2355`).
|
||||
- `'Nu s-a generat id_fact!'` (`frm...sc2:313`).
|
||||
- `'Nu s-a gasit/generat id-ul de factura. Se opreste generarea de id-uri!'` (`frm...sc2:323`).
|
||||
- `'Eroare la adaugarea in clienti ROA ...'` - opreste `CompleteazaParteneriROA`
|
||||
(`oproceduri_import.prg:5711`).
|
||||
- Fisier neales: `Getfile` gol -> return (`frm...sc2:751-755`).
|
||||
- Rand fara `an` numeric: ignorat tacit (`frm...sc2:846`).
|
||||
- Erori de citire xlsx: `'Nimic de importat'`, `'Foaie inexistenta'` (`appendfromxlsx.prg:24-45,
|
||||
139-145`).
|
||||
- `'Nu recunosc structura de balanta!'` - doar fluxul direct `InitBalanta` (`frm...sc2:1095`).
|
||||
- Erori Oracle propagate prin `goExecutor.cEroare` (ex. `frm...sc2:292-294, 981`).
|
||||
|
||||
Nu exista validare de completitudine pe coloanele FACTURA (nume/cod_fiscal/numar/data).
|
||||
|
||||
## 8. `soldtvaneex` / `acont4428neex` / `baza..tva..`
|
||||
|
||||
- `soldtvaneex` -> campul cursor `tva`: soldul TVA neexigibil al facturii
|
||||
(`frm...sc2:765`; mapare in codul comentat `790`).
|
||||
- `acont4428neex` -> campul cursor `acont4428`: contul analitic 4428
|
||||
(`frm...sc2:765`); folosit ca `ascd/ascc` pe liniile de 4428
|
||||
(`frm...sc2:656-657, 670-671`).
|
||||
- `baza21/tva21 ... baza20/tva20` -> `baza..tva..`: baza si TVA neexigibil pe cote
|
||||
(`frm...sc2:766-772`). Cota se determina in ordinea 21, 11, 19, 9, 5, 24, 20
|
||||
(`frm...sc2:679-711`), iar suma TVA-ului pe cote este `pnTottvatax` (`frm...sc2:510`).
|
||||
- **Cand sunt obligatorii**: numai cand factura are TVA neexigibil (`lnTVA <> 0`,
|
||||
`frm...sc2:650`). Sablonul cere explicit: "REGISTRE TVA TVA LA INCASARE. Trebuie completat
|
||||
SOLD TVA NEEXIGIBIL + BAZA SI TVA NEEXIGIBIL pentru ca randul FACTURA sa aiba explicatie TVA
|
||||
si sa apara in Registrele de TVA". `acont4428neex` se completeaza doar daca e nevoie.
|
||||
Daca `tva = 0`, nu se genereaza nicio nota de exigibilitate.
|
||||
|
||||
## 9. Contul sintetic din analitice - il creeaza singur (confirmat)
|
||||
|
||||
- Instructiunea din sablon (Sheet1): "La tip BALANTA se completeaza DOAR CONTURILE ANALITICE,
|
||||
DACA EXISTA, altfel contul sintetic (ex: 419.1 si 419.2 nu si 419). **Importul creeaza automat
|
||||
contul sintetic din suma analiticelor**".
|
||||
- Formularul separa `cont.acont` (`frm...sc2:806-816`) si creeaza intrarea de plan conturi
|
||||
pentru analitic prin `merge into plcont` (`frm...sc2:943-986`).
|
||||
- Sinteticul propriu-zis se construieste in engine, la scrierea notelor:
|
||||
`PACK_CONTAFIN.SCRIE_IN_BALANTA` face `BAL` (sintetic) = `SUM(DEBIT)/SUM(CREDIT)` grupat pe
|
||||
`scd/scc`, si `BALANA` (analitic) grupat pe `scd + ascd` (`ff_2026_09_09_06_COMUN_PACK_CONTAFIN.sql:6894-6957`),
|
||||
apelat din `final_scriere_act_rul_local` (`...sql:8552-8553`).
|
||||
- Fluxul direct `InitBalanta` o face explicit in VFP: "Balanta sintetica" = `SUM` grupat pe
|
||||
`cont2` fara `acont2` (`frm...sc2:1151-1160`), insert in `bal` (`frm...sc2:1188-1200`) si
|
||||
analitica in `balana` (`frm...sc2:1245-1258`).
|
||||
|
||||
## 10. Randul de start si numele foii
|
||||
|
||||
- `appendfromxlsx(m.lcFile, "cFacturiTemp", "", 2, "Sheet1", .T.)` (`frm...sc2:774`):
|
||||
`lnStartRows = 2`, deci **randul 1 (capul de tabel) este sarit; citirea incepe de la randul 2**.
|
||||
Sablonul o confirma: "IMPORTUL INCEPE DE LA RANDUL 2. LASATI RANDUL 1 (CAPUL DE TABEL)".
|
||||
- Foaia asteptata: **`Sheet1`**, potrivita case-insensitive dupa nume in `get_sheet`
|
||||
(`appendfromxlsx.prg:605-634`); in fisier `xl/workbook.xml` foaia se numeste `Sheet1`.
|
||||
- Randurile de instructiuni (2-19 in sablon) sunt citite ca date dar eliminate de filtrul
|
||||
`an` nenul (`frm...sc2:846`); datele reale incepand cu randul 20 in sablon.
|
||||
|
||||
---
|
||||
|
||||
## Observatii
|
||||
|
||||
- Ambele directii folosesc acelasi sablon `init_facturi_balanta_note.xlsx` (`frm...sc2:2258`);
|
||||
optiunea 2 (initializare directa) foloseste insa `InitBalanta`/`InitFacturi`, cu alte fisiere
|
||||
si alte structuri (`balanta.xlsx`, `facturi.xlsx`).
|
||||
- Toate citatele de mai sus sunt din fisierul `.sc2` (text), nu din binar.
|
||||
- Nu s-a modificat nimic in `D:\ROA\ROACONT`.
|
||||
65
docs/raport_genxlsx.md
Normal file
65
docs/raport_genxlsx.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Raport lane `genxlsx` (v2)
|
||||
|
||||
Script: `genereaza_xlsx.py`. Produce pentru fiecare firma xlsx-ul de initializare
|
||||
(`init_<FIRMA>_2025_12.xlsx`, un sheet, randul 1 = capul de tabel, fara instructiuni/exemple)
|
||||
si raportul de verificare (`docs/verificare_<FIRMA>.md`).
|
||||
|
||||
## Livrabile
|
||||
- `init_FUNDATIA_2025_12.xlsx` - 75 randuri (47 BALANTA, 28 FACTURA)
|
||||
- `init_MASTER_2025_12.xlsx` - 79 randuri (46 BALANTA, 33 FACTURA)
|
||||
- `docs/verificare_FUNDATIA.md`, `docs/verificare_MASTER.md`
|
||||
- `genereaza_xlsx.py`
|
||||
|
||||
## Rezultate verificari (toate OK)
|
||||
| Firma | SUM(totdeb)=SUM(totcred) | frunze pierdute | parteneri | lungimi/dubluri |
|
||||
|---|---|---|---|---|
|
||||
| FUNDATIA | 7068369.50 = 7068369.50 (net 0.00) | 0 | OK | OK |
|
||||
| MASTER | 2318592.91 = 2318592.91 (net 0.00) | 0 | OK | OK |
|
||||
|
||||
## Corectii v2 (fata de v1)
|
||||
1. **Randul FACTURA `DIFERENTA SINTETIC <cont>` a fost eliminat** de pe conturile cu parteneri.
|
||||
Formularul scade singur suma randurilor FACTURA din randul BALANTA de pe acelasi
|
||||
`(cont, acont, latura)` si pune restul pe partenerul `NEREPARTIZAT` pe care il creeaza el
|
||||
(`frm..sc2:415-431`). Diferenta nu se mai inventa de noi.
|
||||
2. **Analitice cu sold pe latura opusa nu mai primesc FACTURA.** Latura FACTURA e fixa in cod
|
||||
(`frm..sc2:379`/'383'): `401,404,462,419,408,4551` -> CREDIT, orice alt cont -> DEBIT.
|
||||
Analiticul sarit ramane doar in randul BALANTA (pe latura lui corecta) si formularul ii pune
|
||||
`NEREPARTIZAT`. Fiecare caz e listat in raport (sectiunea 4).
|
||||
3. **Randul BALANTA reprezinta contul sintetic intreg.** La partenerii cu un singur BALANTA
|
||||
agregat, `totdeb` = suma `total_d` a tuturor analiticelor + postarea directa pe sintetic
|
||||
(idem `totcred`), nu doar analiticele pentru care s-a emis FACTURA.
|
||||
4. **pct. 15 (revizuit 20.09.2026):**
|
||||
- `5121`/`5124`: analiticele **raman analitice** si in plus primesc partener. Pentru fiecare
|
||||
analitic se scriu **doua randuri pe acelasi `(cont, acont)`**: un `BALANTA` cu acont si
|
||||
`totdeb`/`totcred` ale analiticului, si un `FACTURA` cu **acelasi acont**, `cod_fiscal` =
|
||||
codul SAGA, `sold` = soldul analiticului. Acelasi `acont` e obligatoriu, altfel scaderea din
|
||||
cod nu se potriveste si suma se dubleaza.
|
||||
- `5125`: NU mai e cont cu parteneri - doar randuri BALANTA cu acont, fara FACTURA.
|
||||
- `5311`: BALANTA (acont gol) + FACTURA (acont gol), partener `CENTRALA`.
|
||||
- `401, 4092, 4111, 461, 462, 4551`: neschimbate - un BALANTA agregat pe sintetic (acont gol)
|
||||
+ cate un FACTURA per analitic (acont gol).
|
||||
|
||||
## Ce ramane pe `NEREPARTIZAT`, per cont (sectiunea 3 din verificari)
|
||||
`net sintetic - SUM(sold FACTURA cu semn) = analitice sarite + postare directa pe sintetic`.
|
||||
Rezultat: toate conturile ies 0, mai putin MASTER `5121`:
|
||||
|
||||
| cont | SUM FACTURA | net sintetic | sarite | postare directa | NEREPARTIZAT asteptat | diferenta |
|
||||
|---|---|---|---|---|---|---|
|
||||
| MASTER 5121 | 15599.25 | 15730.61 | -20.80 (`5121.01` creditor) | +152.16 | 131.36 | 131.36 |
|
||||
|
||||
- MASTER `5121.01 PIRAEUS BANK - RON` (sold creditor 20,80): fara FACTURA, doar
|
||||
`BALANTA 5121 acont 01` pe credit -> formularul ii pune `NEREPARTIZAT`.
|
||||
- MASTER `5121` postare directa +152.16: rand `BALANTA 5121 acont 99` `DIFERENTA SINTETIC SAGA`
|
||||
(fara FACTURA) -> `NEREPARTIZAT`.
|
||||
|
||||
## Randuri de diferenta (pct. 13-15) generate
|
||||
- MASTER `117` (nepartener): +2635.87 -> rand `BALANTA` cont 117, acont `99`,
|
||||
nume `DIFERENTA SINTETIC SAGA`.
|
||||
- MASTER `5121` (banca): +152.16 -> rand `BALANTA` cont 5121, acont `99`, fara FACTURA.
|
||||
- FUNDATIA: niciunul (1171.01 are diferenta net zero - doar netare SAGA).
|
||||
|
||||
## Observatii
|
||||
- SUM(totdeb) difera de `Totaluri.total_d` din PDF (FUNDATIA +739831.67, MASTER +20.80):
|
||||
gross-ul sinteticelor netate de SAGA nu se poate reconstrui din frunze; netul coincide exact.
|
||||
- Coloana `explicatia` (control D/C) este goala in xlsx-ul final.
|
||||
- Nu s-a facut niciun commit.
|
||||
57
docs/raport_pdf_extract.md
Normal file
57
docs/raport_pdf_extract.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# Raport pdf-extract - balante SAGA 31.12.2025
|
||||
|
||||
Script: `extract_balanta.py` (pdfplumber, extract_words pe coordonate; NU pdftotext).
|
||||
Rulare: `py extract_balanta.py "<pdf>" "<csv>"`.
|
||||
|
||||
## Volum extras
|
||||
|
||||
| Firma | PDF | randuri CSV | conturi | randuri total |
|
||||
|---|---|---|---|---|
|
||||
| FUNDATIA | IBB 31.12.2025.pdf | 88 | 82 | 6 |
|
||||
| MASTERJOB | MJC 31.12.2025.pdf | 88 | 81 | 7 |
|
||||
|
||||
Conturi duplicate: niciunul. Randuri de continuare de denumire lipite corect
|
||||
(ex: `1171` = "REZULTATUL REPORTAT - PROFITUL NEREP./ PIREDERE NEACOP.").
|
||||
|
||||
## Rezultat verificari
|
||||
|
||||
`frunze` = cont care nu e parinte. `radacini` = cont al carui parinte nu apare in balanta.
|
||||
SAGA neteaza D/C la conturile sintetice, deci verificarea de inchidere corecta e pe radacini.
|
||||
|
||||
| Verificare | FUNDATIA | MASTERJOB |
|
||||
|---|---|---|
|
||||
| (a) total_d = prec_d+rulaj_d si total_c = prec_c+rulaj_c | 82/82 OK | 81/81 OK |
|
||||
| (b) sold_d-sold_c = total_d-total_c | 82/82 OK | 81/81 OK |
|
||||
| (c) frunze: suma sold_d = suma sold_c | 6 793 548.43 = 6 793 548.43, dif 0.00 **OK** | 2 112 044.07 vs 2 114 832.10, dif **-2 788.03 ESEC** |
|
||||
| (c2) radacini: suma sold_d = suma sold_c | 6 053 716.76 = 6 053 716.76, dif 0.00 OK | 2 114 811.30 = 2 114 811.30, dif 0.00 OK |
|
||||
| randul "Totaluri:" din PDF | 6 053 716.76 = 6 053 716.76 | 2 114 811.30 = 2 114 811.30 |
|
||||
| cross-check "Total sume clasa N" = suma radacinilor clasei | 5/5 OK | 6/6 OK |
|
||||
| (d) parinte vs analitice | 6 diferente pe laturi, 0 pe net | 9 diferente pe laturi, 2 pe net |
|
||||
|
||||
Numerele de mai sus arata ca parsarea coordonatelor este corecta: (a) si (b) trec pentru
|
||||
toate conturile, iar fiecare rand "Total sume clasa N" egaleaza exact suma radacinilor din
|
||||
clasa respectiva (5/5 si 6/6), iar suma radacinilor egaleaza exact randul "Totaluri:".
|
||||
|
||||
## Conturi problematice si explicatie
|
||||
|
||||
Nu sunt erori de parsare; sunt doua comportamente reale SAGA:
|
||||
|
||||
1. Netare D/C la sintetice (FUNDATIA `1171.01`): parintele este prezentat net,
|
||||
copiii pe laturi.
|
||||
- `prec_d`: parinte 629 448.54 vs copii 1 369 280.21 (dif -739 831.67)
|
||||
- `prec_c`: parinte 0.00 vs copii 739 831.67 (dif -739 831.67)
|
||||
- pe NET: parinte 773 608.10 = copii 773 608.10 -> 0 diferente pe net.
|
||||
De aceea suma frunzelor (6 793 548.43) difera de "Totaluri" (6 053 716.76) cu exact
|
||||
739 831.67; inchiderea reala se face pe radacini si coincide cu PDF.
|
||||
|
||||
2. Postari directe pe conturi sintetice (MASTERJOB):
|
||||
- `117`: parinte 47 431.79 vs copii 44 795.92 -> diferenta 2 635.87
|
||||
- `5121`: parinte 15 730.61 vs copii net 15 578.45 -> diferenta 152.16
|
||||
Suma postarilor directe = 2 635.87 + 152.16 = **2 788.03**, exact deficitul de la
|
||||
verificarea (c) pe frunze (sold_c - sold_d = 2 788.03). Frunzele nu contin aceste
|
||||
postari, de aceea (c) pica; incluzandu-le (c2, radacini) balanta este inchisa si
|
||||
coincide cu "Totaluri:" = 2 114 811.30.
|
||||
|
||||
Concluzie: nu s-a ajustat nicio data. Verificarile (a), (b), (c2) si cross-check-ul pe
|
||||
clase trec pentru ambele firme; (c) pe frunze pica doar la MASTERJOB din cauza postarilor
|
||||
directe pe sintetice, dovedita prin relatia de mai sus.
|
||||
60
docs/verificare_FUNDATIA.md
Normal file
60
docs/verificare_FUNDATIA.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# Verificare `init_FUNDATIA_2025_12.xlsx`
|
||||
|
||||
Generat de `genereaza_xlsx.py` din `balanta_FUNDATIA.csv`. Randuri de date: 75 (47 BALANTA, 28 FACTURA).
|
||||
|
||||
## 1. Balanta generala (SUM totdeb = SUM totcred)
|
||||
|
||||
- SUM(totdeb) = 7068369.5
|
||||
- SUM(totcred) = 7068369.5
|
||||
- diferenta (totdeb - totcred) = 0.0 -> OK
|
||||
- Totaluri balanta: total_d=6328537.83 total_c=6328537.83 net=0.0
|
||||
- NET xlsx (0.0) vs NET Totaluri (0.0) -> OK
|
||||
- Nota: SUM(totdeb)=7068369.5 difera de Totaluri.total_d=6328537.83 cu 739831.67; suma pe laturi a PDF-ului nu se poate reconstrui din frunze acolo unde SAGA a netat sinteticul (gross-ul parintelui e netat). Netul se pastreaza exact.
|
||||
|
||||
## 2. Conturi frunza din CSV, reprezentate o singura data
|
||||
|
||||
- frunze in CSV: 66
|
||||
- reprezentate in xlsx: 66
|
||||
- conturi pierdute: [] (gol) -> OK
|
||||
- frunze cu mai putin/mai mult de un rand dedicat: [] (gol) -> OK
|
||||
|
||||
## 3. Conturi partener: FACTURA + NEREPARTIZAT = net sintetic
|
||||
|
||||
Formularul scade din randul BALANTA suma randurilor FACTURA de pe acelasi `(cont, acont, latura)` si lasa restul pe partenerul `NEREPARTIZAT`. Deci: `net sintetic - SUM(sold FACTURA cu semn) = analitice sarite + postare directa pe sintetic`.
|
||||
|
||||
| cont | SUM(sold FACTURA) | net sintetic | analitice sarite | postare directa | NEREPARTIZAT asteptat | diferenta | rezultat |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| 401 | -314703.58 | -314703.58 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 4092 | 809.33 | 809.33 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 4111 | 15126.48 | 15126.48 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 4551 | -1571531.33 | -1571531.33 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 461 | 477938.37 | 477938.37 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 462 | -3400771.0 | -3400771.0 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 5121 | 81966.8 | 81966.8 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 5124 | 2492540.28 | 2492540.28 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 5311 | 72433.56 | 72433.56 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
|
||||
Rezultat: OK
|
||||
|
||||
## 4. Analitice sarite (sold pe latura opusa formularului)
|
||||
|
||||
Latura FACTURA e fixa in cod (`:379`): `401,404,462,419,408,4551` -> CREDIT, orice alt cont -> DEBIT. Un analitic cu sold pe latura opusa nu primeste rand FACTURA; ramane in BALANTA si formularul ii pune `NEREPARTIZAT`.
|
||||
|
||||
Niciunul.
|
||||
|
||||
## 5. Lungimi si dubluri
|
||||
|
||||
- cont > 4 sau acont > 4: [] (gol) -> OK
|
||||
- perechi (cont, acont) duplicate la BALANTA: [] (gol) -> OK
|
||||
|
||||
## 6. Randuri de diferenta generate (pct. 13-15)
|
||||
|
||||
Niciunul (toate diferentele nete sunt zero).
|
||||
|
||||
Nota: randurile FACTURA de tip `DIFERENTA SINTETIC` au fost eliminate; diferenta nu se mai inventa, o rezolva formularul prin `NEREPARTIZAT`.
|
||||
|
||||
## Verdict
|
||||
|
||||
TOATE verificarile au trecut.
|
||||
|
||||
Nota: coloana `explicatia` (D/C la FACTURA) a fost folosita doar ca control intern si este goala in xlsx-ul final (capul de tabel o pastreaza).
|
||||
63
docs/verificare_MASTER.md
Normal file
63
docs/verificare_MASTER.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Verificare `init_MASTER_2025_12.xlsx`
|
||||
|
||||
Generat de `genereaza_xlsx.py` din `balanta_MASTERJOB.csv`. Randuri de date: 79 (46 BALANTA, 33 FACTURA).
|
||||
|
||||
## 1. Balanta generala (SUM totdeb = SUM totcred)
|
||||
|
||||
- SUM(totdeb) = 2318592.91
|
||||
- SUM(totcred) = 2318592.91
|
||||
- diferenta (totdeb - totcred) = 0.0 -> OK
|
||||
- Totaluri balanta: total_d=2318572.11 total_c=2318572.11 net=0.0
|
||||
- NET xlsx (0.0) vs NET Totaluri (0.0) -> OK
|
||||
- Nota: SUM(totdeb)=2318592.91 difera de Totaluri.total_d=2318572.11 cu 20.8; suma pe laturi a PDF-ului nu se poate reconstrui din frunze acolo unde SAGA a netat sinteticul (gross-ul parintelui e netat). Netul se pastreaza exact.
|
||||
|
||||
## 2. Conturi frunza din CSV, reprezentate o singura data
|
||||
|
||||
- frunze in CSV: 67
|
||||
- reprezentate in xlsx: 67
|
||||
- conturi pierdute: [] (gol) -> OK
|
||||
- frunze cu mai putin/mai mult de un rand dedicat: [] (gol) -> OK
|
||||
|
||||
## 3. Conturi partener: FACTURA + NEREPARTIZAT = net sintetic
|
||||
|
||||
Formularul scade din randul BALANTA suma randurilor FACTURA de pe acelasi `(cont, acont, latura)` si lasa restul pe partenerul `NEREPARTIZAT`. Deci: `net sintetic - SUM(sold FACTURA cu semn) = analitice sarite + postare directa pe sintetic`.
|
||||
|
||||
| cont | SUM(sold FACTURA) | net sintetic | analitice sarite | postare directa | NEREPARTIZAT asteptat | diferenta | rezultat |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| 401 | -547108.99 | -547108.99 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 4092 | 4.0 | 4.0 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 4111 | 12000.0 | 12000.0 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 4551 | -751724.61 | -751724.61 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 461 | 69289.0 | 69289.0 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 462 | -9810.0 | -9810.0 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 5121 | 15599.25 | 15730.61 | -20.8 | 152.16 | 131.36 | 131.36 | OK |
|
||||
| 5124 | 1060090.96 | 1060090.96 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
| 5311 | 98460.87 | 98460.87 | 0.0 | 0.0 | 0.0 | 0.0 | OK |
|
||||
|
||||
Rezultat: OK
|
||||
|
||||
## 4. Analitice sarite (sold pe latura opusa formularului)
|
||||
|
||||
Latura FACTURA e fixa in cod (`:379`): `401,404,462,419,408,4551` -> CREDIT, orice alt cont -> DEBIT. Un analitic cu sold pe latura opusa nu primeste rand FACTURA; ramane in BALANTA si formularul ii pune `NEREPARTIZAT`.
|
||||
|
||||
| cont | analitic | sold (semnat) | motiv |
|
||||
|---|---|---|---|
|
||||
| 5121 | 5121.01 | -20.8 | sold creditor vs latura D a formularului |
|
||||
|
||||
## 5. Lungimi si dubluri
|
||||
|
||||
- cont > 4 sau acont > 4: [] (gol) -> OK
|
||||
- perechi (cont, acont) duplicate la BALANTA: [] (gol) -> OK
|
||||
|
||||
## 6. Randuri de diferenta generate (pct. 13-15)
|
||||
|
||||
- 117: diferenta neta 2635.87 -> BALANTA (analitic de diferenta)
|
||||
- 5121: diferenta neta 152.16 -> BALANTA (analitic de diferenta, fara FACTURA)
|
||||
|
||||
Nota: randurile FACTURA de tip `DIFERENTA SINTETIC` au fost eliminate; diferenta nu se mai inventa, o rezolva formularul prin `NEREPARTIZAT`.
|
||||
|
||||
## Verdict
|
||||
|
||||
TOATE verificarile au trecut.
|
||||
|
||||
Nota: coloana `explicatia` (D/C la FACTURA) a fost folosita doar ca control intern si este goala in xlsx-ul final (capul de tabel o pastreaza).
|
||||
Reference in New Issue
Block a user