Merge claude/anaf-tva-efactura: avertizare exigibilizare TVA, verificare ANAF

This commit is contained in:
2026-07-28 15:12:58 +03:00
6 changed files with 500 additions and 24 deletions

View File

@@ -2359,11 +2359,13 @@ DEFINE CLASS frm_modific2007 AS _frmbase OF "_frm_base.vcx"
*m: salveazaxml *m: salveazaxml
*m: updateexplicatiesaft *m: updateexplicatiesaft
*m: valideaza_data *m: valideaza_data
*m: verificaavertizareexigibilizaretva
*p: cacont *p: cacont
*p: ccont *p: ccont
*p: ccontrol *p: ccontrol
*p: cpaymentcode *p: cpaymentcode
*p: fel_compensare *p: fel_compensare
*p: lavertizatexigibilizare
*p: lmodificare *p: lmodificare
*p: lnotanoua *p: lnotanoua
*p: lverificare *p: lverificare
@@ -2390,6 +2392,7 @@ DEFINE CLASS frm_modific2007 AS _frmbase OF "_frm_base.vcx"
DoCreate = .T. DoCreate = .T.
FontCharSet = 238 FontCharSet = 238
Height = 360 Height = 360
lavertizatexigibilizare = .F.
lmodificare = .F. lmodificare = .F.
lnotanoua = .F. lnotanoua = .F.
lverificare = .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.) "Doriti sa continuati?", 4+32, "Note 4426-4428/4428-4427")=6,.T.,.F.)
Endif Endif
ENDIF ENDIF
ENDIF If m.llRet
llRet = This.VerificaAvertizareExigibilizareTVA()
Endif
ENDIF
*!* modificare v 2.4.4 ^ *!* modificare v 2.4.4 ^
RETURN m.llRet RETURN m.llRet
@@ -5409,6 +5415,182 @@ DEFINE CLASS frm_modific2007 AS _frmbase OF "_frm_base.vcx"
ENDPROC 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 PROCEDURE cmdSelect.Click
Local lnRecno Local lnRecno
Select tAct Select tAct
@@ -6583,11 +6765,13 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
*m: updateexplicatiesaft *m: updateexplicatiesaft
*m: updateexplicatiesaftrul *m: updateexplicatiesaftrul
*m: valideaza_data *m: valideaza_data
*m: verificaavertizareexigibilizaretva
*p: cacont *p: cacont
*p: ccont *p: ccont
*p: ccontrol *p: ccontrol
*p: cpaymentcode *p: cpaymentcode
*p: fel_compensare *p: fel_compensare
*p: lavertizatexigibilizare
*p: leditare *p: leditare
*p: lmodificare *p: lmodificare
*p: lnotanoua *p: lnotanoua
@@ -6617,6 +6801,7 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
DoCreate = .T. DoCreate = .T.
FontCharSet = 238 FontCharSet = 238
Height = 508 Height = 508
lavertizatexigibilizare = .F.
leditare = .F. leditare = .F.
lmodificare = .F. lmodificare = .F.
lnotanoua = .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.) "Doriti sa continuati?", 4+32, "Note 4426-4428/4428-4427")=6,.T.,.F.)
Endif Endif
ENDIF ENDIF
ENDIF If m.llRet
llRet = This.VerificaAvertizareExigibilizareTVA()
Endif
ENDIF
*!* modificare v 2.4.4 ^ *!* modificare v 2.4.4 ^
RETURN m.llRet RETURN m.llRet
@@ -13630,6 +13818,182 @@ DEFINE CLASS frm_modific2024 AS _frmbase OF "_frm_base.vcx"
ENDPROC 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 PROCEDURE But_modificaR.Click
Local lcRul Local lcRul

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

