* test_ui_sterge_linie.prg - verifica pe formular vizibil (nu headless) butonul nou * but_stergeR pe pagina de articole: comuta tvd.sters intre 0 si 1 pe linia curenta, * marcheaza lmodificat si grizeaza vizual randul (DynamicForeColor pe toate coloanele * grid-ului) fara sa-l scoata din cursor - stergerea ramane logica, nu fizica. * Document: cod=1139934/an=2021/luna=12 (id_vanzare=882, 2 linii, are si rulaje, altfel * Show() ascunde tot pgfArticole). Nu scrie in Oracle. QUIT la final. SET SAFETY OFF SET TALK OFF PUBLIC gcUILog, gcSyncDir gcSyncDir = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\uisync4\' gcUILog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_ui_sterge_linie_log.txt' STRTOFILE('start' + CHR(13) + CHR(10), gcUILog) ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() PUBLIC gnPass, gnFail gnPass = 0 gnFail = 0 SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\utile\Teste\ui_harness.prg ADDITIVE DO HarnessInit DO ('D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto.prg') WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT' IF gnHandle <= 0 STRTOFILE('EROARE: conectare esuata' + CHR(13) + CHR(10), gcUILog, 1) DO HarnessDone WITH 'error' QUIT ENDIF SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\programe\ofacturare_editare.prg ADDITIVE *!* test_init_env_auto incarca intai copia omodificari din ROACONT - o eliberam si o reincarcam pe cea de sub test RELEASE CLASSLIB omodificari SET CLASSLIB TO D:\ROA\ROAFACTURARE\COMUN\clase\omodificari.vcx ADDITIVE LOCAL llOk, lnIdSet, loForm, loGrid, loBut LOCAL lnStersInitialR1, lnStersInitialR2 llOk = IncarcaCursoareModificareNota(1139934, 2021, 12, .F.) IF !llOk OR !Used('tact') OR Reccount('tact') = 0 STRTOFILE('EROARE: IncarcaCursoareModificareNota a esuat pe cod=1139934' + CHR(13) + CHR(10), gcUILog, 1) DO HarnessDone WITH 'error' QUIT ENDIF Select a.*, Iif(Nvl(id_jtva_coloana,0)=0,0,1) As cu_Tva From tact a Into Cursor tact Readwrite Go Top In tact lnIdSet = tact.id_set IF !Used('crsJtvaTemp') update_jtva_coloane("", "crsJtvaTemp", 6) ENDIF IncarcaArticoleFactura(882, 'crsArticoleFactura') Select tact loForm = Createobject([frm_modific2024], lnIdSet) loForm.WindowType = 0 loForm.Show() loForm.pgfArticole.ActivePage = 3 DOEVENTS FORCE loGrid = loForm.pgfArticole.Page3.grdArticoleFactura loBut = loForm.but_stergeR DO asserteaza WITH 'butonul but_stergeR exista', TYPE('loBut.Caption') = 'C', TYPE('loBut.Caption') DO asserteaza WITH 'butonul e vizibil', loBut.Visible, TRANSFORM(loBut.Visible) SELECT tvd GO TOP lnStersInitialR1 = NVL(tvd.sters, 0) DO asserteaza WITH 'linia 1 incarcata cu sters=0', m.lnStersInitialR1 = 0, TRANSFORM(m.lnStersInitialR1) SELECT tvd SKIP lnStersInitialR2 = NVL(tvd.sters, 0) GO TOP *!* primul click - marcheaza linia 1 ca stearsa (logic, ramane in cursor) loBut.Click() DOEVENTS FORCE SELECT tvd GO TOP DO asserteaza WITH 'dupa click 1: sters=1 pe linia curenta', NVL(tvd.sters,0) = 1, TRANSFORM(NVL(tvd.sters,0)) DO asserteaza WITH 'dupa click 1: lmodificat=.T.', tvd.lmodificat = .T., TRANSFORM(tvd.lmodificat) SELECT tvd SKIP DO asserteaza WITH 'linia 2 neatinsa de stergerea liniei 1', NVL(tvd.sters,0) = m.lnStersInitialR2, TRANSFORM(NVL(tvd.sters,0)) GO TOP *!* al doilea click pe aceeasi linie - restaureaza (comutare, nu buton separat) *!* asertia ruleaza INAINTE de orice HarnessStep - daca harness-ul nu detecteaza fereastra, *!* procesul e omorat la primul READY si tot ce urmeaza dupa acel pas nu se mai executa loBut.Click() DOEVENTS FORCE SELECT tvd GO TOP DO asserteaza WITH 'dupa click 2: sters=0 (restaurata)', NVL(tvd.sters,0) = 0, TRANSFORM(NVL(tvd.sters,0)) *!* al treilea click - re-marcheaza linia, doar ca sa fie vizibila grizarea in captura de mai jos loBut.Click() DOEVENTS FORCE SELECT tvd GO TOP DO asserteaza WITH 'dupa click 3: sters=1 (re-marcata pentru captura)', NVL(tvd.sters,0) = 1, TRANSFORM(NVL(tvd.sters,0)) STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcUILog, 1) *!* muta randul curent al gridului pe linia 2, ca selectia (fundal albastru) sa nu acopere *!* culoarea DynamicForeColor a liniei grizate (linia 1) in captura SELECT tvd SKIP loGrid.SetFocus() DOEVENTS FORCE DO HarnessStep WITH 0, 'pagina3 articole - linia 1 grizata (sters=1)', 25 loForm.Release() IF Used('crsArticoleFactura') Use In crsArticoleFactura ENDIF DO HarnessDone WITH 'done' QUIT PROCEDURE asserteaza LPARAMETERS tcNume, tlConditie, tcValoare IF m.tlConditie gnPass = gnPass + 1 STRTOFILE('PASS ' + m.tcNume + CHR(13) + CHR(10), gcUILog, 1) ELSE gnFail = gnFail + 1 STRTOFILE('FAIL ' + m.tcNume + ' (valoare: ' + m.tcValoare + ')' + CHR(13) + CHR(10), gcUILog, 1) ENDIF ENDPROC PROCEDURE test_error_handler LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcUILog, 1) ENDPROC