Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WsxyCHJYL6W9MZ6FPnH8ax
137 lines
5.5 KiB
Plaintext
137 lines
5.5 KiB
Plaintext
* test5_1814_e3.prg
|
|
* E3 (docs\storno_1814_traseu_ui_vs_script.md): ca E1 + O SINGURA variabila noua: ValidareEFacturaANAF
|
|
* (/prod/validare, ca Valideaza() din forma) imediat inainte de upload pe TEST. Storno nou SSS 1156-S3.
|
|
* Un singur upload. Garzi: sha1 fisier, lTest, token, CIF - inainte de TrimiteFacturaXML.
|
|
*
|
|
* Rulare: powershell -ExecutionPolicy Bypass -File D:\ROA\ROACONT\COMUN\utile\Teste\watchdog_vfp.ps1 -Script D:\ROA\ROACONT\COMUN\utile\Teste\storno\test5_1814_e3.prg -AutoDismiss -TimeoutSec 240
|
|
* Iesire: test5_1814_e3_log.txt (+ test5_1814_e3_golog.txt cu liniile SendEFactura), acelasi folder
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
SET DELETED ON
|
|
SET EXACT ON
|
|
SET CENTURY ON
|
|
SET DATE DMY
|
|
SET NULLDISPLAY TO ''
|
|
CLOSE DATABASES
|
|
|
|
PUBLIC gcUILog, gcDir
|
|
gcDir = "D:\ROA\ROACONT\COMUN\utile\Teste\storno\"
|
|
gcUILog = gcDir + "test5_1814_e3_log.txt"
|
|
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
|
|
|
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
TRY
|
|
DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
|
IF gnHandle <= 0
|
|
DO PrLogLocal WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
|
|
QUIT
|
|
ENDIF
|
|
DO PrLogLocal WITH 'mediu initializat, gnHandle=' + TRANSFORM(gnHandle)
|
|
|
|
* SendEFactura scrie URL-ul si raspunsul prin goLog; Log_Mesaje nu scrie daca fisierul lipseste
|
|
goLog.cLogFile = gcDir + "test5_1814_e3_golog.txt"
|
|
STRTOFILE('', goLog.cLogFile)
|
|
|
|
LOCAL lcFile, lcSha1Asteptat, lcSha1
|
|
lcFile = gcDir + "out\storno_SSS 1156-S3_1879855.xml"
|
|
lcSha1Asteptat = 'c407f69020b8d30f2c298e294f9fd1ad60ee96d4'
|
|
|
|
IF !FILE(lcFile)
|
|
DO PrLogLocal WITH 'BLOCAT: nu exista fisierul: ' + lcFile
|
|
QUIT
|
|
ENDIF
|
|
lcSha1 = Sha1Fisier(lcFile)
|
|
DO PrLogLocal WITH 'fisier=' + lcFile + ' len=' + TRANSFORM(LEN(FILETOSTR(lcFile))) + ' sha1=' + lcSha1
|
|
IF !(lcSha1 == lcSha1Asteptat)
|
|
DO PrLogLocal WITH 'BLOCAT: sha1 diferit de ' + lcSha1Asteptat + ' - fisierul a fost regenerat, opresc'
|
|
QUIT
|
|
ENDIF
|
|
|
|
LOCAL loAnaf As 'AnafeFacturaServer'
|
|
loAnaf = CREATEOBJECT('AnafeFacturaServer', .F., '', gcS, '')
|
|
loAnaf.lTest = .T.
|
|
loAnaf.RefreshTokenAuto()
|
|
DO PrLogLocal WITH 'CIF=' + loAnaf.cCodFiscal + ' lTest=' + TRANSFORM(loAnaf.lTest) + ' tokenExp=' + DTOC(loAnaf.dTokenExpdate) + ' tokenGol=' + TRANSFORM(EMPTY(loAnaf.cToken))
|
|
|
|
* garzi finale, imediat inainte de upload
|
|
IF VARTYPE(loAnaf.lTest) <> 'L' OR !loAnaf.lTest
|
|
DO PrLogLocal WITH 'BLOCAT: lTest nu e .T.'
|
|
QUIT
|
|
ENDIF
|
|
IF EMPTY(loAnaf.cToken) OR loAnaf.dTokenExpdate <= DATE()
|
|
DO PrLogLocal WITH 'BLOCAT: token gol sau expirat'
|
|
QUIT
|
|
ENDIF
|
|
IF !(ALLTRIM(loAnaf.cCodFiscal) == '1879855')
|
|
DO PrLogLocal WITH 'BLOCAT: CIF neasteptat: ' + loAnaf.cCodFiscal
|
|
QUIT
|
|
ENDIF
|
|
IF !FILE(lcFile) OR !(Sha1Fisier(lcFile) == lcSha1Asteptat)
|
|
DO PrLogLocal WITH 'BLOCAT: fisierul lipseste sau s-a schimbat chiar inainte de upload'
|
|
QUIT
|
|
ENDIF
|
|
|
|
IF !("XMLEFACTURA" $ UPPER(SET("PROCEDURE")))
|
|
SET PROCEDURE TO xmlefactura ADDITIVE
|
|
ENDIF
|
|
LOCAL loExport, llValid, lcMesajValid
|
|
lcMesajValid = ""
|
|
DO PrLogLocal WITH "=== VALIDARE /prod/validare (ca Valideaza din forma) ==="
|
|
loExport = CREATEOBJECT("ExportEFactura", .T., loAnaf.cToken)
|
|
llValid = loExport.ValidareEFacturaANAF(lcFile, @lcMesajValid)
|
|
DO PrLogLocal WITH "validare: llValid=" + TRANSFORM(llValid) + " mesaj=[" + TRANSFORM(lcMesajValid) + "] sha1dupa=" + Sha1Fisier(lcFile)
|
|
IF !(Sha1Fisier(lcFile) == lcSha1Asteptat)
|
|
DO PrLogLocal WITH "ATENTIE: validarea a modificat fisierul - continui (asta e traseul UI)"
|
|
ENDIF
|
|
DO PrLogLocal WITH '=== UPLOAD 1/1: storno SSS 1156-S3 dupa validare, pe TEST ==='
|
|
LOCAL loRet
|
|
loRet = loAnaf.TrimiteFacturaXML(lcFile, .F., .F., .F., .F., .F.)
|
|
DO PrLogLocal WITH 'upload: lSucces=' + TRANSFORM(loRet.lSucces) + ' status=' + TRANSFORM(loRet.nStatus) + ' idIncarcare=' + ALLTRIM(NVL(loRet.cIdIncarcare,'')) + ' mesaj=[' + ALLTRIM(NVL(loRet.cMesaj,'')) + ']'
|
|
DO PrLogLocal WITH 'raspuns brut: ' + NVL(loRet.cResponse,'')
|
|
DO PrLogLocal WITH 'TOTAL: test terminat fara exceptie'
|
|
CATCH TO loEx
|
|
DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
|
|
ENDTRY
|
|
|
|
QUIT
|
|
|
|
**********************************************************
|
|
* sha1 prin certutil (sincron, fereastra ascunsa)
|
|
FUNCTION Sha1Fisier
|
|
LPARAMETERS tcFile
|
|
LOCAL loSh, lcOut, lcTxt, lcHash, lnI
|
|
lcOut = ADDBS(SYS(2023)) + 'test5_sha1_' + SYS(2015) + '.txt'
|
|
loSh = CREATEOBJECT('WScript.Shell')
|
|
loSh.Run('cmd /c certutil -hashfile "' + tcFile + '" SHA1 > "' + lcOut + '"', 0, .T.)
|
|
lcHash = ''
|
|
IF FILE(lcOut)
|
|
lcTxt = FILETOSTR(lcOut)
|
|
DELETE FILE (lcOut)
|
|
FOR lnI = 1 TO GETWORDCOUNT(lcTxt, CHR(13) + CHR(10))
|
|
IF LEN(CHRTRAN(GETWORDNUM(lcTxt, lnI, CHR(13) + CHR(10)), ' ', '')) = 40
|
|
lcHash = LOWER(CHRTRAN(GETWORDNUM(lcTxt, lnI, CHR(13) + CHR(10)), ' ', ''))
|
|
EXIT
|
|
ENDIF
|
|
ENDFOR
|
|
ENDIF
|
|
RETURN lcHash
|
|
ENDFUNC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrLogLocal
|
|
LPARAMETERS tcMsg
|
|
LOCAL lcL
|
|
SET SAFETY OFF
|
|
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
|
|
STRTOFILE(lcL + TTOC(DATETIME()) + ' ' + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcUILog)
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrErrLocal
|
|
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
|
DO PrLogLocal WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
|
ENDPROC
|