@@ -3,6 +3,12 @@
*!* 13.08.2024 *!* 13.08.2024
*!* vizImportEFactura + discountfaratva *!* 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 Procedure importEfacturaPrimite
DO vizImportEFactura WITH 'PRIMITE' DO vizImportEFactura WITH 'PRIMITE'
ENDPROC ENDPROC
@@ -18,6 +24,7 @@ PROCEDURE vizImportEFactura
Private poFacturi, poFacturiDetalii Private poFacturi, poFacturiDetalii
Local loFrmFacturi As "frm_efactura_import", lcTip, llPrimite Local loFrmFacturi As "frm_efactura_import", lcTip, llPrimite
Local lcData1, lcFiltru, lcFiltruOriginal, lcOrder, lcSchema, lcgroup, llAfiseaza, llModParam Local lcData1, lcFiltru, lcFiltruOriginal, lcOrder, lcSchema, lcgroup, llAfiseaza, llModParam
Local lcExprDiferenta, llAreJtvaTi
poFacturi = Null poFacturi = Null
poFacturiDetalii = Null poFacturiDetalii = Null
@@ -25,7 +32,14 @@ PROCEDURE vizImportEFactura
llPrimite = (m.lcTip = 'PRIMITE') llPrimite = (m.lcTip = 'PRIMITE')
lcTabel = IIF(m.lcTip = 'PRIMITE', 'anaf_vefactura_primit', 'anaf_vefactura_trimis') 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 * FACTURI PRIMITE/TRIMISE
lcData1 = '01' + Padl(Int(m.gnLuna),2,'0') + Alltrim(Str(m.gnAn)) lcData1 = '01' + Padl(Int(m.gnLuna),2,'0') + Alltrim(Str(m.gnAn))
TEXT To lcSchema Noshow 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 ENDTEXT
TEXT To lcSelect TEXTMERGE Noshow 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, <<m.lcExprDiferenta>>, 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 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, '' 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 '' 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

View File

