* test_butoane_laterale_articole.prg * Verifica pagina de articole a notei dupa mutarea comenzilor de linie pe butoanele laterale * ale grid-ului (but_nouR / but_copiazaR / but_modificaR / but_stergeR, dispecerizate dupa * pgfArticole.ActivePage) si clasa ArticoleNotaEditor din ofacturare_editare.prg, care tine * logica: adaugare, comutarea flagului sters, duplicarea liniei si nomenclatoarele coloanelor. * Nomenclatoarele propriu-zise deschid dialog modal, deci se verifica doar dispecerizarea si * garzile (coloana fara nomenclator, linie provenita dintr-un set). * Documentul nu e ancorat pe cod - se descopera prin descopera_caz_test.prg. * Nu scrie in Oracle - doar in cursorul tvd, in memorie. QUIT la final. SET SAFETY OFF SET TALK OFF PUBLIC gcErrLog gcErrLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_butoane_laterale_articole_log.txt' STRTOFILE('start' + CHR(13) + CHR(10), gcErrLog) ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() 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), gcErrLog, 1) QUIT ENDIF SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\programe\ofacturare_editare.prg ADDITIVE SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\descopera_caz_test.prg ADDITIVE *!* test_init_env_auto incarca clasa omodificari din working copy-ul ROACONT (alt SET PATH) - *!* o eliberam si o reincarcam pe cea de sub test, cu cale completa RELEASE CLASSLIB omodificari SET CLASSLIB TO D:\ROA\ROAFACTURARE\COMUN\clase\omodificari.vcx ADDITIVE PUBLIC gnPass, gnFail gnPass = 0 gnFail = 0 LOCAL llCaz llCaz = DescoperaCazTest('FACTURA_ARTICOLE', 'crscaz_a') IF !llCaz STRTOFILE('EROARE: cazul FACTURA_ARTICOLE nu a fost gasit' + CHR(13) + CHR(10), gcErrLog, 1) STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1) QUIT ENDIF STRTOFILE('caz: cod=' + TRANSFORM(crscaz_a.cod) + ' id_vanzare=' + TRANSFORM(crscaz_a.id_vanzare) + CHR(13) + CHR(10), gcErrLog, 1) LOCAL llOk, lnIdSet, loForm, loEditor llOk = IncarcaCursoareModificareNota(crscaz_a.cod, crscaz_a.an, crscaz_a.luna, .F.) IF !llOk OR !Used('tact') OR Reccount('tact') = 0 STRTOFILE('EROARE: IncarcaCursoareModificareNota a esuat' + CHR(13) + CHR(10), gcErrLog, 1) STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1) 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 Select tact loForm = Createobject([frm_modific2024], lnIdSet) loForm.WindowType = 0 loForm.Show() DO asserteaza WITH 'formularul are articole (lAreArticoleVanzari)', loForm.lAreArticoleVanzari, TRANSFORM(loForm.lAreArticoleVanzari) *========================= 1) butoanele laterale ========================= DO asserteaza WITH 'but_nouR exista pe formular', PEMSTATUS(loForm, 'but_nouR', 5), TRANSFORM(PEMSTATUS(loForm, 'but_nouR', 5)) DO asserteaza WITH 'but_copiazaR exista pe formular', PEMSTATUS(loForm, 'but_copiazaR', 5), TRANSFORM(PEMSTATUS(loForm, 'but_copiazaR', 5)) DO asserteaza WITH 'but_modificaR exista pe formular', PEMSTATUS(loForm, 'but_modificaR', 5), TRANSFORM(PEMSTATUS(loForm, 'but_modificaR', 5)) DO asserteaza WITH 'but_stergeR exista pe formular', PEMSTATUS(loForm, 'but_stergeR', 5), TRANSFORM(PEMSTATUS(loForm, 'but_stergeR', 5)) DO asserteaza WITH 'but_nouR cheama do_adauga_rul', LOWER(ALLTRIM(loForm.but_nouR.caction)) == 'do_adauga_rul', loForm.but_nouR.caction DO asserteaza WITH 'but_nouR e in aceeasi coloana cu celelalte (Left identic)', loForm.but_nouR.Left == loForm.but_stergeR.Left, TRANSFORM(loForm.but_nouR.Left) + ' vs ' + TRANSFORM(loForm.but_stergeR.Left) DO asserteaza WITH 'but_nouR e activ pe document neblocat', loForm.but_nouR.Enabled, TRANSFORM(loForm.but_nouR.Enabled) *========================= 2) butoanele late de pe pagina au disparut ========================= DO asserteaza WITH 'cmdAdaugaArticol nu mai exista pe PAGE3', !PEMSTATUS(loForm.pgfArticole.PAGE3, 'cmdAdaugaArticol', 5), TRANSFORM(PEMSTATUS(loForm.pgfArticole.PAGE3, 'cmdAdaugaArticol', 5)) DO asserteaza WITH 'cmdStergeArticol nu mai exista pe PAGE3', !PEMSTATUS(loForm.pgfArticole.PAGE3, 'cmdStergeArticol', 5), TRANSFORM(PEMSTATUS(loForm.pgfArticole.PAGE3, 'cmdStergeArticol', 5)) DO asserteaza WITH 'cmdSincronizeazaArticole a ramas', PEMSTATUS(loForm.pgfArticole.PAGE3, 'cmdSincronizeazaArticole', 5), TRANSFORM(PEMSTATUS(loForm.pgfArticole.PAGE3, 'cmdSincronizeazaArticole', 5)) DO asserteaza WITH 'cmdSincronizeazaArticole e la stanga (Left=0)', loForm.pgfArticole.PAGE3.cmdSincronizeazaArticole.Left == 0, TRANSFORM(loForm.pgfArticole.PAGE3.cmdSincronizeazaArticole.Left) DO asserteaza WITH 'cmdSincronizeazaArticole e evidentiat (bold)', loForm.pgfArticole.PAGE3.cmdSincronizeazaArticole.FontBold, TRANSFORM(loForm.pgfArticole.PAGE3.cmdSincronizeazaArticole.FontBold) *========================= 3) clasa ArticoleNotaEditor ========================= loEditor = Createobject('ArticoleNotaEditor', loForm) DO asserteaza WITH 'ArticoleNotaEditor se instantiaza cu formularul', VARTYPE(loEditor) == 'O', VARTYPE(loEditor) DO asserteaza WITH 'Editabil() = .T. pe document neblocat', loEditor.Editabil(), TRANSFORM(loEditor.Editabil()) DO asserteaza WITH 'AreNomenclator(tvd.denumire)', loEditor.AreNomenclator('tvd.denumire'), 'articol' DO asserteaza WITH 'AreNomenclator(tvd.nume_gestiune)', loEditor.AreNomenclator('tvd.nume_gestiune'), 'gestiune' DO asserteaza WITH 'AreNomenclator(tvd.nume_val)', loEditor.AreNomenclator('tvd.nume_val'), 'valuta' DO asserteaza WITH 'AreNomenclator(tvd.taxcode)', loEditor.AreNomenclator('tvd.taxcode'), 'cod TVA' DO asserteaza WITH 'AreNomenclator(tvd.cantitate) = .F.', !loEditor.AreNomenclator('tvd.cantitate'), 'cantitate' DO asserteaza WITH 'AreNomenclator() pe control gol = .F.', !loEditor.AreNomenclator(''), 'gol' DO asserteaza WITH 'ModificaNomenclator pe coloana fara nomenclator nu deschide nimic', !loEditor.ModificaNomenclator('tvd.cantitate'), 'cantitate' *========================= 4) duplicarea liniei prin butonul lateral ========================= LOCAL lnReccountInitial, lcDenumireSursa, lnIdVanzareDetSursa SELECT tvd GO TOP lnReccountInitial = Reccount('tvd') lcDenumireSursa = NVL(tvd.denumire, '') lnIdVanzareDetSursa = NVL(tvd.id_vanzare_det, 0) loForm.pgfArticole.ActivePage = 3 loForm.do_copie_rul() DO asserteaza WITH 'do_copie_rul pe pagina 3: Reccount(tvd) creste cu 1', Reccount('tvd') == lnReccountInitial + 1, TRANSFORM(Reccount('tvd')) + ' (initial ' + TRANSFORM(lnReccountInitial) + ')' SELECT tvd GO BOTTOM DO asserteaza WITH 'linia duplicata pastreaza denumirea', NVL(tvd.denumire,'') == m.lcDenumireSursa, NVL(tvd.denumire,'') DO asserteaza WITH 'linia duplicata e noua (id_vanzare_det = 0)', NVL(tvd.id_vanzare_det,-1) == 0, TRANSFORM(NVL(tvd.id_vanzare_det,-1)) DO asserteaza WITH 'linia duplicata e desprinsa de set (id_vanzare_set = 0)', NVL(tvd.id_vanzare_set,-1) == 0, TRANSFORM(NVL(tvd.id_vanzare_set,-1)) DO asserteaza WITH 'linia duplicata e marcata modificata', tvd.lmodificat, TRANSFORM(tvd.lmodificat) DO asserteaza WITH 'linia duplicata nu e stearsa', NVL(tvd.sters,0) == 0, TRANSFORM(NVL(tvd.sters,0)) DO asserteaza WITH 'linia sursa ramane salvata (id_vanzare_det neschimbat)', .T., TRANSFORM(m.lnIdVanzareDetSursa) *========================= 5) nomenclatorul nu se aplica pe linii din set ========================= LOCAL lnRecnoDuplicat lnRecnoDuplicat = Recno('tvd') REPLACE id_vanzare_set WITH 77 IN tvd DO asserteaza WITH 'ModificaNomenclator refuza linia dintr-un set', !loEditor.ModificaNomenclator('tvd.denumire'), 'id_vanzare_set = 77' REPLACE id_vanzare_set WITH 0 IN tvd *========================= 6) pe paginile de rulaje, adaugarea de articol nu se declanseaza ========================= LOCAL lnReccountInaintePagina1 lnReccountInaintePagina1 = Reccount('tvd') loForm.pgfArticole.ActivePage = 1 loForm.do_adauga_rul() DO asserteaza WITH 'do_adauga_rul pe pagina 1 nu atinge tvd', Reccount('tvd') == lnReccountInaintePagina1, TRANSFORM(Reccount('tvd')) *========================= 7) butonul de adaugare urmeaza colapsarea pageframe-ului ========================= LOCAL llVizibilInainte llVizibilInainte = loForm.but_nouR.Visible loForm.afiseaza_rulaje() DO asserteaza WITH 'afiseaza_rulaje comuta si but_nouR.Visible', loForm.but_nouR.Visible <> m.llVizibilInainte, TRANSFORM(loForm.but_nouR.Visible) loForm.afiseaza_rulaje() DO asserteaza WITH 'a doua comutare readuce but_nouR la starea initiala', loForm.but_nouR.Visible == m.llVizibilInainte, TRANSFORM(loForm.but_nouR.Visible) STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1) loForm.Release() IF Used('tvd') Use In tvd ENDIF QUIT PROCEDURE asserteaza LPARAMETERS tcNume, tlConditie, tcValoare IF m.tlConditie gnPass = gnPass + 1 STRTOFILE('PASS ' + m.tcNume + CHR(13) + CHR(10), gcErrLog, 1) ELSE gnFail = gnFail + 1 STRTOFILE('FAIL ' + m.tcNume + ' (valoare: ' + m.tcValoare + ')' + CHR(13) + CHR(10), gcErrLog, 1) ENDIF ENDPROC PROCEDURE test_error_handler LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcErrLog, 1) ENDPROC