Registratura: adaugare/editare fara erori la partener NULL, lista doar ultimul document, fonturi Arial 10 (M1-M5)
M1 modifica_reg_dg: garda id_part NULL/empty (mesaj + Return .F.), NVL pe id_part/nr_pag, functia intoarce succes. M2 validare partener in toate cele 3 puncte de salvare, INAINTE de blocarea campurilor (Command2.Click salveaza inainte sa blocheze; bara laterala si Page3.Deactivate nu mai salveaza/prompteaza cu partener NULL). M3 do_adauga: documentul nou intra direct in editare (llock=.F., focus cmdDenumire); eliminat mesajul fals "Toate modificarile au efect imediat!". M4 viz_registratura + do_cauta: filtru initial "doar ultimul document" (subquery max(id_reg)); fara criterii de cautare se pastreaza filtrul, nu se incarca toata baza. M5 fonturi: eliminate 154 suprascrieri "Arial Narrow" si rebazate 96 controale baseclass pe COMUN _baza.vcx (textbox/label/checkbox/commandbutton/optiongroup); Init de grid propaga fontul la coloane si headere (fara asta raman Arial 9 - verificat empiric). Teste: harness headless (init env dedicat, form, adaugare+editare cu verificare in baza) + test UI vizual cu screenshots pe fluxul real (19 PASS / 0 FAIL). Diff-uri de audit in docs/diff_runda1_*.patch. M6 (build EXE) BLOCAT headless: roaRegistratura.pjx refera 48 fisiere hardcodate pe "c:\program files\...\vfp 9" (masina 32-bit din 2021) + COMUN\utile\hpdf\ReportOutput\ctl32_progressbar.vcx redenumit _old; necesita repathing o data in VFP9 IDE. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018H9za5A9Tk6wcLFof6seds
This commit is contained in:
29
Teste/build_registratura.prg
Normal file
29
Teste/build_registratura.prg
Normal file
@@ -0,0 +1,29 @@
|
||||
* build_registratura.prg - M6: recompilare completa a proiectului (headless).
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROAREGISTRATURA\Teste\build_registratura.prg"
|
||||
* Log: D:\ROA\ROAREGISTRATURA\Teste\log_build.txt (+ erori de compilare in .err daca apar)
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
PUBLIC gcBuildLog
|
||||
gcBuildLog = 'D:\ROA\ROAREGISTRATURA\Teste\log_build.txt'
|
||||
STRTOFILE('=== build_registratura ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcBuildLog)
|
||||
|
||||
ON ERROR DO blog WITH '*** EROARE ' + TRANSFORM(ERROR()) + ': ' + MESSAGE() + ;
|
||||
' | ' + MESSAGE(1) + ' | prg=' + PROGRAM() + ' lin=' + TRANSFORM(LINENO())
|
||||
|
||||
SET DEFAULT TO D:\ROA\ROAREGISTRATURA
|
||||
DO blog WITH 'BUILD EXE roaregistratura.exe FROM roaRegistratura RECOMPILE ...'
|
||||
BUILD EXE roaregistratura.exe FROM roaRegistratura RECOMPILE
|
||||
DO blog WITH 'Build incheiat. Verificati roaregistratura.err daca exista.'
|
||||
IF FILE('D:\ROA\ROAREGISTRATURA\roaregistratura.err')
|
||||
DO blog WITH '--- roaregistratura.err ---'
|
||||
DO blog WITH FILETOSTR('D:\ROA\ROAREGISTRATURA\roaregistratura.err')
|
||||
ELSE
|
||||
DO blog WITH 'FARA erori de compilare (.err inexistent).'
|
||||
ENDIF
|
||||
ON ERROR
|
||||
QUIT
|
||||
|
||||
PROCEDURE blog
|
||||
LPARAMETERS tcMsg
|
||||
STRTOFILE(TRANSFORM(tcMsg) + CHR(13)+CHR(10), gcBuildLog, 1)
|
||||
ENDPROC
|
||||
189
Teste/test_init_env_registratura.prg
Normal file
189
Teste/test_init_env_registratura.prg
Normal file
@@ -0,0 +1,189 @@
|
||||
* test_init_env_registratura.prg
|
||||
* Init mediu NEINTERACTIV pentru teste headless ROAREGISTRATURA
|
||||
* (echivalentul COMUN\utile\Teste\test_init_env_auto.prg, dar pentru acest proiect).
|
||||
* SET PATH / CLASSLIB / PROCEDURE preluate din Programe\roaregistratura.prg (a se mentine sincron).
|
||||
*
|
||||
* Utilizare (dintr-un script apelant):
|
||||
* DO Teste\test_init_env_registratura WITH 'CENTRAL', 'MARIUSM_AUTO', 'parola'
|
||||
* IF gnHandle <= 0 ... eroare conectare
|
||||
* ATENTIE: NU se ruleaza pe baza de productie (JCSSERVER / CONTAFIN_ORACLE).
|
||||
|
||||
LPARAMETERS tcHost, tcSchema, tcPassword, tnAn, tnLuna
|
||||
|
||||
tcHost = IIF(EMPTY(tcHost), 'CENTRAL', tcHost)
|
||||
tcSchema = IIF(EMPTY(tcSchema), 'MARIUSM_AUTO', tcSchema)
|
||||
tcPassword = IIF(EMPTY(tcPassword), 'ROMFASTSOFT', tcPassword)
|
||||
|
||||
SET DELETED ON
|
||||
SET ANSI ON
|
||||
SET EXACT ON
|
||||
SET SAFETY OFF
|
||||
CLOSE DATABASES
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET NULLDISPLAY TO ''
|
||||
SET SQLBUFFERING ON
|
||||
|
||||
PUBLIC CT_SUCCES, CT_INSUCCES, crlf, gnAn, gnLuna, gnIdUtil, gnIdFirma, gcS, gcFirma, ;
|
||||
gcNumeProgram, gcAppName, buton, gnButon, pnButon, gcAcces, glParametri, glQuit
|
||||
CT_SUCCES = 1
|
||||
CT_INSUCCES = -1
|
||||
crlf = CHR(13) + CHR(10)
|
||||
gnAn = IIF(EMPTY(tnAn), YEAR(DATE()), tnAn)
|
||||
gnLuna = IIF(EMPTY(tnLuna), MONTH(DATE()), tnLuna)
|
||||
gnIdUtil = -3
|
||||
gnIdFirma = 110
|
||||
gcS = UPPER(ALLTRIM(tcSchema))
|
||||
gcFirma = m.gcS
|
||||
gcNumeProgram = [ROAREGISTRATURA]
|
||||
gcAppName = [ROAREGISTRATURA]
|
||||
glParametri = .T.
|
||||
glQuit = .F.
|
||||
buton = 1
|
||||
gnButon = 1
|
||||
pnButon = 1
|
||||
gcAcces = [1;2;3;4;5;6;7;8;]
|
||||
|
||||
* globale cerute de oserii_numere/oinit_optiuni (sincron cu test_init_env_auto.prg)
|
||||
PUBLIC gnIdSucursala, gnIdMama, glEMama, gcCondSucursala, glLunaInchisa, gcUserName
|
||||
gnIdSucursala = NULL
|
||||
gnIdMama = 0
|
||||
glEMama = .F.
|
||||
gcCondSucursala = []
|
||||
glLunaInchisa = .F.
|
||||
gcUserName = [MARIUS M]
|
||||
* vezi comentariul din test_init_env_auto.prg: PUBLIC, nu Declare
|
||||
PUBLIC nror(65000)
|
||||
|
||||
PUBLIC gcAppPath, DIRGEN, gcBasePath, gcTempPath, gcGeneralIniFile, gcSettingsFile
|
||||
gcAppPath = [D:\ROA\ROAREGISTRATURA\]
|
||||
SET DEFAULT TO (gcAppPath)
|
||||
LOCAL lcPath
|
||||
lcPath = gcAppPath + 'Date;' + ;
|
||||
gcAppPath + 'Include;' + ;
|
||||
gcAppPath + 'FERESTRE;' + ;
|
||||
gcAppPath + 'GRAFICE;' + ;
|
||||
gcAppPath + 'CLASE;' + ;
|
||||
gcAppPath + 'MENIURI;' + ;
|
||||
gcAppPath + 'PROGRAME;' + ;
|
||||
gcAppPath + 'RAPOARTE;' + ;
|
||||
gcAppPath + 'COMUN\CLASE;' + ;
|
||||
gcAppPath + 'COMUN\FERESTRE;' + ;
|
||||
gcAppPath + 'COMUN\PROGRAME;' + ;
|
||||
gcAppPath + 'COMUN\GRAFICE;' + ;
|
||||
gcAppPath + 'COMUN\RAPOARTE;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\CTL32;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\HPDF;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\WEB;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\TESTE;' + ;
|
||||
ADDBS(SUBSTR(gcAppPath,1,RAT([\],gcAppPath,2)))+[COMUNROA\]
|
||||
SET PATH TO &lcPath ADDITIVE
|
||||
|
||||
*CLASE - sincron cu Programe\roaregistratura.prg
|
||||
SET CLASSLIB TO clase\roaregistratura ADDITIVE
|
||||
SET CLASSLIB TO CAUT ADDITIVE
|
||||
SET CLASSLIB TO ooptiuni ADDITIVE
|
||||
SET CLASSLIB TO registry ADDITIVE
|
||||
SET CLASSLIB TO decabaza ADDITIVE
|
||||
SET CLASSLIB TO cauta_alfa_forms ADDITIVE
|
||||
SET CLASSLIB TO ferestre_oracle ADDITIVE
|
||||
SET CLASSLIB TO caut_ora ADDITIVE
|
||||
SET CLASSLIB TO ferestre_registratura ADDITIVE
|
||||
SET CLASSLIB TO onomenclatoare ADDITIVE
|
||||
SET CLASSLIB TO Messagebox ADDITIVE
|
||||
SET CLASSLIB TO otoolbar ADDITIVE
|
||||
SET CLASSLIB TO ferestre_cere_date ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_comun ADDITIVE
|
||||
SET CLASSLIB TO onom_articole ADDITIVE
|
||||
SET CLASSLIB TO serii_numere.vcx ADDITIVE
|
||||
SET CLASSLIB TO ferestre_atasamente.vcx ADDITIVE
|
||||
SET CLASSLIB TO wwdialogs.vcx ADDITIVE
|
||||
SET CLASSLIB TO appwiz.vcx ADDITIVE
|
||||
SET CLASSLIB TO accessibility.vcx ADDITIVE
|
||||
SET CLASSLIB TO ofundal_registratura.vcx ADDITIVE
|
||||
|
||||
*PROCEDURI - sincron cu Programe\roaregistratura.prg
|
||||
SET PROCEDURE TO quitapp ADDITIVE
|
||||
SET PROCEDURE TO init_program ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_comune ADDITIVE
|
||||
SET PROCEDURE TO gencursor.prg ADDITIVE
|
||||
SET PROCEDURE TO update_nomenclator.prg ADDITIVE
|
||||
SET PROCEDURE TO onomenclatoare ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_ams ADDITIVE
|
||||
SET PROCEDURE TO ocautare ADDITIVE
|
||||
SET PROCEDURE TO oinit_optiuni ADDITIVE
|
||||
SET PROCEDURE TO osecurity ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_roaregistratura ADDITIVE
|
||||
SET PROCEDURE TO acces_meniu ADDITIVE
|
||||
SET PROCEDURE TO oheader ADDITIVE
|
||||
SET PROCEDURE TO oparteneri_contracte ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_maintenance.prg ADDITIVE
|
||||
SET PROCEDURE TO cauta_alfa ADDITIVE
|
||||
SET PROCEDURE TO ini.prg ADDITIVE
|
||||
SET PROCEDURE TO oserii_numere ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_atasamente ADDITIVE
|
||||
SET PROCEDURE TO oexport.prg ADDITIVE
|
||||
SET PROCEDURE TO iniacces.prg ADDITIVE
|
||||
SET PROCEDURE TO filebringer.prg ADDITIVE
|
||||
SET PROCEDURE TO log_mesaje.prg ADDITIVE
|
||||
SET PROCEDURE TO wwutils.prg ADDITIVE && ShortPath() folosit de Log_Mesaje.Init
|
||||
|
||||
DECLARE INTEGER GetPrivateProfileString IN WIN32API ;
|
||||
STRING, STRING, STRING, STRING @, INTEGER, STRING
|
||||
DECLARE INTEGER WritePrivateProfileString IN Win32Api ;
|
||||
STRING, STRING, STRING, STRING
|
||||
DECLARE INTEGER PathFileExists IN shlwapi STRING pszPath
|
||||
|
||||
PUBLIC poLog, goLog, goApp
|
||||
poLog = NEWOBJECT("Log_Mesaje","Log_Mesaje.prg")
|
||||
goLog = poLog
|
||||
goApp = CREATEOBJECT("wzApplication")
|
||||
|
||||
DIRGEN = [D:\ROA\]
|
||||
gcBasePath = DIRGEN
|
||||
gcGeneralIniFile = DIRGEN + "settings.ini"
|
||||
gcSettingsFile = m.gcGeneralIniFile
|
||||
gcTempPath = ADDBS(SYS(2023)) + gcS + [\]
|
||||
IF !DIRECTORY(gcTempPath)
|
||||
MD (gcTempPath)
|
||||
ENDIF
|
||||
|
||||
PUBLIC gnHandle, goExecutor, goConn, goFirma, goCalendar
|
||||
gnHandle = 0
|
||||
goExecutor = CREATEOBJECT("oExecutor")
|
||||
goConn = CREATEOBJECT("oConn")
|
||||
goConn.Connect(m.tcHost, m.tcSchema, m.tcPassword)
|
||||
IF m.gnHandle <= 0
|
||||
RETURN .F.
|
||||
ENDIF
|
||||
|
||||
LOCAL llSucces, lcSql
|
||||
goFirma = NULL
|
||||
llSucces = goExecutor.oExecuta("select * from syn_v_nom_firme where schema = ?gcS", "cFirma")
|
||||
IF m.llSucces
|
||||
SELECT cFirma
|
||||
gnIdFirma = id_firma
|
||||
gcFirma = ALLTRIM(firma)
|
||||
SCATTER NAME goFirma
|
||||
ELSE
|
||||
goFirma = CREATEOBJECT('custom')
|
||||
goFirma.AddProperty('cod_fiscal', '')
|
||||
goFirma.AddProperty('schema', m.gcS)
|
||||
goFirma.AddProperty('firma', m.gcS)
|
||||
ENDIF
|
||||
USE IN (SELECT('cFirma'))
|
||||
|
||||
CREATE CURSOR dual (dummy c(10))
|
||||
INSERT INTO dual (dummy) VALUES ("")
|
||||
|
||||
* sesiune Oracle (pachetele pot lipsi din unele scheme - nu oprim initul)
|
||||
lcSql = [begin pack_sesiune.set_Id_Util(?gnIdUtil); end;]
|
||||
llSucces = goExecutor.oExecuta(lcSql)
|
||||
lcSql = [begin pack_sesiune.setluna(?gnLuna); pack_sesiune.setan(?gnAn); end;]
|
||||
llSucces = goExecutor.oExecuta(lcSql)
|
||||
|
||||
* variabilele globale ale aplicatiei folosite de fluxul registratura
|
||||
PUBLIC poReg, goRegistratura, podg_dg, podg_referinte, podg_obs, podg_link, goFundal
|
||||
STORE '' TO poReg, goRegistratura
|
||||
|
||||
RETURN .T.
|
||||
168
Teste/test_registratura_adaugare.prg
Normal file
168
Teste/test_registratura_adaugare.prg
Normal file
@@ -0,0 +1,168 @@
|
||||
* test_registratura_adaugare.prg
|
||||
* Test headless: fluxul de ADAUGARE document in registratura + salvarea datelor generale.
|
||||
* Reproduce si bugul cunoscut: modifica_reg_dg cu partener NULL (P2 din
|
||||
* docs\analiza_registratura_adaugare_editare.md). Dupa implementarea gardei (M1),
|
||||
* pasul 3 trebuie sa devina un refuz elegant (mesaj + return), nu eroare de executie.
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROAREGISTRATURA\Teste\test_registratura_adaugare.prg"
|
||||
* Log: D:\ROA\ROAREGISTRATURA\Teste\log_test_adaugare.txt
|
||||
* ATENTIE: ruleaza DOAR pe schema de test (CENTRAL/MARIUSM_AUTO). Documentul de test
|
||||
* este sters (soft-delete) la final prin pack_registratura.sterge_registratura.
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
|
||||
* mock amessagebox PRIMUL in lista de proceduri (la nume duplicat castiga PRIMUL - testare-ui-vfp.md cap. j)
|
||||
SET PROCEDURE TO D:\ROA\ROAREGISTRATURA\COMUN\utile\Teste\mock_amessagebox.prg ADDITIVE
|
||||
PUBLIC gnMockRaspuns
|
||||
gnMockRaspuns = 6
|
||||
|
||||
PUBLIC gcTestLog
|
||||
gcTestLog = 'D:\ROA\ROAREGISTRATURA\Teste\log_test_adaugare.txt'
|
||||
STRTOFILE('=== test_registratura_adaugare ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcTestLog)
|
||||
|
||||
ON ERROR DO tlog WITH '*** EROARE ' + TRANSFORM(ERROR()) + ': ' + MESSAGE() + ;
|
||||
' | ' + MESSAGE(1) + ' | prg=' + PROGRAM() + ' lin=' + TRANSFORM(LINENO())
|
||||
|
||||
DO tlog WITH 'Init mediu...'
|
||||
DO D:\ROA\ROAREGISTRATURA\Teste\test_init_env_registratura.prg
|
||||
IF TYPE('gnHandle') # 'N' OR gnHandle <= 0
|
||||
DO tlog WITH 'ESEC conectare - STOP'
|
||||
DO tfinal
|
||||
ENDIF
|
||||
DO tlog WITH 'Conectat, schema=' + gcS
|
||||
|
||||
* 0) cursorul listei + goRegistratura
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
IF !USED('cRegistratura')
|
||||
DO tlog WITH 'ESEC: nu exista cursorul cRegistratura - STOP'
|
||||
DO tfinal
|
||||
ENDIF
|
||||
SELECT cRegistratura
|
||||
LOCAL lnInregInitial
|
||||
lnInregInitial = RECCOUNT()
|
||||
SCATTER NAME goRegistratura MEMO BLANK
|
||||
DO tlog WITH 'Inregistrari initiale: ' + TRANSFORM(lnInregInitial)
|
||||
|
||||
* 1) alocare numar intern (seria 10, ca in ct_registratura.do_adauga)
|
||||
DO tlog WITH '--- Pas 1: alocare numar intern (seria 10)'
|
||||
LOCAL loGeneratorNumere, lcNumarIntern
|
||||
loGeneratorNumere = CREATEOBJECT('oGeneratorNumere')
|
||||
loGeneratorNumere.creeaza_cursor_serii(10)
|
||||
lcNumarIntern = ALLTRIM(STR(loGeneratorNumere.aloca_numar(10)))
|
||||
DO tlog WITH 'Numar intern alocat: ' + lcNumarIntern
|
||||
|
||||
* 2) adaugare document gol (pack_registratura.adauga_registratura)
|
||||
DO tlog WITH '--- Pas 2: adauga_registratura'
|
||||
LOCAL lnId_reg
|
||||
lnId_reg = 0
|
||||
lnId_reg = adauga_registratura('cRegistratura', lcNumarIntern)
|
||||
IF EMPTY(lnId_reg)
|
||||
DO tlog WITH 'ESEC: adauga_registratura a intors ' + TRANSFORM(lnId_reg) + ;
|
||||
' (pack_registratura lipseste din schema de test?) - STOP curat, nimic de sters'
|
||||
DO tfinal
|
||||
ENDIF
|
||||
DO tlog WITH 'OK document adaugat, id_reg=' + TRANSFORM(lnId_reg)
|
||||
|
||||
* pozitionare pe documentul nou + goRegistratura
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
SELECT cRegistratura
|
||||
LOCATE FOR id_reg = lnId_reg
|
||||
IF !FOUND()
|
||||
DO tlog WITH 'ESEC: documentul nou nu apare in vregistratura'
|
||||
ELSE
|
||||
SCATTER NAME goRegistratura MEMO
|
||||
DO tlog WITH 'Document nou gasit: nr_intern=' + TRANSFORM(NVL(numar_intern,'')) + ;
|
||||
' id_part=' + TRANSFORM(goRegistratura.id_part)
|
||||
ENDIF
|
||||
|
||||
* 3) salvare cu partener NULL - reproduce bugul P2
|
||||
* (astazi: eroare "Invalid use of NULL"/sql NULL; dupa fix M1: mesaj + refuz)
|
||||
DO tlog WITH '--- Pas 3: modifica_reg_dg cu id_part NULL (se asteapta refuz/eroare)'
|
||||
goRegistratura.descriere = 'TEST AUTOMAT - nu folositi'
|
||||
DO modifica_reg_dg WITH goRegistratura IN oproceduri_roaregistratura.prg
|
||||
DO tlog WITH 'Pas 3 incheiat (vezi mai sus daca a fost eroare de executie = bug P2 nereparat)'
|
||||
|
||||
* 4) salvare cu partener valid (refolosesc un partener din alt document existent)
|
||||
DO tlog WITH '--- Pas 4: modifica_reg_dg cu partener valid'
|
||||
LOCAL llSucces
|
||||
llSucces = goExecutor.oExecuta( ;
|
||||
"select id_part, denumire from vregistratura where id_part is not null and rownum = 1", 'cPartTest')
|
||||
IF llSucces AND USED('cPartTest') AND RECCOUNT('cPartTest') > 0
|
||||
SELECT cPartTest
|
||||
goRegistratura.id_part = id_part
|
||||
goRegistratura.denumire = denumire
|
||||
USE IN cPartTest
|
||||
goRegistratura.data = DATE()
|
||||
goRegistratura.numar = 'TST-' + lcNumarIntern
|
||||
goRegistratura.ie = 1
|
||||
goRegistratura.nr_pag = 1
|
||||
DO modifica_reg_dg WITH goRegistratura IN oproceduri_roaregistratura.prg
|
||||
|
||||
* verificare: datele au ajuns in baza
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
SELECT cRegistratura
|
||||
LOCATE FOR id_reg = lnId_reg
|
||||
IF FOUND() AND !ISNULL(id_part) AND ALLTRIM(NVL(numar,'')) == 'TST-' + lcNumarIntern
|
||||
DO tlog WITH 'OK salvare reusita: partener=' + TRANSFORM(NVL(denumire,'')) + ;
|
||||
' numar=' + TRANSFORM(NVL(numar,''))
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC verificare: documentul nu are datele asteptate dupa salvare'
|
||||
ENDIF
|
||||
ELSE
|
||||
DO tlog WITH 'SKIP Pas 4: nu exista niciun partener in vregistratura pe schema de test'
|
||||
ENDIF
|
||||
|
||||
* 5) EDITAREA documentului (fluxul Modifica -> Salveaza): modific campuri si re-salvez
|
||||
DO tlog WITH '--- Pas 5: editare document (modificare descriere/nr_pag/data + re-salvare)'
|
||||
SELECT cRegistratura
|
||||
LOCATE FOR id_reg = lnId_reg
|
||||
IF FOUND() AND !ISNULL(id_part)
|
||||
SCATTER NAME goRegistratura MEMO
|
||||
goRegistratura.descriere = 'TEST AUTOMAT - EDITAT'
|
||||
goRegistratura.nr_pag = 5
|
||||
goRegistratura.data = DATE() - 1
|
||||
goRegistratura.ie = 2
|
||||
DO modifica_reg_dg WITH goRegistratura IN oproceduri_roaregistratura.prg
|
||||
|
||||
* verificare: modificarile au ajuns in baza
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
SELECT cRegistratura
|
||||
LOCATE FOR id_reg = lnId_reg
|
||||
IF FOUND() AND ALLTRIM(NVL(descriere,'')) == 'TEST AUTOMAT - EDITAT' ;
|
||||
AND NVL(nr_pag,0) = 5 AND ie = 2
|
||||
DO tlog WITH 'OK editare reusita: descriere=' + TRANSFORM(NVL(descriere,'')) + ;
|
||||
' nr_pag=' + TRANSFORM(NVL(nr_pag,0)) + ' ie=' + TRANSFORM(ie) + ;
|
||||
' data=' + TRANSFORM(data)
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC verificare editare: documentul nu are valorile modificate'
|
||||
ENDIF
|
||||
ELSE
|
||||
DO tlog WITH 'SKIP Pas 5: documentul de test nu are partener (Pas 4 esuat/sarit)'
|
||||
ENDIF
|
||||
|
||||
* 6) curatenie: soft-delete documentul de test
|
||||
DO tlog WITH '--- Pas 6: stergere document de test'
|
||||
LOCAL lcSql, lnSucces
|
||||
lcSql = [begin pack_registratura.sterge_registratura(] + ALLTRIM(STR(lnId_reg)) + ;
|
||||
[,] + ALLTRIM(STR(gnIdUtil)) + [); end;]
|
||||
lnSucces = goExecutor.oExecute(lcSql)
|
||||
IF lnSucces < 0
|
||||
DO tlog WITH 'ATENTIE: stergerea a esuat: ' + TRANSFORM(goExecutor.cEroare) + ;
|
||||
' - stergeti manual id_reg=' + TRANSFORM(lnId_reg)
|
||||
ELSE
|
||||
DO tlog WITH 'OK document de test sters (soft-delete), id_reg=' + TRANSFORM(lnId_reg)
|
||||
ENDIF
|
||||
|
||||
DO tlog WITH '=== FINAL test_registratura_adaugare'
|
||||
DO tfinal
|
||||
|
||||
PROCEDURE tlog
|
||||
LPARAMETERS tcMsg
|
||||
STRTOFILE(TRANSFORM(tcMsg) + CHR(13)+CHR(10), gcTestLog, 1)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE tfinal
|
||||
ON ERROR
|
||||
CLOSE ALL
|
||||
QUIT
|
||||
ENDPROC
|
||||
111
Teste/test_registratura_form.prg
Normal file
111
Teste/test_registratura_form.prg
Normal file
@@ -0,0 +1,111 @@
|
||||
* test_registratura_form.prg
|
||||
* Test headless: incarcarea listei documentelor (viz_registratura) + instantierea
|
||||
* containerului ct_registratura pe un form ascuns (verifica clase/cursoare/grid).
|
||||
* Rulare: vfp9.exe -A -T "D:\ROA\ROAREGISTRATURA\Teste\test_registratura_form.prg"
|
||||
* Log: D:\ROA\ROAREGISTRATURA\Teste\log_test_form.txt
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
|
||||
* mock amessagebox PRIMUL in lista de proceduri (la nume duplicat castiga PRIMUL - testare-ui-vfp.md cap. j)
|
||||
SET PROCEDURE TO D:\ROA\ROAREGISTRATURA\COMUN\utile\Teste\mock_amessagebox.prg ADDITIVE
|
||||
PUBLIC gnMockRaspuns
|
||||
gnMockRaspuns = 6
|
||||
|
||||
PUBLIC gcTestLog
|
||||
gcTestLog = 'D:\ROA\ROAREGISTRATURA\Teste\log_test_form.txt'
|
||||
STRTOFILE('=== test_registratura_form ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcTestLog)
|
||||
|
||||
ON ERROR DO tlog WITH '*** EROARE ' + TRANSFORM(ERROR()) + ': ' + MESSAGE() + ;
|
||||
' | ' + MESSAGE(1) + ' | prg=' + PROGRAM() + ' lin=' + TRANSFORM(LINENO())
|
||||
|
||||
DO tlog WITH 'Init mediu...'
|
||||
DO D:\ROA\ROAREGISTRATURA\Teste\test_init_env_registratura.prg
|
||||
IF TYPE('gnHandle') # 'N' OR gnHandle <= 0
|
||||
DO tlog WITH 'ESEC conectare (gnHandle=' + TRANSFORM(IIF(TYPE('gnHandle')='N',gnHandle,-999)) + ') - STOP'
|
||||
DO tfinal
|
||||
ENDIF
|
||||
DO tlog WITH 'Conectat, gnHandle=' + TRANSFORM(gnHandle) + ' schema=' + gcS
|
||||
|
||||
* 1) incarcarea cursorului listei
|
||||
DO tlog WITH '--- Test 1: viz_registratura'
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
IF USED('cRegistratura')
|
||||
SELECT cRegistratura
|
||||
DO tlog WITH 'OK cursor cRegistratura, inregistrari=' + TRANSFORM(RECCOUNT())
|
||||
IF RECCOUNT() > 0
|
||||
GO BOTTOM
|
||||
DO tlog WITH 'Ultimul document: id_reg=' + TRANSFORM(NVL(id_reg,0)) + ;
|
||||
' nr_intern=' + TRANSFORM(NVL(numar_intern,'')) + ;
|
||||
' data_intern=' + TRANSFORM(data_intern) + ;
|
||||
' partener=' + TRANSFORM(NVL(denumire,''))
|
||||
GO TOP
|
||||
SCATTER NAME goRegistratura MEMO
|
||||
ELSE
|
||||
SCATTER NAME goRegistratura MEMO BLANK
|
||||
ENDIF
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC: cursorul cRegistratura NU exista'
|
||||
ENDIF
|
||||
|
||||
* 2) instantierea containerului listei pe un form ascuns
|
||||
DO tlog WITH '--- Test 2: instantiere ct_registratura pe form ascuns'
|
||||
LOCAL loForm
|
||||
loForm = CREATEOBJECT('Form')
|
||||
loForm.Visible = .F.
|
||||
loForm.Width = 810
|
||||
loForm.Height = 420
|
||||
loForm.AddObject('ct1', 'ct_registratura')
|
||||
IF VARTYPE(loForm.ct1) = 'O'
|
||||
DO tlog WITH 'OK ct_registratura instantiat; grid RecordSource=' + ;
|
||||
loForm.ct1.grid_registratura.RecordSource + ;
|
||||
' coloane=' + TRANSFORM(loForm.ct1.grid_registratura.ColumnCount) + ;
|
||||
' font=' + loForm.ct1.grid_registratura.FontName + ;
|
||||
' size=' + TRANSFORM(loForm.ct1.grid_registratura.FontSize)
|
||||
DO tlog WITH 'Coloana1: font=' + loForm.ct1.grid_registratura.Columns(1).FontName + ;
|
||||
' ' + TRANSFORM(loForm.ct1.grid_registratura.Columns(1).FontSize) + ;
|
||||
' | header=' + loForm.ct1.grid_registratura.Columns(1).Header1.FontName + ;
|
||||
' ' + TRANSFORM(loForm.ct1.grid_registratura.Columns(1).Header1.FontSize) + ;
|
||||
' | text1=' + loForm.ct1.grid_registratura.Columns(1).Text1.FontName + ;
|
||||
' ' + TRANSFORM(loForm.ct1.grid_registratura.Columns(1).Text1.FontSize)
|
||||
loForm.ct1.Visible = .T.
|
||||
DO tlog WITH 'nireg (contor afisat)=' + TRANSFORM(loForm.ct1.nireg)
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC: ct_registratura NU s-a instantiat'
|
||||
ENDIF
|
||||
loForm.Release()
|
||||
|
||||
* 3) instantierea zonei partener/nr/data (ct_part_nr_data)
|
||||
DO tlog WITH '--- Test 3: instantiere ct_part_nr_data'
|
||||
loForm = CREATEOBJECT('Form')
|
||||
loForm.Visible = .F.
|
||||
loForm.AddObject('ct2', 'ct_part_nr_data')
|
||||
IF VARTYPE(loForm.ct2) = 'O'
|
||||
DO tlog WITH 'OK ct_part_nr_data; llock=' + TRANSFORM(loForm.ct2.llock) + ;
|
||||
' buton="' + loForm.ct2.Command2.Caption + '"' + ;
|
||||
' txtClient.ReadOnly=' + TRANSFORM(loForm.ct2.txtClient.ReadOnly) + ;
|
||||
' font txtClient=' + loForm.ct2.txtClient.FontName + ;
|
||||
' ' + TRANSFORM(loForm.ct2.txtClient.FontSize)
|
||||
* deblocare/blocare campuri - nu ating baza
|
||||
loForm.ct2.deblocheaza_campuri()
|
||||
DO tlog WITH 'dupa deblocheaza_campuri: txtNumar.ReadOnly=' + TRANSFORM(loForm.ct2.txtNumar.ReadOnly)
|
||||
loForm.ct2.blocheaza_campuri()
|
||||
DO tlog WITH 'dupa blocheaza_campuri: txtNumar.ReadOnly=' + TRANSFORM(loForm.ct2.txtNumar.ReadOnly)
|
||||
ELSE
|
||||
DO tlog WITH 'ESEC: ct_part_nr_data NU s-a instantiat'
|
||||
ENDIF
|
||||
loForm.Release()
|
||||
|
||||
DO tlog WITH '=== FINAL test_registratura_form'
|
||||
DO tfinal
|
||||
|
||||
PROCEDURE tlog
|
||||
LPARAMETERS tcMsg
|
||||
STRTOFILE(TRANSFORM(tcMsg) + CHR(13)+CHR(10), gcTestLog, 1)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE tfinal
|
||||
ON ERROR
|
||||
CLOSE ALL
|
||||
QUIT
|
||||
ENDPROC
|
||||
193
Teste/test_registratura_ui.prg
Normal file
193
Teste/test_registratura_ui.prg
Normal file
@@ -0,0 +1,193 @@
|
||||
* test_registratura_ui.prg
|
||||
* Test UI VIZUAL (harness + screenshots): fluxul REAL al utilizatorului in fereastra
|
||||
* principala (Ferestre\fundal.scx) - lista documentelor, adaugare cu intrare directa
|
||||
* in editare (M3), fara prompt de salvare la bara laterala (M2), refuz elegant la
|
||||
* partener NULL (M1/M2), salvare + editare reala, filtrul "ultimul document" (M4),
|
||||
* fonturi Arial 10 (M5).
|
||||
* Rulare cu capturi:
|
||||
* powershell -File COMUN\utile\Teste\vfp_ui_harness.ps1 -TestPrg Teste\test_registratura_ui.prg ^
|
||||
* -Steps @('lista','adaugare_editare_directa','bara_fara_prompt','salvare_fara_partener','salvare_cu_partener','editare','lista_ultimul')
|
||||
* Log: Teste\test_registratura_ui_log.txt ; PNG: Teste\screenshots\
|
||||
* ATENTIE: doar pe schema de test (CENTRAL/MARIUSM_AUTO); documentul de test se sterge la final.
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
|
||||
PUBLIC gcUILog, gcSyncDir, gnMockRaspuns, gnPass, gnFail
|
||||
gcUILog = 'D:\ROA\ROAREGISTRATURA\Teste\test_registratura_ui_log.txt'
|
||||
gcSyncDir = 'D:\ROA\ROAREGISTRATURA\Teste\uisync\'
|
||||
IF !DIRECTORY(gcSyncDir)
|
||||
MD (gcSyncDir)
|
||||
ENDIF
|
||||
STORE 0 TO gnPass, gnFail
|
||||
gnMockRaspuns = 6
|
||||
|
||||
* mock amessagebox PRIMUL in lista de proceduri (la nume duplicat castiga PRIMUL)
|
||||
SET PROCEDURE TO D:\ROA\ROAREGISTRATURA\COMUN\utile\Teste\mock_amessagebox.prg ADDITIVE
|
||||
SET PROCEDURE TO D:\ROA\ROAREGISTRATURA\COMUN\utile\Teste\ui_harness.prg ADDITIVE
|
||||
|
||||
STRTOFILE('=== test_registratura_ui ' + TTOC(DATETIME()) + CHR(13)+CHR(10), gcUILog)
|
||||
|
||||
ON ERROR DO HarnessLog WITH '*** EROARE ' + TRANSFORM(ERROR()) + ': ' + MESSAGE() + ;
|
||||
' | ' + MESSAGE(1) + ' | prg=' + PROGRAM() + ' lin=' + TRANSFORM(LINENO())
|
||||
|
||||
DO HarnessLog WITH 'Init mediu...'
|
||||
DO D:\ROA\ROAREGISTRATURA\Teste\test_init_env_registratura.prg
|
||||
IF TYPE('gnHandle') # 'N' OR gnHandle <= 0
|
||||
DO HarnessLog WITH 'ESEC conectare - STOP'
|
||||
DO HarnessDone WITH 'esec_conectare'
|
||||
QUIT
|
||||
ENDIF
|
||||
DO HarnessLog WITH 'Conectat, schema=' + gcS
|
||||
|
||||
* globale suplimentare cerute de fundal.scx / Show
|
||||
PUBLIC gcUserNameApp, primadata, goCw, goHelp, oTool
|
||||
gcUserNameApp = 'MARIUS M'
|
||||
primadata = .T.
|
||||
STORE '' TO goCw, goHelp, oTool
|
||||
|
||||
* ------------- Pas 0: fereastra principala + lista (M4: doar ultimul document)
|
||||
DO viz_registratura IN oproceduri_roaregistratura.prg
|
||||
* NOSHOW: ocolesc Form.Show -> arata_meniu_fluna -> start_firma (init de aplicatie, nu de test);
|
||||
* Visible=.T. afiseaza formularul FARA sa ruleze metoda Show suprascrisa.
|
||||
DO FORM D:\ROA\ROAREGISTRATURA\Ferestre\fundal.scx NAME goFundal LINKED NOSHOW
|
||||
goFundal._pgfrmbase1.Page2.Ct_registratura1.do_initializeaza_cursor()
|
||||
goFundal.Visible = .T.
|
||||
goFundal.WindowState = 2
|
||||
goFundal._pgfrmbase1.ActivePage = 2
|
||||
DO verif WITH USED('cRegistratura') AND RECCOUNT('cRegistratura') = 1, ;
|
||||
'M4: lista initiala contine DOAR ultimul document (reccount=' + TRANSFORM(RECCOUNT('cRegistratura')) + ')'
|
||||
SELECT cRegistratura
|
||||
GO TOP
|
||||
SCATTER NAME goRegistratura MEMO
|
||||
DO HarnessLog WITH 'Ultimul document afisat: id_reg=' + TRANSFORM(NVL(id_reg,0))
|
||||
LOCAL loGrid
|
||||
loGrid = goFundal._pgfrmbase1.Page2.Ct_registratura1.grid_registratura
|
||||
DO verif WITH loGrid.FontName == 'Arial' AND loGrid.FontSize = 10, ;
|
||||
'M5: grid font=' + loGrid.FontName + ' ' + TRANSFORM(loGrid.FontSize)
|
||||
DO verif WITH loGrid.Columns(1).FontName == 'Arial' AND loGrid.Columns(1).FontSize = 10, ;
|
||||
'M5: coloana1 font=' + loGrid.Columns(1).FontName + ' ' + TRANSFORM(loGrid.Columns(1).FontSize)
|
||||
DO verif WITH loGrid.Columns(1).Header1.FontName == 'Arial' AND loGrid.Columns(1).Header1.FontSize = 10, ;
|
||||
'M5: header1 font=' + loGrid.Columns(1).Header1.FontName + ' ' + TRANSFORM(loGrid.Columns(1).Header1.FontSize)
|
||||
DO HarnessStep WITH 0, 'lista: doar ultimul document, fonturi Arial 10'
|
||||
|
||||
* ------------- Pas 1: adaugare -> intra DIRECT in editare (M3)
|
||||
LOCAL lnId_reg, loPnd
|
||||
goFundal._pgfrmbase1.Page2.Ct_registratura1.But_nou1.Click()
|
||||
lnId_reg = goRegistratura.id_reg
|
||||
loPnd = goFundal._pgfrmbase1.Page3.ct_part_nr_data1
|
||||
DO verif WITH goFundal._pgfrmbase1.ActivePage = 3, ;
|
||||
'M3: dupa adaugare s-a comutat pe Page3 (ActivePage=' + TRANSFORM(goFundal._pgfrmbase1.ActivePage) + ')'
|
||||
DO verif WITH !loPnd.llock, 'M3: documentul nou este DIRECT in editare (llock=' + TRANSFORM(loPnd.llock) + ')'
|
||||
DO verif WITH loPnd.Command2.Caption == 'Salveaza', ;
|
||||
'M3: butonul arata "Salveaza" (caption=' + loPnd.Command2.Caption + ')'
|
||||
DO verif WITH !EMPTY(lnId_reg), 'Adaugare: id_reg nou=' + TRANSFORM(NVL(lnId_reg,0))
|
||||
DO verif WITH loPnd.txtClient.FontName == 'Arial' AND loPnd.txtClient.FontSize = 10, ;
|
||||
'M5: txtClient font=' + loPnd.txtClient.FontName + ' ' + TRANSFORM(loPnd.txtClient.FontSize)
|
||||
DO HarnessStep WITH 1, 'adaugare: direct in editare, buton Salveaza'
|
||||
|
||||
* ------------- Pas 2: click pe bara laterala cu partener NULL -> FARA prompt de salvare (M2)
|
||||
LOCAL lcLogInainte
|
||||
lcLogInainte = FILETOSTR(gcUILog)
|
||||
goFundal._pgfrmbase1.Page3.ct_date_generale1.outlook2003bar1.Panel.button3.Click()
|
||||
LOCAL lcLogNou
|
||||
lcLogNou = SUBSTR(FILETOSTR(gcUILog), LEN(lcLogInainte) + 1)
|
||||
DO verif WITH !('Doriti sa salvati' $ lcLogNou), ;
|
||||
'M2: barei laterale NU i-a aparut promptul "Doriti sa salvati..." cu partener NULL'
|
||||
DO verif WITH !loPnd.llock, 'M2: raman in editare dupa click pe bara (llock=' + TRANSFORM(loPnd.llock) + ')'
|
||||
DO HarnessStep WITH 2, 'bara laterala: fara prompt, raman in editare'
|
||||
|
||||
* ------------- Pas 3: Salveaza cu partener NULL -> refuz elegant (M1/M2)
|
||||
lcLogInainte = FILETOSTR(gcUILog)
|
||||
loPnd.Command2.Click()
|
||||
lcLogNou = SUBSTR(FILETOSTR(gcUILog), LEN(lcLogInainte) + 1)
|
||||
DO verif WITH ('Alegeti partenerul' $ lcLogNou), 'M2: mesaj "Alegeti partenerul!" la salvare fara partener'
|
||||
DO verif WITH !loPnd.llock AND loPnd.Command2.Caption == 'Salveaza', ;
|
||||
'M2: campurile raman DEBLOCATE dupa refuz (llock=' + TRANSFORM(loPnd.llock) + ', caption=' + loPnd.Command2.Caption + ')'
|
||||
DO HarnessStep WITH 3, 'salvare fara partener: refuz, raman in editare'
|
||||
|
||||
* ------------- Pas 4: aleg partener + Salveaza -> salvare reusita (M1/M2)
|
||||
LOCAL llSucces
|
||||
llSucces = goExecutor.oExecuta( ;
|
||||
"select id_part, denumire from vregistratura where id_part is not null and rownum = 1", 'cPartTest')
|
||||
IF llSucces AND USED('cPartTest') AND RECCOUNT('cPartTest') > 0
|
||||
SELECT cPartTest
|
||||
goRegistratura.id_part = id_part
|
||||
goRegistratura.denumire = denumire
|
||||
USE IN cPartTest
|
||||
goRegistratura.data = DATE()
|
||||
goRegistratura.numar = 'TSTUI'
|
||||
goRegistratura.descriere = 'TEST UI AUTOMAT'
|
||||
goRegistratura.nr_pag = 1
|
||||
loPnd.Refresh()
|
||||
loPnd.Command2.Click()
|
||||
DO verif WITH loPnd.llock AND loPnd.Command2.Caption == 'Modifica', ;
|
||||
'M2: dupa salvare campurile sunt blocate (llock=' + TRANSFORM(loPnd.llock) + ', caption=' + loPnd.Command2.Caption + ')'
|
||||
* verificare in baza
|
||||
llSucces = goExecutor.oExecuta("select numar, descriere from vregistratura where id_reg = " + ;
|
||||
ALLTRIM(STR(lnId_reg)), 'cVerif')
|
||||
IF llSucces AND USED('cVerif') AND RECCOUNT('cVerif') > 0
|
||||
SELECT cVerif
|
||||
DO verif WITH ALLTRIM(NVL(numar,'')) == 'TSTUI', ;
|
||||
'M1: salvarea a ajuns in baza (numar=' + TRANSFORM(NVL(numar,'')) + ')'
|
||||
USE IN cVerif
|
||||
ELSE
|
||||
DO verif WITH .F., 'verificare in baza dupa salvare'
|
||||
ENDIF
|
||||
ELSE
|
||||
DO HarnessLog WITH 'SKIP Pas 4: niciun partener disponibil pe schema de test'
|
||||
ENDIF
|
||||
DO HarnessStep WITH 4, 'salvare cu partener: reusita, campuri blocate'
|
||||
|
||||
* ------------- Pas 5: editare (Modifica -> schimb descriere -> Salveaza)
|
||||
loPnd.Command2.Click() && Modifica -> deblocare
|
||||
DO verif WITH !loPnd.llock, 'Editare: campuri deblocate (llock=' + TRANSFORM(loPnd.llock) + ')'
|
||||
goRegistratura.descriere = 'TEST UI AUTOMAT - EDITAT'
|
||||
goRegistratura.nr_pag = 3
|
||||
loPnd.Command2.Click() && Salveaza
|
||||
llSucces = goExecutor.oExecuta("select descriere, nr_pag from vregistratura where id_reg = " + ;
|
||||
ALLTRIM(STR(lnId_reg)), 'cVerif2')
|
||||
IF llSucces AND USED('cVerif2') AND RECCOUNT('cVerif2') > 0
|
||||
SELECT cVerif2
|
||||
DO verif WITH ALLTRIM(NVL(descriere,'')) == 'TEST UI AUTOMAT - EDITAT' AND NVL(nr_pag,0) = 3, ;
|
||||
'Editare: modificarile au ajuns in baza (descriere=' + ALLTRIM(NVL(descriere,'')) + ', nr_pag=' + TRANSFORM(NVL(nr_pag,0)) + ')'
|
||||
USE IN cVerif2
|
||||
ELSE
|
||||
DO verif WITH .F., 'verificare in baza dupa editare'
|
||||
ENDIF
|
||||
DO HarnessStep WITH 5, 'editare document: re-salvare verificata in baza'
|
||||
|
||||
* ------------- Pas 6: inapoi pe lista -> tot ultimul document (M4 pe do_cauta/Page2.Activate)
|
||||
goFundal._pgfrmbase1.ActivePage = 2
|
||||
DO verif WITH RECCOUNT('cRegistratura') = 1, ;
|
||||
'M4: revenirea pe lista pastreaza filtrul ultimului document (reccount=' + TRANSFORM(RECCOUNT('cRegistratura')) + ')'
|
||||
SELECT cRegistratura
|
||||
GO TOP
|
||||
DO verif WITH id_reg = lnId_reg, 'M4: ultimul document afisat este cel de test (id_reg=' + TRANSFORM(id_reg) + ')'
|
||||
DO HarnessStep WITH 6, 'lista dupa: doar documentul de test'
|
||||
|
||||
* ------------- curatenie
|
||||
LOCAL lcSql, lnSucces
|
||||
lcSql = [begin pack_registratura.sterge_registratura(] + ALLTRIM(STR(lnId_reg)) + ;
|
||||
[,] + ALLTRIM(STR(gnIdUtil)) + [); end;]
|
||||
lnSucces = goExecutor.oExecute(lcSql)
|
||||
DO HarnessLog WITH IIF(lnSucces < 0, ;
|
||||
'ATENTIE: stergerea documentului de test a esuat - stergeti manual id_reg=' + TRANSFORM(lnId_reg), ;
|
||||
'Curatenie OK: document de test sters (soft-delete), id_reg=' + TRANSFORM(lnId_reg))
|
||||
|
||||
DO HarnessLog WITH '=== REZULTAT: PASS=' + TRANSFORM(gnPass) + ' FAIL=' + TRANSFORM(gnFail)
|
||||
DO HarnessDone WITH IIF(gnFail = 0, 'done', 'fail')
|
||||
ON ERROR
|
||||
CLOSE ALL
|
||||
QUIT
|
||||
|
||||
PROCEDURE verif
|
||||
LPARAMETERS tlOk, tcMsg
|
||||
IF tlOk
|
||||
gnPass = gnPass + 1
|
||||
DO HarnessLog WITH 'PASS: ' + tcMsg
|
||||
ELSE
|
||||
gnFail = gnFail + 1
|
||||
DO HarnessLog WITH 'FAIL: ' + tcMsg
|
||||
ENDIF
|
||||
ENDPROC
|
||||
Reference in New Issue
Block a user