@@ -49,11 +49,18 @@
*!* formularului, daca starea serviciului nu e cunoscuta, pleaca o sonda asincrona care stabileste *!* formularului, daca starea serviciului nu e cunoscuta, pleaca o sonda asincrona care stabileste
*!* disponibilitatea fara sa blocheze interfata, iar randul curent asteapta rezultatul ei *!* disponibilitatea fara sa blocheze interfata, iar randul curent asteapta rezultatul ei
*!* 27.07.2026
*!* marius.mutu
*!* 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) *!* #DEFINE CRLF CHR(13) + CHR(10)
#INCLUDE COMUN\ROA.H #INCLUDE COMUN\ROA.H
Procedure ANAF_StarePartener 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 Local lcCodFiscal, lcCui, loRezANAF, lcCheieCache, lnI, llValid, loOut, ldData, llNegasit, lcStareServiciu
@@ -79,7 +86,8 @@ Procedure ANAF_StarePartener
Endif Endif
Endfor Endfor
Endif 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. Return .Null.
Endif Endif
If !m.llValid If !m.llValid
@@ -141,6 +149,10 @@ Procedure ANAF_StarePartener
Addproperty(loOut, "lInactivANAF", loRezANAF.statusInactivi) Addproperty(loOut, "lInactivANAF", loRezANAF.statusInactivi)
Addproperty(loOut, "cDenumireANAF", Alltrim(Nvl(loRezANAF.denumire, ''))) Addproperty(loOut, "cDenumireANAF", Alltrim(Nvl(loRezANAF.denumire, '')))
Addproperty(loOut, "lDiscordanta", (loRezANAF.scpTVA <> loOut.lAreRO) Or loRezANAF.statusInactivi) 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) Addproperty(loOut, "dData", m.ldData)
Return loOut Return loOut
Endproc && ANAF_StarePartener Endproc && ANAF_StarePartener
@@ -356,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
@@ -597,7 +611,7 @@ DEFINE CLASS anaf_verif_cautare AS Custom
This.oStare = .Null. This.oStare = .Null.
This.cCui = '' This.cCui = ''
This.lNegasit = .F. This.lNegasit = .F.
This.cClasaEsec = '' This.cClasaEsec = 'COD_INVALID'
This.SeteazaLabel(m.lcCodInvalid + ' (F4 = detalii)', .T.) This.SeteazaLabel(m.lcCodInvalid + ' (F4 = detalii)', .T.)
goLog.Log('Cod fiscal invalid: ' + m.lcCodInvalid + ' id_part=' + Transform(m.lnId), 'anaf_verif_cautare') goLog.Log('Cod fiscal invalid: ' + m.lcCodInvalid + ' id_part=' + Transform(m.lnId), 'anaf_verif_cautare')
Return .F. Return .F.
@@ -610,7 +624,7 @@ DEFINE CLASS anaf_verif_cautare AS Custom
lcClasaEsec = '' lcClasaEsec = ''
This.lVerificareInCurs = .T. This.lVerificareInCurs = .T.
Try 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 Finally
This.lVerificareInCurs = .F. This.lVerificareInCurs = .F.
Endtry Endtry
@@ -645,6 +659,9 @@ DEFINE CLASS anaf_verif_cautare AS Custom
This.SeteazaLabel('Cod fiscal nenumeric - nu se poate verifica la ANAF', .F., .T.) 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') goLog.Log('Cod fiscal nenumeric: ' + Alltrim(m.lcCodFiscal) + ' id_part=' + Transform(m.lnId), 'anaf_verif_cautare')
Return .F. Return .F.
Case Isnull(m.loStare) And m.lcClasaEsec == 'CNP'
This.SeteazaLabel('Persoana fizica - CNP corect', .F., .T.)
Return .F.
Case Isnull(m.loStare) Case Isnull(m.loStare)
This.AfiseazaPrompt() This.AfiseazaPrompt()
Return .F. Return .F.
@@ -676,22 +693,61 @@ DEFINE CLASS anaf_verif_cautare AS Custom
ENDPROC ENDPROC
PROCEDURE TextStare 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 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 ', cod TVA anulat din ' + Dtoc(toStare.dAnulareScpTVA)
Case !Empty(toStare.dSfarsitScpTVA) And !Empty(toStare.dInceputScpTVA)
Return ', inregistrat TVA ' + Dtoc(toStare.dInceputScpTVA) + ' - ' + Dtoc(toStare.dSfarsitScpTVA)
Case !Empty(toStare.dInceputScpTVA)
Return ', inregistrat TVA din ' + Dtoc(toStare.dInceputScpTVA)
Endcase
Return ''
ENDPROC ENDPROC
PROCEDURE TextAnaf PROCEDURE TextAnaf
Lparameters toStare, tlCuVirgula, tnMaxLen Lparameters toStare, tlCuVirgula, tnMaxLen
Local lcCodOk, lcDenANAF, lcDenFull Local lcCodOk, lcDenANAF, lcDenFull, lcPerioada
lcCodOk = Iif(toStare.lPlatitorANAF, 'RO', '') + toStare.cCui lcCodOk = Iif(toStare.lPlatitorANAF, 'RO', '') + toStare.cCui
lcDenFull = Alltrim(Nvl(toStare.cDenumireANAF, '')) lcDenFull = Alltrim(Nvl(toStare.cDenumireANAF, ''))
lcDenANAF = lcDenFull lcDenANAF = lcDenFull
If Vartype(m.tnMaxLen) = 'N' And m.tnMaxLen > 0 And Len(m.lcDenFull) > m.tnMaxLen If Vartype(m.tnMaxLen) = 'N' And m.tnMaxLen > 0 And Len(m.lcDenFull) > m.tnMaxLen
lcDenANAF = Left(m.lcDenFull, m.tnMaxLen) + '...' lcDenANAF = Left(m.lcDenFull, m.tnMaxLen) + '...'
Endif 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 + ')' + ; 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 ENDPROC
PROCEDURE AntetDialog PROCEDURE AntetDialog
@@ -786,7 +842,7 @@ DEFINE CLASS anaf_verif_cautare AS Custom
PROCEDURE Detalii PROCEDURE Detalii
Local lcCursor, lcDenAles, lcCodAles, lcCodOk, lcLista, lcMesaj, lnCandidati, lnCandidat, lcDenPereche 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' If Vartype(This.oForm) <> 'O'
Return Return
Endif Endif
@@ -800,13 +856,17 @@ DEFINE CLASS anaf_verif_cautare AS Custom
Amessagebox(This.AntetDialog(m.lcDenAles, m.lcCodAles) + ; Amessagebox(This.AntetDialog(m.lcDenAles, m.lcCodAles) + ;
Iif(This.lNegasit, 'Codul fiscal nu exista la ANAF.', ; 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.', ; 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') 0 + 64, 'Verificare partener ANAF')
Return Return
Endif Endif
lcPerioadaTVA = This.TextPerioadaTVA(This.oStare)
If This.oStare.lAreRO = This.oStare.lPlatitorANAF 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.'), ; Iif(This.oStare.lInactivANAF, 'Nu exista alta varianta de partener de ales.', 'Codul fiscal corespunde.'), ;
0 + 64, 'Verificare partener ANAF') 0 + 64, 'Verificare partener ANAF')
Return Return
@@ -820,20 +880,20 @@ 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
This.MarcheazaDocumente() This.MarcheazaDocumente()
lcLista = This.TextListaCandidati() 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) + ; 'Da = Pastreaza selectia' + Chr(13) + ;
Iif(m.lnCandidati = 1, 'Nu = Alege 1 ' + m.lcDenPereche + ' (ID: ' + Transform(m.lnCandidat) + ')', ; Iif(m.lnCandidati = 1, 'Nu = Alege 1 ' + m.lcDenPereche + ' (ID: ' + Transform(m.lnCandidat) + ')', ;
'Nu = Alege din lista (1-' + Transform(m.lnCandidati) + ')') + Chr(13) + ; 'Nu = Alege din lista (1-' + Transform(m.lnCandidati) + ')') + Chr(13) + ;

