sync SVN r18186
This commit is contained in:
@@ -5887,8 +5887,8 @@ DEFINE CLASS anaf_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
LOCAL lnId, lcXmlOriginal, lcMesaj, lnRecno, lcNumarOriginal, ldDataOriginal
|
||||
LOCAL lcClient, lcMoneda, lnTotal, lnTestRand, lcCifFirma, lcTempXml, loDom
|
||||
LOCAL lcCifXml, loNod, lcIssueDateStr, ldIssueDate, lcCustomerCif, llB2C, loNoduri, lnI
|
||||
LOCAL lcNumarNou, lcNumarNouSafe, lcFisierStorno, lcNotaIni, llSucces
|
||||
LOCAL laModificari[1], lcAvertizare, laDubl[1], laProcesate[1], loForma
|
||||
LOCAL lcNumarNou, lcNumarNouSafe, lcClientSafe, lcFisierStorno, lcNotaIni, llSucces
|
||||
LOCAL laModificari[1], lcAvertizare, laDubl[1], loForma
|
||||
IF AMESSAGEBOX('Se genereaza XML-ul de stornare al facturii selectate (aceleasi linii, valori negative).' + CHR(13) + CHR(13) + ;
|
||||
'Nu se trimite nimic la ANAF pana nu verificati XML-ul in fereastra urmatoare si apasati "Trimite la ANAF".', 1+64, _screen.Caption) <> 1
|
||||
RETURN
|
||||
@@ -5973,8 +5973,12 @@ DEFINE CLASS anaf_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
llB2C = (Len(m.lcCustomerCif) = 13)
|
||||
|
||||
lcNumarNou = m.lcNumarOriginal + '-S'
|
||||
lcNumarNouSafe = WindowsSpecialCharacters(m.lcNumarNou)
|
||||
lcFisierStorno = GetPdfPath('EFACTURA','TRIMISE') + 'storno_' + m.lcNumarNouSafe + '_' + m.lcCifFirma + '.xml'
|
||||
lcNumarNouSafe = WindowsSpecialCharacters(ALLTRIM(m.lcNumarNou), '_')
|
||||
lcNumarNouSafe = Strtran(Alltrim(m.lcNumarNouSafe), [ ], [_], 1, 100, 1)
|
||||
lcClientSafe = WindowsSpecialCharacters(Nvl(m.lcClient, ''), '_')
|
||||
lcClientSafe = Strtran(Alltrim(m.lcClientSafe), [ ], [_], 1, 100, 1)
|
||||
lcClientSafe = Alltrim(Left(WindowsSpecialCharacters(m.lcClientSafe, '_'), 70))
|
||||
lcFisierStorno = GetPdfPath('EFACTURA') + 'efactura_' + Dtos(m.ldIssueDate) + '_' + m.lcNumarNouSafe + '_' + m.lcClientSafe + '.xml'
|
||||
lcNotaIni = 'Stornare factura ' + m.lcNumarOriginal + ' din data ' + Dtoc(m.ldIssueDate)
|
||||
|
||||
llSucces = StornoEFacturaXML(m.lcXmlOriginal, m.lcNumarNou, m.lcNotaIni, m.lcFisierStorno, @laModificari, @lcMesaj)
|
||||
@@ -5993,9 +5997,6 @@ DEFINE CLASS anaf_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
lcAvertizare = m.lcAvertizare + 'Exista deja un document ' + m.lcNumarNou + ' in Trimise - posibila stornare dubla.' + Chr(13) + Chr(10)
|
||||
ENDIF
|
||||
USE IN (SELECT('cVerifDubl'))
|
||||
IF !Empty(Adir(laProcesate, GetPdfPath('EFACTURA','TRIMISE') + 'procesat\*_storno_' + m.lcNumarNouSafe + '_' + m.lcCifFirma + '*.xml'))
|
||||
lcAvertizare = m.lcAvertizare + 'Un storno cu acest numar a fost deja trimis de pe acest calculator.' + Chr(13) + Chr(10)
|
||||
ENDIF
|
||||
IF loDom.documentElement.baseName == 'CreditNote' OR m.lnTotal < 0
|
||||
lcAvertizare = m.lcAvertizare + 'Documentul original e nota de credit / are total negativ - stornarea va produce valori pozitive.' + Chr(13) + Chr(10)
|
||||
ENDIF
|
||||
@@ -15507,7 +15508,6 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
*< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" />
|
||||
|
||||
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
||||
*< OBJECTDATA: ObjPath="But_renunt1" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="lblClient" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="lblNumar" UniqueID="" Timestamp="" />
|
||||
*< OBJECTDATA: ObjPath="txtNumar" UniqueID="" Timestamp="" />
|
||||
@@ -15527,6 +15527,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
*< OBJECTDATA: ObjPath="cmdTrimite" UniqueID="" Timestamp="" />
|
||||
|
||||
*<DefinedPropArrayMethod>
|
||||
*m: calculeazafisierstorno
|
||||
*m: enablebutoane
|
||||
*m: regenereazaxml
|
||||
*m: setstare
|
||||
@@ -15607,18 +15608,13 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
Lb_titlu_alb_b121.Anchor = 3
|
||||
Lb_titlu_alb_b121.Caption = "Stornare eFactura"
|
||||
Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121"
|
||||
BUT_TERMIN1.Anchor = 8
|
||||
BUT_TERMIN1.Left = 727
|
||||
BUT_TERMIN1.Name = "BUT_TERMIN1"
|
||||
BUT_TERMIN1.Visible = .F.
|
||||
BUT_TERMIN1.Top = 2
|
||||
Gridsort1.Name = "Gridsort1"
|
||||
*</PropValue>
|
||||
|
||||
ADD OBJECT 'But_renunt1' AS but_renunt WITH ;
|
||||
Anchor = 8, ;
|
||||
Left = 701, ;
|
||||
Name = "But_renunt1", ;
|
||||
Top = 2
|
||||
*< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" />
|
||||
|
||||
ADD OBJECT 'cmdGenereaza' AS cmd_executa WITH ;
|
||||
Anchor = 6, ;
|
||||
Caption = "\<Genereaza XML", ;
|
||||
@@ -15787,7 +15783,6 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
Anchor = 14, ;
|
||||
AutoSize = .F., ;
|
||||
Caption = "Nevalidat", ;
|
||||
FontBold = .T., ;
|
||||
ForeColor = 96,96,96, ;
|
||||
Height = 34, ;
|
||||
Left = 12, ;
|
||||
@@ -15822,6 +15817,17 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
Width = 150
|
||||
*< END OBJECT: ClassLib="_baza.vcx" BaseClass="textbox" />
|
||||
|
||||
PROCEDURE CalculeazaFisierStorno
|
||||
LPARAMETERS tcNumarNou
|
||||
LOCAL lcNumarSafe, lcClientSafe
|
||||
lcNumarSafe = WindowsSpecialCharacters(ALLTRIM(m.tcNumarNou), '_')
|
||||
lcNumarSafe = Strtran(Alltrim(m.lcNumarSafe), [ ], [_], 1, 100, 1)
|
||||
lcClientSafe = WindowsSpecialCharacters(Nvl(This.pcClient, ''), '_')
|
||||
lcClientSafe = Strtran(Alltrim(m.lcClientSafe), [ ], [_], 1, 100, 1)
|
||||
lcClientSafe = Alltrim(Left(WindowsSpecialCharacters(m.lcClientSafe, '_'), 70))
|
||||
RETURN GetPdfPath('EFACTURA') + 'efactura_' + Dtos(This.pdDataOriginal) + '_' + m.lcNumarSafe + '_' + m.lcClientSafe + '.xml'
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE EnableButoane
|
||||
LPARAMETERS tlEnable
|
||||
This.cmdGenereaza.Enabled = m.tlEnable
|
||||
@@ -15856,6 +15862,11 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
This.Lb_titlu_alb_b121.Caption = This.Caption
|
||||
This.lblClient.Caption = 'Client: ' + m.tcClient + ' CIF: ' + m.tcCifFirma + ' Moneda: ' + m.tcMoneda
|
||||
This.lblAvertisment.Caption = m.tcAvertizare
|
||||
IF Empty(m.tcAvertizare)
|
||||
This.lblAvertisment.Visible = .F.
|
||||
This.grdModificari.Height = This.grdModificari.Height + (This.grdModificari.Top - This.lblAvertisment.Top)
|
||||
This.grdModificari.Top = This.lblAvertisment.Top
|
||||
ENDIF
|
||||
|
||||
This.grdModificari.SetAll("DynamicFontBold", "tip = 2", "Column")
|
||||
|
||||
@@ -15872,6 +15883,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
ENDIF
|
||||
lcNotaFinal = 'Stornare factura ' + This.pcNumarOriginal + ' din data ' + Dtoc(This.pdDataOriginal) + IIF(Empty(m.lcMotiv), '', '. ' + m.lcMotiv)
|
||||
|
||||
This.pcFisierStorno = This.CalculeazaFisierStorno(m.lcNumarNou)
|
||||
llSucces = StornoEFacturaXML(This.pcXmlOriginal, m.lcNumarNou, m.lcNotaFinal, This.pcFisierStorno, @laModif, @lcMesaj)
|
||||
IF !m.llSucces
|
||||
This.SetStare(0, 'Eroare la regenerare: ' + m.lcMesaj)
|
||||
@@ -15923,6 +15935,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
INSERT INTO crsStornoDetalii (element, original, nou, tip) VALUES ;
|
||||
(taModificari[m.lnI,1], Transform(taModificari[m.lnI,2]), Transform(taModificari[m.lnI,3]), taModificari[m.lnI,4])
|
||||
ENDFOR
|
||||
GO TOP
|
||||
SELECT (m.lcSelect)
|
||||
This.grdModificari.Refresh()
|
||||
ENDPROC
|
||||
@@ -15944,39 +15957,47 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
IF m.llValid
|
||||
This.SetStare(1)
|
||||
ELSE
|
||||
This.SetStare(0, IIF(Empty(m.lcMesajValid), 'Validare indisponibila - verificati tokenul/reteaua.', 'Invalid: ' + m.lcMesajValid))
|
||||
This.SetStare(0, IIF(Empty(m.lcMesajValid), 'Validarea ANAF nu a raspuns - verificati tokenul/reteaua.', 'ANAF a gasit erori in XML (validare): ' + m.lcMesajValid))
|
||||
ENDIF
|
||||
RETURN m.llValid
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE cmdGenereaza.Click
|
||||
IF Thisform.RegenereazaXml()
|
||||
Thisform.SetStare(0, 'XML regenerat.')
|
||||
LOCAL lcRun
|
||||
Thisform.Valideaza()
|
||||
Thisform.SetStare(Thisform.pnStare, STREXTRACT(Thisform.lblStare.Caption + '. Fisier:', '', '. Fisier:') + '. Fisier: ' + Thisform.pcFisierStorno)
|
||||
IF FILE(Thisform.pcFisierStorno)
|
||||
lcRun = [RUN /N7 explorer.exe /select,"] + Thisform.pcFisierStorno + ["]
|
||||
&lcRun
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE cmdPdf.Click
|
||||
LOCAL lcXmlCurent, lcFisierPdf
|
||||
LOCAL lcXmlCurent, lcFisierPdf, lcRun
|
||||
lcXmlCurent = Filetostr(Thisform.pcFisierStorno)
|
||||
lcFisierPdf = GetPdfPath('EFACTURA','TRIMISE') + 'storno_' + WindowsSpecialCharacters(ALLTRIM(Thisform.pcNumarNou)) + '.pdf'
|
||||
lcFisierPdf = Forceext(Thisform.pcFisierStorno, 'pdf')
|
||||
lcFisierPdf = Thisform.poAnaf.Xml2PdfAnaf(m.lcXmlCurent, m.lcFisierPdf, .T.)
|
||||
IF !Empty(m.lcFisierPdf) AND File(m.lcFisierPdf)
|
||||
Thisform.SetStare(Thisform.pnStare, STREXTRACT(Thisform.lblStare.Caption + '. Fisier:', '', '. Fisier:') + '. Fisier: ' + m.lcFisierPdf)
|
||||
open_default_app(m.lcFisierPdf)
|
||||
lcRun = [RUN /N7 explorer.exe /select,"] + m.lcFisierPdf + ["]
|
||||
&lcRun
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE cmdTrimite.Click
|
||||
LOCAL lcMesajConf, loReturn, lcDirProcesat, lcFisierProcesat, lnOptiune
|
||||
LOCAL lcMesajConf, loReturn, lnOptiune, lcMesajEroare
|
||||
IF Thisform.pnStare = 2
|
||||
RETURN
|
||||
ENDIF
|
||||
lnOptiune = xmenu('\<Valideaza online si Trimite la ANAF;\<Trimite la ANAF fara validare;\<Doar valideaza online')
|
||||
DO CASE
|
||||
CASE m.lnOptiune = 1
|
||||
CASE m.lnOptiune = 1 AND !Thisform.plTest
|
||||
IF !Thisform.Valideaza()
|
||||
RETURN
|
||||
ENDIF
|
||||
CASE m.lnOptiune = 2
|
||||
*!* pe TEST, validarea /prod/ urmata de upload /test/ da ANAF "Cod: 1814" - se trimite fara validare
|
||||
CASE INLIST(m.lnOptiune, 1, 2)
|
||||
IF !Thisform.RegenereazaXml()
|
||||
RETURN
|
||||
ENDIF
|
||||
@@ -15988,7 +16009,7 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
ENDCASE
|
||||
|
||||
lcMesajConf = 'Trimiteti la ANAF (' + IIF(Thisform.plTest,'TEST','PRODUCTIE') + ') stornarea facturii ' + Thisform.pcNumarOriginal + ;
|
||||
' ca ' + ALLTRIM(Thisform.pcNumarNou) + ', total ' + Transform(Thisform.pnTotal) + ' ' + Thisform.pcMoneda + '? Operatia nu se poate anula.'
|
||||
' ca ' + ALLTRIM(Thisform.pcNumarNou) + ', total ' + ALLTRIM(STR(-Thisform.pnTotal, 18, 2)) + ' ' + Thisform.pcMoneda + '? Operatia nu se poate anula.'
|
||||
IF AMESSAGEBOX(m.lcMesajConf, 4+32+256, _screen.Caption) <> 6
|
||||
RETURN
|
||||
ENDIF
|
||||
@@ -16001,21 +16022,16 @@ DEFINE CLASS frm_storno_efactura AS _frmbase OF "_frm_base.vcx"
|
||||
WAIT CLEAR
|
||||
|
||||
IF !Empty(loReturn.cIdIncarcare)
|
||||
lcDirProcesat = GetPdfPath('EFACTURA','TRIMISE') + 'procesat\'
|
||||
lcFisierProcesat = loReturn.cIdIncarcare + '_' + Justfname(Thisform.pcFisierStorno)
|
||||
IF Thisform.poAnaf.SaveFile(Thisform.pcFisierStorno, .F., m.lcDirProcesat, m.lcFisierProcesat)
|
||||
TRY
|
||||
Delete File (Thisform.pcFisierStorno)
|
||||
CATCH
|
||||
ENDTRY
|
||||
ENDIF
|
||||
goLog.Log('Storno eFactura: ' + Thisform.pcNumarOriginal + ' -> ' + ALLTRIM(Thisform.pcNumarNou) + ', index ' + loReturn.cIdIncarcare + ', ' + IIF(Thisform.plTest,'TEST','PRODUCTIE'))
|
||||
Thisform.EnableButoane(.T.)
|
||||
Thisform.SetStare(2, 'Trimis. Index incarcare ' + loReturn.cIdIncarcare + ' (' + IIF(Thisform.plTest,'TEST','PRODUCTIE') + '). ' + ;
|
||||
'Stergeti factura din ROA si emiteti factura corecta cu acelasi numar. Storno-ul apare in Trimise dupa descarcarea mesajelor.')
|
||||
'Storno-ul apare in Trimise dupa descarcarea mesajelor.')
|
||||
ELSE
|
||||
Thisform.EnableButoane(.T.)
|
||||
Thisform.SetStare(0, 'Eroare: ' + loReturn.cMesaj + '. Verificati in Trimise, dupa descarcare, inainte de a retrimite.')
|
||||
*!* HTTP 200 = ANAF a raspuns; altfel nu se stie daca a primit fisierul
|
||||
lcMesajEroare = IIF(loReturn.nStatus = 200, '', IIF(Thisform.plTest, 'TEST ', '')) + ALLTRIM(loReturn.cMesaj) + ;
|
||||
IIF(loReturn.nStatus = 200, '', '. Nu se stie daca ANAF a primit fisierul: verificati in Trimise, dupa descarcare, inainte de a retrimite.')
|
||||
Thisform.SetStare(0, m.lcMesajEroare)
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
|
||||
@@ -872,7 +872,7 @@ select a.*, cast(NULL as varchar2(1000)) as factura_detalii, 0 as modificat
|
||||
Case !Empty(m.lcErrorMessage)
|
||||
pcIdIncarcare = ''
|
||||
pnTrimis = 1
|
||||
pcMesajTrimis = m.pcMesajTrimis + Iif(This.lTest, 'TEST ', '') + 'Eroare. ' + m.lcErrorMessage
|
||||
pcMesajTrimis = m.pcMesajTrimis + 'ANAF a respins incarcarea: ' + m.lcErrorMessage
|
||||
|
||||
Case [VALID] $ Upper(loReturn.cResponse)
|
||||
pcIdIncarcare = ''
|
||||
@@ -880,14 +880,14 @@ select a.*, cast(NULL as varchar2(1000)) as factura_detalii, 0 as modificat
|
||||
pcMesajTrimis = m.pcMesajTrimis + loReturn.cResponse
|
||||
|
||||
Otherwise
|
||||
pcMesajTrimis = m.pcMesajTrimis + Iif(This.lTest, 'TEST ', '') + 'Eroare. ' + m.lcErrorMessage
|
||||
pcMesajTrimis = m.pcMesajTrimis + 'Raspuns ANAF neasteptat (fara status): ' + Alltrim(Transform(loReturn.cResponse))
|
||||
pcIdIncarcare = ''
|
||||
pnTrimis = 1
|
||||
Endcase
|
||||
|
||||
loReturn.cMesaj = m.pcMesajTrimis + ' ' + m.lcMesajValidare
|
||||
Else
|
||||
pcMesajTrimis = ' Eroare transmitere - Http Status: ' + Transform(loReturn.nStatus) + ' Http Response: ' + Alltrim(Transform(loReturn.cResponse)) + ' ' + loReturn.cResponse
|
||||
pcMesajTrimis = 'Eroare de comunicare cu ANAF - Http Status: ' + Transform(loReturn.nStatus) + IIF(loReturn.nStatus = 403, ' (token expirat - regenerati token-ul)', '') + '. Raspuns: ' + Alltrim(Transform(loReturn.cResponse))
|
||||
loReturn.cResponse = pcMesajTrimis
|
||||
loReturn.cMesaj = m.pcMesajTrimis + ' ' + m.lcMesajValidare
|
||||
This.Log(loReturn.cResponse)
|
||||
@@ -1322,7 +1322,8 @@ https://api.anaf.ro/<<Iif(m.llTest, [test], [prod])>>/FCTEL/rest/listaMesajePagi
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
llSucces = This.SaveFile(loHttp.ResponseText, .T.,This.cSaveLogsPath,'response_json_' + TTOC(Datetime(),1) + '.txt')
|
||||
*!* logul json e optional: esecul lui nu e esecul descarcarii (altfel mesaj gol "(nimic)")
|
||||
This.SaveFile(loHttp.ResponseText, .T.,This.cSaveLogsPath,'response_json_' + TTOC(Datetime(),1) + '.txt')
|
||||
|
||||
TRY
|
||||
loJson = nfjsonread(loHTTP.ResponseText)
|
||||
@@ -3182,14 +3183,14 @@ select id, id_efactura, nr, articol, descriere, detalii, cantitate, um, pret, pr
|
||||
Case !EMPTY(m.lcErrorMessage)
|
||||
pcIdIncarcare = ''
|
||||
pnTrimis = 1
|
||||
pcMesajTrimis = m.pcMesajTrimis + Iif(This.lTest, 'TEST ', '') + 'Eroare. ' + m.lcErrorMessage
|
||||
pcMesajTrimis = m.pcMesajTrimis + 'ANAF a respins incarcarea: ' + m.lcErrorMessage
|
||||
|
||||
Case [VALID] $ Upper(loReturn.cResponse)
|
||||
pcIdIncarcare = ''
|
||||
pnTrimis = 0
|
||||
pcMesajTrimis = m.pcMesajTrimis + loReturn.cResponse
|
||||
Otherwise
|
||||
pcMesajTrimis = m.pcMesajTrimis + Iif(This.lTest, 'TEST ', '') + 'Eroare. ' + m.lcErrorMessage
|
||||
pcMesajTrimis = m.pcMesajTrimis + 'Raspuns ANAF neasteptat (fara status): ' + Alltrim(Transform(loReturn.cResponse))
|
||||
pcIdIncarcare = ''
|
||||
pnTrimis = 1
|
||||
Endcase
|
||||
|
||||
Reference in New Issue
Block a user