From d440dd91fcb657de2b6aa0cb8285a7ddbcebd5bc Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Tue, 28 Jul 2026 00:50:11 +0300 Subject: [PATCH 1/4] Verificare ANAF: perioada de inregistrare in scopuri de TVA + corectie mesaj fals la CNP/cod invalid L1: perioada de TVA (inceput, sfarsit, anulare din oficiu) si mesajul ANAF integral propagate din cursor pana in banda si in dialogul F4. Banda arata data doar la discordanta, anulare sau perioada incheiata; F4 o arata intotdeauna. L2: clasele de esec CNP si COD_INVALID au text propriu in F4, in loc de mesajul fals 'ANAF nu a raspuns'. Garda Vartype pe parametrul nou tnTipPersoana pentru apelantii cu vechea semnatura (fisier partajat de ROACONT/ROAGEST/ROAFACTURARE). SVN r17910. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01DhJwsrFFe1ZNAAtS8Twuti --- programe/ocautare.prg | 82 ++++++++++++++++++++++++++++++++++++------- programe/validare.prg | 23 ++++++++++-- 2 files changed, 91 insertions(+), 14 deletions(-) diff --git a/programe/ocautare.prg b/programe/ocautare.prg index 33585e0..acafaf4 100644 --- a/programe/ocautare.prg +++ b/programe/ocautare.prg @@ -49,11 +49,18 @@ *!* formularului, daca starea serviciului nu e cunoscuta, pleaca o sonda asincrona care stabileste *!* disponibilitatea fara sa blocheze interfata, iar randul curent asteapta rezultatul ei +*!* 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 + *!* #DEFINE CRLF CHR(13) + CHR(10) #INCLUDE COMUN\ROA.H Procedure ANAF_StarePartener - Lparameters tcCodFiscal, tdData, tlDoarCache, tlNecesitaApel, tlNegasit, tcClasaEsec + Lparameters tcCodFiscal, tdData, tlDoarCache, tlNecesitaApel, tlNegasit, tcClasaEsec, tnTipPersoana Local lcCodFiscal, lcCui, loRezANAF, lcCheieCache, lnI, llValid, loOut, ldData, llNegasit, lcStareServiciu @@ -79,7 +86,8 @@ Procedure ANAF_StarePartener Endif Endfor Endif - If m.llValid And Len(m.lcCui) = 13 + If m.llValid And Len(m.lcCui) = 13 And !(Vartype(m.tnTipPersoana) = 'N' And m.tnTipPersoana = 1) + tcClasaEsec = 'CNP' Return .Null. Endif If !m.llValid @@ -141,6 +149,10 @@ Procedure ANAF_StarePartener Addproperty(loOut, "lInactivANAF", loRezANAF.statusInactivi) Addproperty(loOut, "cDenumireANAF", Alltrim(Nvl(loRezANAF.denumire, ''))) Addproperty(loOut, "lDiscordanta", (loRezANAF.scpTVA <> loOut.lAreRO) Or loRezANAF.statusInactivi) + Addproperty(loOut, "dInceputScpTVA", Iif(Pemstatus(loRezANAF, 'dInceputScpTVA', 5), Nvl(loRezANAF.dInceputScpTVA, {}), {})) + Addproperty(loOut, "dSfarsitScpTVA", Iif(Pemstatus(loRezANAF, 'dSfarsitScpTVA', 5), Nvl(loRezANAF.dSfarsitScpTVA, {}), {})) + Addproperty(loOut, "dAnulareScpTVA", Iif(Pemstatus(loRezANAF, 'dAnulareScpTVA', 5), Nvl(loRezANAF.dAnulareScpTVA, {}), {})) + Addproperty(loOut, "cMesajScpTVA", Iif(Pemstatus(loRezANAF, 'cMesajScpTVA', 5), Alltrim(Nvl(loRezANAF.cMesajScpTVA, '')), '')) Addproperty(loOut, "dData", m.ldData) Return loOut Endproc && ANAF_StarePartener @@ -597,7 +609,7 @@ DEFINE CLASS anaf_verif_cautare AS Custom This.oStare = .Null. This.cCui = '' This.lNegasit = .F. - This.cClasaEsec = '' + This.cClasaEsec = 'COD_INVALID' This.SeteazaLabel(m.lcCodInvalid + ' (F4 = detalii)', .T.) goLog.Log('Cod fiscal invalid: ' + m.lcCodInvalid + ' id_part=' + Transform(m.lnId), 'anaf_verif_cautare') Return .F. @@ -610,7 +622,7 @@ DEFINE CLASS anaf_verif_cautare AS Custom lcClasaEsec = '' This.lVerificareInCurs = .T. Try - loStare = ANAF_StarePartener(m.lcCodFiscal, This.dDataDoc, !m.tlPermiteApel, @llNecesitaApel, @llNegasit, @lcClasaEsec) + loStare = ANAF_StarePartener(m.lcCodFiscal, This.dDataDoc, !m.tlPermiteApel, @llNecesitaApel, @llNegasit, @lcClasaEsec, m.lnTipPersoana) Finally This.lVerificareInCurs = .F. Endtry @@ -645,6 +657,9 @@ DEFINE CLASS anaf_verif_cautare AS Custom This.SeteazaLabel('Cod fiscal nenumeric - nu se poate verifica la ANAF', .F., .T.) goLog.Log('Cod fiscal nenumeric: ' + Alltrim(m.lcCodFiscal) + ' id_part=' + Transform(m.lnId), 'anaf_verif_cautare') Return .F. + Case Isnull(m.loStare) And m.lcClasaEsec == 'CNP' + This.SeteazaLabel('Persoana fizica - CNP corect', .F., .T.) + Return .F. Case Isnull(m.loStare) This.AfiseazaPrompt() Return .F. @@ -676,22 +691,61 @@ DEFINE CLASS anaf_verif_cautare AS Custom ENDPROC PROCEDURE TextStare + Lparameters toStare, tcPerioada + Return Iif(toStare.lPlatitorANAF, 'Platitor TVA', 'Neplatitor TVA') + Nvl(m.tcPerioada, '') + Iif(toStare.lInactivANAF, ', Inactiv', '') + ENDPROC + + PROCEDURE SufixPerioadaTVA Lparameters toStare - Return Iif(toStare.lPlatitorANAF, 'Platitor TVA', 'Neplatitor TVA') + Iif(toStare.lInactivANAF, ', Inactiv', '') + If !(toStare.lDiscordanta Or !Empty(toStare.dAnulareScpTVA) Or (!Empty(toStare.dSfarsitScpTVA) And toStare.dSfarsitScpTVA < Date())) + Return '' + Endif + Do Case + Case !Empty(toStare.dAnulareScpTVA) + Return ', anulat din ' + Dtoc(toStare.dAnulareScpTVA) + Case !Empty(toStare.dSfarsitScpTVA) And !Empty(toStare.dInceputScpTVA) + Return ' ' + Dtoc(toStare.dInceputScpTVA) + ' - ' + Dtoc(toStare.dSfarsitScpTVA) + Case !Empty(toStare.dInceputScpTVA) + Return ' din ' + Dtoc(toStare.dInceputScpTVA) + Endcase + Return '' ENDPROC PROCEDURE TextAnaf Lparameters toStare, tlCuVirgula, tnMaxLen - Local lcCodOk, lcDenANAF, lcDenFull + Local lcCodOk, lcDenANAF, lcDenFull, lcPerioada lcCodOk = Iif(toStare.lPlatitorANAF, 'RO', '') + toStare.cCui lcDenFull = Alltrim(Nvl(toStare.cDenumireANAF, '')) lcDenANAF = lcDenFull If Vartype(m.tnMaxLen) = 'N' And m.tnMaxLen > 0 And Len(m.lcDenFull) > m.tnMaxLen lcDenANAF = Left(m.lcDenFull, m.tnMaxLen) + '...' Endif - Return 'ANAF: ' + This.TextStare(toStare) + ' (' + ; + lcPerioada = This.SufixPerioadaTVA(toStare) + Return 'ANAF: ' + This.TextStare(toStare, m.lcPerioada) + ' (' + ; Iif(Empty(m.lcDenANAF), '', m.lcDenANAF + Iif(m.tlCuVirgula, ', ', ' ')) + m.lcCodOk + ')' + ; - ' la ' + Dtoc(toStare.dData) + Iif(Empty(m.lcPerioada), ' la ' + Dtoc(toStare.dData), '') + ENDPROC + + PROCEDURE TextPerioadaTVA + Lparameters toStare + Local lcTxt + lcTxt = '' + If !Empty(toStare.dInceputScpTVA) + lcTxt = m.lcTxt + 'Inceput inregistrare TVA: ' + Dtoc(toStare.dInceputScpTVA) + Chr(13) + Endif + If !Empty(toStare.dSfarsitScpTVA) + lcTxt = m.lcTxt + 'Sfarsit inregistrare TVA: ' + Dtoc(toStare.dSfarsitScpTVA) + Chr(13) + Endif + If !Empty(toStare.dAnulareScpTVA) + lcTxt = m.lcTxt + 'Anulare din oficiu: ' + Dtoc(toStare.dAnulareScpTVA) + Chr(13) + Endif + If !Empty(toStare.cMesajScpTVA) + lcTxt = m.lcTxt + 'Mesaj ANAF: ' + Alltrim(toStare.cMesajScpTVA) + Chr(13) + Endif + If !Empty(m.lcTxt) + lcTxt = m.lcTxt + Chr(13) + Endif + Return m.lcTxt ENDPROC PROCEDURE AntetDialog @@ -786,7 +840,7 @@ DEFINE CLASS anaf_verif_cautare AS Custom PROCEDURE Detalii Local lcCursor, lcDenAles, lcCodAles, lcCodOk, lcLista, lcMesaj, lnCandidati, lnCandidat, lcDenPereche - Local lnRasp, lnAles, loAles, llEroare + Local lnRasp, lnAles, loAles, llEroare, lcPerioadaTVA If Vartype(This.oForm) <> 'O' Return Endif @@ -800,13 +854,17 @@ DEFINE CLASS anaf_verif_cautare AS Custom Amessagebox(This.AntetDialog(m.lcDenAles, m.lcCodAles) + ; Iif(This.lNegasit, 'Codul fiscal nu exista la ANAF.', ; Iif(This.cClasaEsec == 'COD_NENUMERIC', 'Codul fiscal nu este numeric - nu se poate verifica la ANAF.', ; - 'ANAF nu a raspuns - verificarea a fost sarita.')), ; + Iif(This.cClasaEsec == 'CNP', 'Persoana fizica - CNP corect.', ; + Iif(This.cClasaEsec == 'COD_INVALID', 'Cod fiscal invalid - nu s-a interogat ANAF. Corectati codul in fisa partenerului.', ; + 'ANAF nu a raspuns - verificarea a fost sarita.'))))), ; 0 + 64, 'Verificare partener ANAF') Return Endif + lcPerioadaTVA = This.TextPerioadaTVA(This.oStare) + If This.oStare.lAreRO = This.oStare.lPlatitorANAF - Amessagebox(This.AntetDialog(m.lcDenAles, m.lcCodAles) + ; + Amessagebox(This.AntetDialog(m.lcDenAles, m.lcCodAles) + m.lcPerioadaTVA + ; Iif(This.oStare.lInactivANAF, 'Nu exista alta varianta de partener de ales.', 'Codul fiscal corespunde.'), ; 0 + 64, 'Verificare partener ANAF') Return @@ -833,7 +891,7 @@ DEFINE CLASS anaf_verif_cautare AS Custom This.MarcheazaDocumente() lcLista = This.TextListaCandidati() - lcMesaj = This.AntetDialog(m.lcDenAles, m.lcCodAles) + 'Parteneri ROA cu CUI ' + m.lcCodOk + ':' + Chr(13) + m.lcLista + Chr(13) + ; + lcMesaj = This.AntetDialog(m.lcDenAles, m.lcCodAles) + m.lcPerioadaTVA + 'Parteneri ROA cu CUI ' + m.lcCodOk + ':' + Chr(13) + m.lcLista + Chr(13) + ; 'Da = Pastreaza selectia' + Chr(13) + ; Iif(m.lnCandidati = 1, 'Nu = Alege 1 ' + m.lcDenPereche + ' (ID: ' + Transform(m.lnCandidat) + ')', ; 'Nu = Alege din lista (1-' + Transform(m.lnCandidati) + ')') + Chr(13) + ; diff --git a/programe/validare.prg b/programe/validare.prg index f6214f4..558d45c 100644 --- a/programe/validare.prg +++ b/programe/validare.prg @@ -67,6 +67,12 @@ *!* sonda asincrona de disponibilitate (ANAF_SondaPorneste/AuSositRaspunsul/AReusit/Opreste) verifica in *!* fundal, la nevoie, daca serviciul ANAF a revenit, fara sa blocheze interfata +*!* 27.07.2026 +*!* marius.mutu +*!* ANAF_VerdictDinCursor expune si perioada de inregistrare in scopuri de TVA (inceput, sfarsit, +*!* anulare din oficiu) si mesajul ANAF integral (mesaj_ScpTVA), citite din cursorul deja parsat de +*!* ParseJsonANAFv8; parsarea esuata a datelor de perioada se logheaza + *!* http://ec.europa.eu/taxation_customs/vies/viesquer.do *!* http://localhost/contafinupdate/verificarecod.aspx/verificarecod/verificare/CIF/1879855/MFIN *!* http://localhost/contafinupdate/verificarecod.aspx/verificarecod/verificare/CNP/1810228134187 @@ -1673,6 +1679,10 @@ Function ANAF_VerdictDinCursor Addproperty(loResult, "statusInactivi", Nvl(statusInactivi, .F.)) Addproperty(loResult, "denumire", Nvl(denumire, "")) Addproperty(loResult, "mesaj", Nvl(mesaj, "")) + Addproperty(loResult, "dInceputScpTVA", Nvl(data_inceput_ScpTVA, {})) + Addproperty(loResult, "dSfarsitScpTVA", Nvl(data_sfarsit_ScpTVA, {})) + Addproperty(loResult, "dAnulareScpTVA", Nvl(data_anul_imp_ScpTVA, {})) + Addproperty(loResult, "cMesajScpTVA", Nvl(mesaj_ScpTVA, "")) Else If m.lnReccountTemp = 1 And Empty(denumire) And Nvl(cui, 0) = m.tnCuiCautat tlNegasit = .T. @@ -2062,13 +2072,22 @@ Define Class VerificareANAF As Custom loDate.scpTVA = loInregistrareTVA.scpTVA IF TYPE('loInregistrareTVA.perioade_tva',1) <> "U" - TRY + TRY loDate.data_inceput_ScpTVA = CTOD(loInregistrareTVA.perioade_tva[1].data_inceput_ScpTVA) loDate.data_sfarsit_ScpTVA = CTOD(loInregistrareTVA.perioade_tva[1].data_sfarsit_ScpTVA) loDate.data_anul_imp_ScpTVA = CTOD(loInregistrareTVA.perioade_tva[1].data_anul_imp_ScpTVA) loDate.mesaj_ScpTVA = loInregistrareTVA.perioade_tva[1].mesaj_ScpTVA + IF !Empty(loInregistrareTVA.perioade_tva[1].data_inceput_ScpTVA) And Empty(loDate.data_inceput_ScpTVA) + goLog.Log('ParseJsonANAFv8: data_inceput_ScpTVA neparsabila (' + loInregistrareTVA.perioade_tva[1].data_inceput_ScpTVA + ')', 'ParseJsonANAF') + ENDIF + IF !Empty(loInregistrareTVA.perioade_tva[1].data_sfarsit_ScpTVA) And Empty(loDate.data_sfarsit_ScpTVA) + goLog.Log('ParseJsonANAFv8: data_sfarsit_ScpTVA neparsabila (' + loInregistrareTVA.perioade_tva[1].data_sfarsit_ScpTVA + ')', 'ParseJsonANAF') + ENDIF + IF !Empty(loInregistrareTVA.perioade_tva[1].data_anul_imp_ScpTVA) And Empty(loDate.data_anul_imp_ScpTVA) + goLog.Log('ParseJsonANAFv8: data_anul_imp_ScpTVA neparsabila (' + loInregistrareTVA.perioade_tva[1].data_anul_imp_ScpTVA + ')', 'ParseJsonANAF') + ENDIF CATCH TO loEx - ENDTRY + ENDTRY ENDIF ENDIF From 85ad3dea02e403c9d75ac676be54a8bd6b4835c0 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Tue, 28 Jul 2026 08:23:19 +0300 Subject: [PATCH 2/4] Borderou eFactura: diferenta ignora TVA-ul de taxare inversa Expresia diferentei scade jtva_ti din jtotctva pentru facturile primite. Sonda pe user_tab_columns inainte de construirea SELECT-ului, ca borderoul sa se deschida si daca migrarea DB nu a ajuns inca la client. lcSchema (schema pozitionala) neatinsa. SVN r17913; script DB in DATABASE r17912. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01DhJwsrFFe1ZNAAtS8Twuti --- programe/import_efactura.prg | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/programe/import_efactura.prg b/programe/import_efactura.prg index 30e81cc..ce3249f 100644 --- a/programe/import_efactura.prg +++ b/programe/import_efactura.prg @@ -3,6 +3,12 @@ *!* 13.08.2024 *!* vizImportEFactura + discountfaratva +*!* 28.07.2026 +*!* marius.mutu +*!* borderoul eFactura, facturi primite: diferenta ignora TVA-ul de taxare inversa (coloana +*!* jtva_ti din view-ul anaf_vefactura_primit), ca sa nu mai apara colorate fals facturile +*!* cu 4426=4427; degradare automata daca migrarea DB nu a ajuns inca la client + Procedure importEfacturaPrimite DO vizImportEFactura WITH 'PRIMITE' ENDPROC @@ -18,6 +24,7 @@ PROCEDURE vizImportEFactura Private poFacturi, poFacturiDetalii Local loFrmFacturi As "frm_efactura_import", lcTip, llPrimite Local lcData1, lcFiltru, lcFiltruOriginal, lcOrder, lcSchema, lcgroup, llAfiseaza, llModParam + Local lcExprDiferenta, llAreJtvaTi poFacturi = Null poFacturiDetalii = Null @@ -25,7 +32,14 @@ PROCEDURE vizImportEFactura llPrimite = (m.lcTip = 'PRIMITE') lcTabel = IIF(m.lcTip = 'PRIMITE', 'anaf_vefactura_primit', 'anaf_vefactura_trimis') - + + llAreJtvaTi = .F. + IF goExecutor.oExecuta("select column_name from user_tab_columns where table_name = '" + Upper(m.lcTabel) + "' and column_name = 'JTVA_TI'", 'cColoaneJTva') And Used('cColoaneJTva') + llAreJtvaTi = (Reccount('cColoaneJTva') > 0) + Use In (Select('cColoaneJTva')) + ENDIF + lcExprDiferenta = IIF(m.llAreJtvaTi, [NVL(total_cu_tva,0.00) - (NVL(jtotctva,0.00) - NVL(jtva_ti,0.00)) as diferenta], [NVL(total_cu_tva, 0.00)-NVL(jtotctva, 0.00) as diferenta]) + * FACTURI PRIMITE/TRIMISE lcData1 = '01' + Padl(Int(m.gnLuna),2,'0') + Alltrim(Str(m.gnAn)) TEXT To lcSchema Noshow @@ -33,7 +47,7 @@ ales N(1), id N(20), id_fact N(20), data_act D, data_scad D, numar_act C(30), xf ENDTEXT TEXT To lcSelect TEXTMERGE Noshow -SELECT 0 as ales, id, id_fact, data_act, data_scad, numar_act, xfurnizor, xclient, partener, id_incarcare, id_descarcare, tip_mesaj_raspuns, mesaj_raspuns, data_raspuns, NVL(trimis,0) as trimis, data_trimis, cod_fiscal, cod_fiscal_emitent, cod_fiscal_beneficiar, '' as detalii, total_fara_tva, total_tva, total_tva_ron, total_cu_tva, discount_fara_tva, taxe_fara_tva, valoare_fara_tva, total_de_plata, nume_valuta, test, jtotctva, descriere, detalii_plata, NVL(total_cu_tva, 0.00)-NVL(jtotctva, 0.00) as diferenta, procesat, +SELECT 0 as ales, id, id_fact, data_act, data_scad, numar_act, xfurnizor, xclient, partener, id_incarcare, id_descarcare, tip_mesaj_raspuns, mesaj_raspuns, data_raspuns, NVL(trimis,0) as trimis, data_trimis, cod_fiscal, cod_fiscal_emitent, cod_fiscal_beneficiar, '' as detalii, total_fara_tva, total_tva, total_tva_ron, total_cu_tva, discount_fara_tva, taxe_fara_tva, valoare_fara_tva, total_de_plata, nume_valuta, test, jtotctva, descriere, detalii_plata, <>, procesat, '' as SerieActRoa, CAST(null as Number(14)) as NrActRoa, CAST(null as Number(20)) as idPartRoa, '' as PartenerRoa, '' as codFiscalROA, CAST(null as Number(10)) as idValutaROA, '' as numeValutaROA, CAST(null as Number(16,6)) as cursROA, '' as Cont, '' as acont, 0 as TVAIncasare, '' as Fdoc, CAST(0 as Number(5)) as Id_Fdoc, '' as Nrord, CAST(0 as Number(10)) as id_Lucrare, '' as Contract, CAST(null as Number(10)) as id_ctr, '' Sectie, CAST(0 as Number(10)) as id_Sectie, '' as dst_chlt, CAST(0 as Number(10)) as id_Venchelt, '' as nresp, CAST(0 as Number(10)) as id_responsabil, 0 as completat, 0 as completatdet, creditnote, '' as explicatiaROA From 248ac0e00293ba7df89cfdee07cc36803f17e911 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Tue, 28 Jul 2026 15:11:56 +0300 Subject: [PATCH 3/4] Note contabile: avertizare la salvare cand raman facturi cu TVA la incasare neexigibilizat La salvarea notei, VerificaAvertizareExigibilizareTVA (identica in frm_modific2007 si frm_modific2024) verifica incasarile si platile cu factura pereche completata si avertizeaza daca vreuna dintre facturile lor cu TVA la incasare nu are inca nota de TVA exigibilizat. Candidatii sunt exact cele doua tipare pe care do_adauga_tva_exigibil le trateaza automat (id_factd > 0 cu scc pe 5xx, id_factc > 0 cu scd pe 5xx); facturile deja acoperite de o linie tipnota = 1 din nota curenta sunt suprimate. Soldul neexigibil se citeste dintr-un singur SELECT peste VJC2025/VJV2025, filtrat pe perioada curenta si pe toate cele 14 coloane de cota. La "Da" se apeleaza do_adauga_tva_exigibil NEMODIFICAT, marcand temporar `ales` doar pe liniile candidate si restaurandu-l dupa; programul ramane in formular, ca notele adaugate sa poata fi verificate. Orice esec (optiune, cursor, SQL) se logheaza si lasa salvarea sa continue. Se poate opri din settings.ini [tva] avertizare_exigibilizare=0 sau din optiunea RC_TVA_AVERT_EXIGIB. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01DhJwsrFFe1ZNAAtS8Twuti --- clase/omodificari.vc2 | 368 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 366 insertions(+), 2 deletions(-) diff --git a/clase/omodificari.vc2 b/clase/omodificari.vc2 index bcd3e73..2b930e6 100644 --- a/clase/omodificari.vc2 +++ b/clase/omodificari.vc2 @@ -2359,11 +2359,13 @@ DEFINE CLASS frm_modific2007 AS _frmbase OF "_frm_base.vcx" *m: salveazaxml *m: updateexplicatiesaft *m: valideaza_data + *m: verificaavertizareexigibilizaretva *p: cacont *p: ccont *p: ccontrol *p: cpaymentcode *p: fel_compensare + *p: lavertizatexigibilizare *p: lmodificare *p: lnotanoua *p: lverificare @@ -2390,6 +2392,7 @@ DEFINE CLASS frm_modific2007 AS _frmbase OF "_frm_base.vcx" DoCreate = .T. FontCharSet = 238 Height = 360 + lavertizatexigibilizare = .F. lmodificare = .F. lnotanoua = .F. lverificare = .F. @@ -5035,7 +5038,10 @@ DEFINE CLASS frm_modific2007 AS _frmbase OF "_frm_base.vcx" "Doriti sa continuati?", 4+32, "Note 4426-4428/4428-4427")=6,.T.,.F.) Endif ENDIF - ENDIF + If m.llRet + llRet = This.VerificaAvertizareExigibilizareTVA() + Endif + ENDIF *!* modificare v 2.4.4 ^ RETURN m.llRet @@ -5409,6 +5415,182 @@ DEFINE CLASS frm_modific2007 AS _frmbase OF "_frm_base.vcx" ENDPROC + PROCEDURE VerificaAvertizareExigibilizareTVA + Local llKillSwitch, lcValOpt, lcSql, lcCursor, lnSucces, lnNrFacturi, lcMesaj, lnRasp + Local lnRecno, lnCntSalvat, lnJ + Local Array laAlesOrig(1,2) + + If !(Type('tact.id_factd') = 'N' And Type('tact.id_factc') = 'N' And Type('tact.id_fact') = 'N' And Type('tact.tipnota') = 'N' And Type('tact.ales') = 'L' And Type('tact.scd') = 'C' And Type('tact.scc') = 'C') + Return .T. + Endif + + If This.lAvertizatExigibilizare + Return .T. + Endif + + Try + llKillSwitch = (Alltrim(Nvl(getini(gcGeneralIniFile, 'tva', 'avertizare_exigibilizare'), '')) == '0') + If !llKillSwitch And 'OINIT_OPTIUNI' $ Upper(Set('Procedure')) + lcValOpt = '' + If Used('crsOptiuniUtilizator') + lcValOpt = Alltrim(Nvl(citeste_optiune_utilizator('RC_TVA_AVERT_EXIGIB'), '')) + Endif + If Empty(lcValOpt) And Used('crsOptiuni') + lcValOpt = Alltrim(Nvl(citeste_optiune('RC_TVA_AVERT_EXIGIB'), '')) + Endif + llKillSwitch = (lcValOpt == '0') + Endif + If llKillSwitch + Return .T. + Endif + Catch + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: eroare la citirea optiunii, verificare sarita', 'VerificaAvertizareExigibilizareTVA') + Endif + Return .T. + Endtry + + Try + Select Distinct id_factd As id_fact From tact Where id_factd > 0 And Left(Nvl(scc,''),1) = '5' Into Cursor crsCandidDTVAEx Readwrite + Select Distinct id_factc As id_fact From tact Where id_factc > 0 And Left(Nvl(scd,''),1) = '5' Into Cursor crsCandidCTVAEx Readwrite + Select id_fact From crsCandidDTVAEx Union Select id_fact From crsCandidCTVAEx Into Cursor crsCandidTVAEx Readwrite + Use In crsCandidDTVAEx + Use In crsCandidCTVAEx + Catch + If Used('crsCandidDTVAEx') + Use In crsCandidDTVAEx + Endif + If Used('crsCandidCTVAEx') + Use In crsCandidCTVAEx + Endif + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: eroare la colectarea facturilor din nota, verificare sarita', 'VerificaAvertizareExigibilizareTVA') + Endif + Return .T. + Endtry + + If Reccount('crsCandidTVAEx') = 0 + Use In crsCandidTVAEx + Return .T. + Endif + + Try + Select Distinct id_fact From tact Where tipnota = 1 And id_fact > 0 Into Cursor crsAcopTVAEx Readwrite + Select crsCandidTVAEx.id_fact From crsCandidTVAEx Left Join crsAcopTVAEx On crsCandidTVAEx.id_fact = crsAcopTVAEx.id_fact Where Isnull(crsAcopTVAEx.id_fact) Into Cursor crsNeacopTVAEx Readwrite + Use In crsCandidTVAEx + Use In crsAcopTVAEx + Catch + If Used('crsCandidTVAEx') + Use In crsCandidTVAEx + Endif + If Used('crsAcopTVAEx') + Use In crsAcopTVAEx + Endif + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: eroare la suprimarea platilor acoperite, verificare sarita', 'VerificaAvertizareExigibilizareTVA') + Endif + Return .T. + Endtry + + If Reccount('crsNeacopTVAEx') = 0 + Use In crsNeacopTVAEx + Return .T. + Endif + + If Type('goExecutor') <> 'O' Or goExecutor.nHandle <= 0 + Use In crsNeacopTVAEx + Return .T. + Endif + + lcSql = ; + [SELECT id_fact FROM VJC2025 WHERE an = ] + Transform(gnAn) + [ AND luna = ] + Transform(gnLuna) + ; + [ AND tva_incasare = 1 AND (ro24nb+ro24nt+ro20nb+ro20nt+ro21nb+ro21nt+ro11nb+ro11nt+ro19nb+ro19nt+ro9nb+ro9nt+ro5nb+ro5nt) <> 0] + ; + [ UNION SELECT id_fact FROM VJV2025 WHERE an = ] + Transform(gnAn) + [ AND luna = ] + Transform(gnLuna) + ; + [ AND tva_incasare = 1 AND (ro24nb+ro24nt+ro20nb+ro20nt+ro21nb+ro21nt+ro11nb+ro11nt+ro19nb+ro19nt+ro9nb+ro9nt+ro5nb+ro5nt) <> 0] + lcCursor = Sys(2015) + lnSucces = 0 + Try + lnSucces = goExecutor.oExecute(lcSql, lcCursor, .F., '', 0, .F., .F., .F.) + Catch + lnSucces = -1 + Endtry + + If lnSucces < 0 + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: interogare esuata - ' + Nvl(goExecutor.cEroare,''), 'VerificaAvertizareExigibilizareTVA') + Endif + Use In crsNeacopTVAEx + If Used(lcCursor) + Use In (lcCursor) + Endif + Return .T. + Endif + + Try + Select crsNeacopTVAEx.id_fact From crsNeacopTVAEx Inner Join (lcCursor) tvaex On crsNeacopTVAEx.id_fact = tvaex.id_fact Into Cursor crsFinalTVAEx Readwrite + Catch + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: eroare la intersectia locala, verificare sarita', 'VerificaAvertizareExigibilizareTVA') + Endif + Use In crsNeacopTVAEx + If Used(lcCursor) + Use In (lcCursor) + Endif + Return .T. + Endtry + + Use In crsNeacopTVAEx + If Used(lcCursor) + Use In (lcCursor) + Endif + + lnNrFacturi = Reccount('crsFinalTVAEx') + If lnNrFacturi = 0 + Use In crsFinalTVAEx + Return .T. + Endif + + Index On id_fact Tag id_fact + + lcMesaj = 'Exista ' + Transform(lnNrFacturi) + ' facturi cu TVA la incasare pentru care nu s-a adaugat nota de TVA exigibilizat.' + Chr(13) + Chr(13) + ; + 'Da = adaugati acum notele de TVA exigibilizat si ramaneti in formular, ca sa le verificati.' + Chr(13) + ; + 'Nu = continuati salvarea fara sa adaugati notele.' + Chr(13) + ; + 'Anulare = renuntati, nu salvati.' + lnRasp = Amessagebox(lcMesaj, 3+32, 'TVA la incasare - exigibilizare') + This.lAvertizatExigibilizare = (lnRasp <> 2) + + If lnRasp = 6 + Select tact + lnRecno = Recno() + lnCntSalvat = 0 + Dimension laAlesOrig(Reccount('tact'), 2) + Scan + lnCntSalvat = lnCntSalvat + 1 + laAlesOrig(lnCntSalvat, 1) = Recno() + laAlesOrig(lnCntSalvat, 2) = ales + Replace ales With (id_factd > 0 And Left(Nvl(scc,''),1) = '5' And Seek(id_factd, 'crsFinalTVAEx')) Or (id_factc > 0 And Left(Nvl(scd,''),1) = '5' And Seek(id_factc, 'crsFinalTVAEx')) + Endscan + Thisform.do_adauga_tva_exigibil() + Select tact + For lnJ = 1 To lnCntSalvat + Try + Go laAlesOrig(lnJ, 1) + Replace ales With laAlesOrig(lnJ, 2) + Catch + Endtry + Endfor + Try + Go lnRecno + Catch + Go Top + Endtry + Endif + + Use In crsFinalTVAEx + + Return (lnRasp = 7) + ENDPROC + PROCEDURE cmdSelect.Click Local lnRecno Select tAct @@ -6583,11 +6765,13 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" *m: updateexplicatiesaft *m: updateexplicatiesaftrul *m: valideaza_data + *m: verificaavertizareexigibilizaretva *p: cacont *p: ccont *p: ccontrol *p: cpaymentcode *p: fel_compensare + *p: lavertizatexigibilizare *p: leditare *p: lmodificare *p: lnotanoua @@ -6617,6 +6801,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" DoCreate = .T. FontCharSet = 238 Height = 508 + lavertizatexigibilizare = .F. leditare = .F. lmodificare = .F. lnotanoua = .F. @@ -13170,7 +13355,10 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" "Doriti sa continuati?", 4+32, "Note 4426-4428/4428-4427")=6,.T.,.F.) Endif ENDIF - ENDIF + If m.llRet + llRet = This.VerificaAvertizareExigibilizareTVA() + Endif + ENDIF *!* modificare v 2.4.4 ^ RETURN m.llRet @@ -13630,6 +13818,182 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx" ENDPROC + PROCEDURE VerificaAvertizareExigibilizareTVA + Local llKillSwitch, lcValOpt, lcSql, lcCursor, lnSucces, lnNrFacturi, lcMesaj, lnRasp + Local lnRecno, lnCntSalvat, lnJ + Local Array laAlesOrig(1,2) + + If !(Type('tact.id_factd') = 'N' And Type('tact.id_factc') = 'N' And Type('tact.id_fact') = 'N' And Type('tact.tipnota') = 'N' And Type('tact.ales') = 'L' And Type('tact.scd') = 'C' And Type('tact.scc') = 'C') + Return .T. + Endif + + If This.lAvertizatExigibilizare + Return .T. + Endif + + Try + llKillSwitch = (Alltrim(Nvl(getini(gcGeneralIniFile, 'tva', 'avertizare_exigibilizare'), '')) == '0') + If !llKillSwitch And 'OINIT_OPTIUNI' $ Upper(Set('Procedure')) + lcValOpt = '' + If Used('crsOptiuniUtilizator') + lcValOpt = Alltrim(Nvl(citeste_optiune_utilizator('RC_TVA_AVERT_EXIGIB'), '')) + Endif + If Empty(lcValOpt) And Used('crsOptiuni') + lcValOpt = Alltrim(Nvl(citeste_optiune('RC_TVA_AVERT_EXIGIB'), '')) + Endif + llKillSwitch = (lcValOpt == '0') + Endif + If llKillSwitch + Return .T. + Endif + Catch + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: eroare la citirea optiunii, verificare sarita', 'VerificaAvertizareExigibilizareTVA') + Endif + Return .T. + Endtry + + Try + Select Distinct id_factd As id_fact From tact Where id_factd > 0 And Left(Nvl(scc,''),1) = '5' Into Cursor crsCandidDTVAEx Readwrite + Select Distinct id_factc As id_fact From tact Where id_factc > 0 And Left(Nvl(scd,''),1) = '5' Into Cursor crsCandidCTVAEx Readwrite + Select id_fact From crsCandidDTVAEx Union Select id_fact From crsCandidCTVAEx Into Cursor crsCandidTVAEx Readwrite + Use In crsCandidDTVAEx + Use In crsCandidCTVAEx + Catch + If Used('crsCandidDTVAEx') + Use In crsCandidDTVAEx + Endif + If Used('crsCandidCTVAEx') + Use In crsCandidCTVAEx + Endif + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: eroare la colectarea facturilor din nota, verificare sarita', 'VerificaAvertizareExigibilizareTVA') + Endif + Return .T. + Endtry + + If Reccount('crsCandidTVAEx') = 0 + Use In crsCandidTVAEx + Return .T. + Endif + + Try + Select Distinct id_fact From tact Where tipnota = 1 And id_fact > 0 Into Cursor crsAcopTVAEx Readwrite + Select crsCandidTVAEx.id_fact From crsCandidTVAEx Left Join crsAcopTVAEx On crsCandidTVAEx.id_fact = crsAcopTVAEx.id_fact Where Isnull(crsAcopTVAEx.id_fact) Into Cursor crsNeacopTVAEx Readwrite + Use In crsCandidTVAEx + Use In crsAcopTVAEx + Catch + If Used('crsCandidTVAEx') + Use In crsCandidTVAEx + Endif + If Used('crsAcopTVAEx') + Use In crsAcopTVAEx + Endif + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: eroare la suprimarea platilor acoperite, verificare sarita', 'VerificaAvertizareExigibilizareTVA') + Endif + Return .T. + Endtry + + If Reccount('crsNeacopTVAEx') = 0 + Use In crsNeacopTVAEx + Return .T. + Endif + + If Type('goExecutor') <> 'O' Or goExecutor.nHandle <= 0 + Use In crsNeacopTVAEx + Return .T. + Endif + + lcSql = ; + [SELECT id_fact FROM VJC2025 WHERE an = ] + Transform(gnAn) + [ AND luna = ] + Transform(gnLuna) + ; + [ AND tva_incasare = 1 AND (ro24nb+ro24nt+ro20nb+ro20nt+ro21nb+ro21nt+ro11nb+ro11nt+ro19nb+ro19nt+ro9nb+ro9nt+ro5nb+ro5nt) <> 0] + ; + [ UNION SELECT id_fact FROM VJV2025 WHERE an = ] + Transform(gnAn) + [ AND luna = ] + Transform(gnLuna) + ; + [ AND tva_incasare = 1 AND (ro24nb+ro24nt+ro20nb+ro20nt+ro21nb+ro21nt+ro11nb+ro11nt+ro19nb+ro19nt+ro9nb+ro9nt+ro5nb+ro5nt) <> 0] + lcCursor = Sys(2015) + lnSucces = 0 + Try + lnSucces = goExecutor.oExecute(lcSql, lcCursor, .F., '', 0, .F., .F., .F.) + Catch + lnSucces = -1 + Endtry + + If lnSucces < 0 + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: interogare esuata - ' + Nvl(goExecutor.cEroare,''), 'VerificaAvertizareExigibilizareTVA') + Endif + Use In crsNeacopTVAEx + If Used(lcCursor) + Use In (lcCursor) + Endif + Return .T. + Endif + + Try + Select crsNeacopTVAEx.id_fact From crsNeacopTVAEx Inner Join (lcCursor) tvaex On crsNeacopTVAEx.id_fact = tvaex.id_fact Into Cursor crsFinalTVAEx Readwrite + Catch + If Type('goLog') = 'O' + goLog.Log('Avertizare exigibilizare TVA la incasare: eroare la intersectia locala, verificare sarita', 'VerificaAvertizareExigibilizareTVA') + Endif + Use In crsNeacopTVAEx + If Used(lcCursor) + Use In (lcCursor) + Endif + Return .T. + Endtry + + Use In crsNeacopTVAEx + If Used(lcCursor) + Use In (lcCursor) + Endif + + lnNrFacturi = Reccount('crsFinalTVAEx') + If lnNrFacturi = 0 + Use In crsFinalTVAEx + Return .T. + Endif + + Index On id_fact Tag id_fact + + lcMesaj = 'Exista ' + Transform(lnNrFacturi) + ' facturi cu TVA la incasare pentru care nu s-a adaugat nota de TVA exigibilizat.' + Chr(13) + Chr(13) + ; + 'Da = adaugati acum notele de TVA exigibilizat si ramaneti in formular, ca sa le verificati.' + Chr(13) + ; + 'Nu = continuati salvarea fara sa adaugati notele.' + Chr(13) + ; + 'Anulare = renuntati, nu salvati.' + lnRasp = Amessagebox(lcMesaj, 3+32, 'TVA la incasare - exigibilizare') + This.lAvertizatExigibilizare = (lnRasp <> 2) + + If lnRasp = 6 + Select tact + lnRecno = Recno() + lnCntSalvat = 0 + Dimension laAlesOrig(Reccount('tact'), 2) + Scan + lnCntSalvat = lnCntSalvat + 1 + laAlesOrig(lnCntSalvat, 1) = Recno() + laAlesOrig(lnCntSalvat, 2) = ales + Replace ales With (id_factd > 0 And Left(Nvl(scc,''),1) = '5' And Seek(id_factd, 'crsFinalTVAEx')) Or (id_factc > 0 And Left(Nvl(scd,''),1) = '5' And Seek(id_factc, 'crsFinalTVAEx')) + Endscan + Thisform.do_adauga_tva_exigibil() + Select tact + For lnJ = 1 To lnCntSalvat + Try + Go laAlesOrig(lnJ, 1) + Replace ales With laAlesOrig(lnJ, 2) + Catch + Endtry + Endfor + Try + Go lnRecno + Catch + Go Top + Endtry + Endif + + Use In crsFinalTVAEx + + Return (lnRasp = 7) + ENDPROC + PROCEDURE But_modificaR.Click Local lcRul From ccb8fd2cc6e340e1af14a1d4f2727448066ac064 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Tue, 28 Jul 2026 15:12:13 +0300 Subject: [PATCH 4/4] 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