View File

@@ -67,6 +67,12 @@
*!* sonda asincrona de disponibilitate (ANAF_SondaPorneste/AuSositRaspunsul/AReusit/Opreste) verifica in *!* sonda asincrona de disponibilitate (ANAF_SondaPorneste/AuSositRaspunsul/AReusit/Opreste) verifica in
*!* fundal, la nevoie, daca serviciul ANAF a revenit, fara sa blocheze interfata *!* 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://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/CIF/1879855/MFIN
*!* http://localhost/contafinupdate/verificarecod.aspx/verificarecod/verificare/CNP/1810228134187 *!* http://localhost/contafinupdate/verificarecod.aspx/verificarecod/verificare/CNP/1810228134187
@@ -1673,6 +1679,10 @@ Function ANAF_VerdictDinCursor
Addproperty(loResult, "statusInactivi", Nvl(statusInactivi, .F.)) Addproperty(loResult, "statusInactivi", Nvl(statusInactivi, .F.))
Addproperty(loResult, "denumire", Nvl(denumire, "")) Addproperty(loResult, "denumire", Nvl(denumire, ""))
Addproperty(loResult, "mesaj", Nvl(mesaj, "")) 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 Else
If m.lnReccountTemp = 1 And Empty(denumire) And Nvl(cui, 0) = m.tnCuiCautat If m.lnReccountTemp = 1 And Empty(denumire) And Nvl(cui, 0) = m.tnCuiCautat
tlNegasit = .T. tlNegasit = .T.
@@ -2062,13 +2072,22 @@ Define Class VerificareANAF As Custom
loDate.scpTVA = loInregistrareTVA.scpTVA loDate.scpTVA = loInregistrareTVA.scpTVA
IF TYPE('loInregistrareTVA.perioade_tva',1) <> "U" IF TYPE('loInregistrareTVA.perioade_tva',1) <> "U"
TRY TRY
loDate.data_inceput_ScpTVA = CTOD(loInregistrareTVA.perioade_tva[1].data_inceput_ScpTVA) 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_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.data_anul_imp_ScpTVA = CTOD(loInregistrareTVA.perioade_tva[1].data_anul_imp_ScpTVA)
loDate.mesaj_ScpTVA = loInregistrareTVA.perioade_tva[1].mesaj_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 CATCH TO loEx
ENDTRY ENDTRY
ENDIF ENDIF
ENDIF ENDIF