Merge claude/anaf-tva-efactura: avertizare exigibilizare TVA, verificare ANAF
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
16
docs/sold-neexigibil-reportat-jc2007-jv2007.md
Normal file
16
docs/sold-neexigibil-reportat-jc2007-jv2007.md
Normal 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*`.
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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) + ;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user