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
<de la> - <pana la>", respectiv "cod TVA anulat din <data>". 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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DhJwsrFFe1ZNAAtS8Twuti
This commit is contained in:
2026-07-28 15:12:13 +03:00
parent 248ac0e002
commit ccb8fd2cc6
3 changed files with 34 additions and 13 deletions

View File

@@ -7,8 +7,11 @@
.gitignore ca `docs/diff_runda*.patch`); raman doar local, pe disc. .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 Curatenie: dupa commit se sterg patch-urile de review si backup-urile de lucru
(`*.pre_runda*.bak`). (`*.pre_runda*.bak`).
2. Comentarii in cod: NU se pun comentarii in corpul codului (nici la functionalitati noi). 2. Comentarii in cod: istoricul modificarilor sta DOAR in ANTETUL fisierului, niciodata inline.
In ANTETUL fisierului se tine o singura intrare CUMULATIVA per functionalitate, in stilul 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 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 lucrare se rescrie intrarea, nu se adauga alta. Autorul e persoana care semneaza livrarea
(ex. `marius.mutu`) - niciodata "claude" sau alt nume de agent. (ex. `marius.mutu`) - niciodata "claude" sau alt nume de agent.

View File

@@ -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*`.

View File

@@ -51,10 +51,10 @@
*!* 27.07.2026 *!* 27.07.2026
*!* marius.mutu *!* marius.mutu
*!* verificare ANAF: banda de stare arata si de cand e valabila starea de TVA (data de inceput, *!* verificare ANAF: banda de stare arata si perioada de inregistrare in scopuri de TVA, cu eticheta
*!* data de incetare sau data anularii din oficiu), doar cand starea difera de ROA, partenerul e *!* 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 *!* inactiv sau perioada s-a incheiat deja; F4 arata intotdeauna perioada completa si mesajul primit
*!* primit de la ANAF *!* de la ANAF, inclusiv cand nu exista partener cu codul corect
*!* #DEFINE CRLF CHR(13) + CHR(10) *!* #DEFINE CRLF CHR(13) + CHR(10)
#INCLUDE COMUN\ROA.H #INCLUDE COMUN\ROA.H
@@ -368,8 +368,10 @@ Procedure ANAF_ComutaVerificare
' 3 = ' + ANAF_TextNivel(3) + Chr(13) + ; ' 3 = ' + ANAF_TextNivel(3) + Chr(13) + ;
' 9 = ' + ANAF_TextNivel(9) + Chr(13) + Chr(13) + ; ' 9 = ' + ANAF_TextNivel(9) + Chr(13) + Chr(13) + ;
'Valorile 0, 1 si 3 va urmaresc pe orice calculator.' 'Valorile 0, 1 si 3 va urmaresc pe orice calculator.'
Amessagebox(m.lcMesaj, 0 + 64, lcEticheta) If Amessagebox(m.lcMesaj + Chr(13) + Chr(13) + 'Modificati valoarea?', 4 + 32, lcEticheta) <> 6
lnNou = aInputBox('Valoarea noua (0, 1, 3 sau 9):', m.lcEticheta, m.lnNivel) 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) If Vartype(m.lnNou) <> 'N' Or !Inlist(m.lnNou, 0, 1, 3, 9)
Return Return
Endif Endif
@@ -702,11 +704,11 @@ DEFINE CLASS anaf_verif_cautare AS Custom
Endif Endif
Do Case Do Case
Case !Empty(toStare.dAnulareScpTVA) 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) 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) Case !Empty(toStare.dInceputScpTVA)
Return ' din ' + Dtoc(toStare.dInceputScpTVA) Return ', inregistrat TVA din ' + Dtoc(toStare.dInceputScpTVA)
Endcase Endcase
Return '' Return ''
ENDPROC ENDPROC
@@ -878,13 +880,13 @@ DEFINE CLASS anaf_verif_cautare AS Custom
This.ListaCorecti(@lnCandidati, @lnCandidat, @lcDenPereche, @llEroare) This.ListaCorecti(@lnCandidati, @lnCandidat, @lcDenPereche, @llEroare)
If m.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') 0 + 64, 'Verificare partener ANAF')
Return Return
Endif Endif
If m.lnCandidati = 0 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') 'Nu exista partener cu CUI ' + m.lcCodOk + ' (il puteti crea cu butonul Nou).', 0 + 64, 'Verificare partener ANAF')
Return Return
Endif Endif