From ccb8fd2cc6e340e1af14a1d4f2727448066ac064 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Tue, 28 Jul 2026 15:12:13 +0300 Subject: [PATCH] Verificare ANAF: perioada de TVA spune ce reprezinta; optiunea intreaba inainte sa modifice SufixPerioadaTVA lipea intervalul direct dupa verdict ("Neplatitor TVA 05/07/2002 - 18/04/2012"), ceea ce se citea ca perioada in care partenerul NU a fost platitor - exact pe dos. Eticheta spune acum ce reprezinta: "inregistrat TVA - ", respectiv "cod TVA anulat din ". Detaliile F4 arata perioada si in ramurile "Nu exista partener cu CUI ..." si "Nu s-a putut citi lista de parteneri", unde lipsea - adica tocmai in cazul in care utilizatorul n-avea de unde sa afle ce inseamna datele din banda de stare. ANAF_ComutaVerificare afisa un mesaj informativ si apoi cerea neconditionat valoarea noua, propunand valoarea curenta. Cand verificarea era oprita local din settings.ini, valoarea propusa era 0, iar un Enter reflex o salva ca optiune de utilizator - ceea ce transforma tacut o oprire locala in oprire pe orice calculator. Mesajul intreaba acum Da/Nu si propune 9 (oprire locala) in loc de 0. reguli_lucru.md pct. 2: istoricul modificarilor sta doar in antetul fisierului, la fel in .prg si in package-urile/procedurile PL/SQL Oracle; in corpul codului doar comentarii functionale, niciodata data/autor/"am modificat". Adaugat docs/sold-neexigibil-reportat-jc2007-jv2007.md: jc2007/jv2007 tin o linie per factura PER PERIOADA (soldul neexigibil se reporteaza lunar), deci orice interogare pe sold se filtreaza pe an/luna. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01DhJwsrFFe1ZNAAtS8Twuti --- docs/reguli_lucru.md | 7 ++++-- .../sold-neexigibil-reportat-jc2007-jv2007.md | 16 +++++++++++++ programe/ocautare.prg | 24 ++++++++++--------- 3 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 docs/sold-neexigibil-reportat-jc2007-jv2007.md diff --git a/docs/reguli_lucru.md b/docs/reguli_lucru.md index 128f9be..2d19c87 100644 --- a/docs/reguli_lucru.md +++ b/docs/reguli_lucru.md @@ -7,8 +7,11 @@ .gitignore ca `docs/diff_runda*.patch`); raman doar local, pe disc. Curatenie: dupa commit se sterg patch-urile de review si backup-urile de lucru (`*.pre_runda*.bak`). -2. Comentarii in cod: NU se pun comentarii in corpul codului (nici la functionalitati noi). - In ANTETUL fisierului se tine o singura intrare CUMULATIVA per functionalitate, in stilul +2. Comentarii in cod: istoricul modificarilor sta DOAR in ANTETUL fisierului, niciodata inline. + Se aplica la fel in `.prg` si in package-urile/procedurile PL/SQL Oracle. + In corpul codului sunt permise numai comentarii FUNCTIONALE (ce face codul si de ce, acolo + unde nu se vede din cod) - niciodata "am adaugat / am modificat / am sters", data sau autor. + In ANTET se tine o singura intrare CUMULATIVA per functionalitate, scurta si compacta, in stilul existent (`*!* DD.MM.YYYY` / `*!* autor` / `*!* ce face, 1-2 fraze`): la revenirea pe aceeasi lucrare se rescrie intrarea, nu se adauga alta. Autorul e persoana care semneaza livrarea (ex. `marius.mutu`) - niciodata "claude" sau alt nume de agent. diff --git a/docs/sold-neexigibil-reportat-jc2007-jv2007.md b/docs/sold-neexigibil-reportat-jc2007-jv2007.md new file mode 100644 index 0000000..b4a4f15 --- /dev/null +++ b/docs/sold-neexigibil-reportat-jc2007-jv2007.md @@ -0,0 +1,16 @@ +# `jc2007` / `jv2007` — reguli + +Masurat pe date (`MARIUSM_AUTO`, 28.07.2026). + +- **O linie per factura PER PERIOADA**, nu una per factura. Cat timp factura are sold de TVA + neexigibil, randul ei se reporteaza luna de luna cu soldul ramas (masurat: acelasi `id_fact` in + 113-115 perioade). Reportarea e in tabela de baza, nu introdusa de view-uri. +- Deci **orice interogare pe sold neexigibil se filtreaza pe `an`/`luna`**. Soldul lunii curente e + cel la zi; fara filtru intorci si facturi stinse demult. +- Nu cauta si in perioade anterioare "ca sa nu scapi nimic" — o factura din mai apare si pe randul + lunii iulie. Ai dubla randurile. +- `tva_incasare` **nu exista pe tabele**, doar pe view-uri (`VJC2025`/`VJV2025`, `vjc2010`/`vjv2010`). +- Coloanele de sold neexigibil, lista completa: `ro24nb/nt`, `ro20nb/nt`, `ro21nb/nt`, `ro11nb/nt`, + `ro19nb/nt`, `ro9nb/nt`, `ro5nb/nt`. **21% si 11% sunt in vigoare din august 2025** si lipsesc din + filtre mai vechi — verifica lista inainte de a refolosi un filtru existent. +- `vjc2010`/`vjv2010` au si ele coloanele `ro11*`/`ro21*`. diff --git a/programe/ocautare.prg b/programe/ocautare.prg index acafaf4..4c904de 100644 --- a/programe/ocautare.prg +++ b/programe/ocautare.prg @@ -51,10 +51,10 @@ *!* 27.07.2026 *!* marius.mutu -*!* verificare ANAF: banda de stare arata si de cand e valabila starea de TVA (data de inceput, -*!* data de incetare sau data anularii din oficiu), doar cand starea difera de ROA, partenerul e -*!* inactiv sau perioada s-a incheiat deja; F4 arata intotdeauna perioada completa si mesajul -*!* primit de la ANAF +*!* verificare ANAF: banda de stare arata si perioada de inregistrare in scopuri de TVA, cu eticheta +*!* explicita ('inregistrat TVA' / 'cod TVA anulat din'), doar cand starea difera de ROA, partenerul e +*!* inactiv sau perioada s-a incheiat deja; F4 arata intotdeauna perioada completa si mesajul primit +*!* de la ANAF, inclusiv cand nu exista partener cu codul corect *!* #DEFINE CRLF CHR(13) + CHR(10) #INCLUDE COMUN\ROA.H @@ -368,8 +368,10 @@ Procedure ANAF_ComutaVerificare ' 3 = ' + ANAF_TextNivel(3) + Chr(13) + ; ' 9 = ' + ANAF_TextNivel(9) + Chr(13) + Chr(13) + ; 'Valorile 0, 1 si 3 va urmaresc pe orice calculator.' - Amessagebox(m.lcMesaj, 0 + 64, lcEticheta) - lnNou = aInputBox('Valoarea noua (0, 1, 3 sau 9):', m.lcEticheta, m.lnNivel) + If Amessagebox(m.lcMesaj + Chr(13) + Chr(13) + 'Modificati valoarea?', 4 + 32, lcEticheta) <> 6 + Return + Endif + lnNou = aInputBox('Valoarea noua (0, 1, 3 sau 9):', m.lcEticheta, Iif(m.lcValIni == '0', 9, m.lnNivel)) If Vartype(m.lnNou) <> 'N' Or !Inlist(m.lnNou, 0, 1, 3, 9) Return Endif @@ -702,11 +704,11 @@ DEFINE CLASS anaf_verif_cautare AS Custom Endif Do Case Case !Empty(toStare.dAnulareScpTVA) - Return ', anulat din ' + Dtoc(toStare.dAnulareScpTVA) + Return ', cod TVA anulat din ' + Dtoc(toStare.dAnulareScpTVA) Case !Empty(toStare.dSfarsitScpTVA) And !Empty(toStare.dInceputScpTVA) - Return ' ' + Dtoc(toStare.dInceputScpTVA) + ' - ' + Dtoc(toStare.dSfarsitScpTVA) + Return ', inregistrat TVA ' + Dtoc(toStare.dInceputScpTVA) + ' - ' + Dtoc(toStare.dSfarsitScpTVA) Case !Empty(toStare.dInceputScpTVA) - Return ' din ' + Dtoc(toStare.dInceputScpTVA) + Return ', inregistrat TVA din ' + Dtoc(toStare.dInceputScpTVA) Endcase Return '' ENDPROC @@ -878,13 +880,13 @@ DEFINE CLASS anaf_verif_cautare AS Custom This.ListaCorecti(@lnCandidati, @lnCandidat, @lcDenPereche, @llEroare) If m.llEroare - Amessagebox(This.AntetDialog(m.lcDenAles, m.lcCodAles) + 'Nu s-a putut citi lista de parteneri.', ; + Amessagebox(This.AntetDialog(m.lcDenAles, m.lcCodAles) + m.lcPerioadaTVA + 'Nu s-a putut citi lista de parteneri.', ; 0 + 64, 'Verificare partener ANAF') Return Endif If m.lnCandidati = 0 - Amessagebox(This.AntetDialog(m.lcDenAles, m.lcCodAles) + ; + Amessagebox(This.AntetDialog(m.lcDenAles, m.lcCodAles) + m.lcPerioadaTVA + ; 'Nu exista partener cu CUI ' + m.lcCodOk + ' (il puteti crea cu butonul Nou).', 0 + 64, 'Verificare partener ANAF') Return Endif