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