* test_efactura_readonly.prg * Verifica frm_modific2024 (omodificari.vc2) cand documentul de vanzare a fost trimis in eFactura: * articolele raman VIZIBILE pe pgfArticole.PAGE3 (pagina se pregateste normal, PageCount=3, tvd plin), * dar editarea lor se opreste - grid needitabil (.When pe fiecare coloana), butoanele de adaugare/ * stergere linie dezactivate, marcaj vizual afisat. Verifica de asemenea ca notele/rulajele nu sunt * afectate si ca documentele NEtrimise in eFactura raman complet editabile (regresie). * Conditia se determina prin EsteInEFactura(tvanz.id_fact) - id_fact e distinct de id_vanzare * (VANZARI.ID_FACT), acelasi camp folosit deja de ofacturare_comun.vc2:3764. * Documente reale, gasite prin interogare (nu inventate): un document deja trimis in eFactura * (VANZARI.ID_FACT populat, prezent in ANAF_EFACTURA) si un document obisnuit, descoperit prin * proprietate (descopera_caz_test.prg). Nu scrie in Oracle - doar SELECT-uri si cursoare in * memorie (tvd/tvanz/tact raman locale, Show() nu salveaza). QUIT la final. SET SAFETY OFF SET TALK OFF PUBLIC gcErrLog gcErrLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_efactura_readonly_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 *!* --- control direct pe functia EsteInEFactura, fara formular --- DO asserteaza WITH 'EsteInEFactura(0) = .F. (niciun id_fact real e 0)', !EsteInEFactura(0), '' LOCAL lnEfactCnt lnEfactCnt = 0 =goExecutor.oSelecteaza2Value([select count(*) as c from anaf_efactura where id_fact = 8008013], @lnEfactCnt) IF Nvl(m.lnEfactCnt,0) > 0 DO asserteaza WITH 'EsteInEFactura(8008013) = .T. (document real, cunoscut ca trimis)', EsteInEFactura(8008013), '' ELSE STRTOFILE('AVERTISMENT: documentul id_fact=8008013 nu mai e in anaf_efactura, sarit controlul direct' + CHR(13) + CHR(10), gcErrLog, 1) ENDIF *!* ===================== CAZ A: document trimis in eFactura (id_vanzare=1013, id_fact=8008013) ===================== LOCAL llOkA, loFormA llOkA = IncarcaCursoareModificareNota(1140509, 2025, 8, .F.) IF !llOkA OR !Used('tact') OR Reccount('tact') = 0 STRTOFILE('EROARE: IncarcaCursoareModificareNota a esuat pe cazul A (cod=1140509)' + 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 LOCAL lnIdSetA lnIdSetA = tact.id_set IF !Used('crsJtvaTemp') update_jtva_coloane("", "crsJtvaTemp", 6) ENDIF IF Used('tvd') Use In tvd ENDIF IF Used('tvanz') Use In tvanz ENDIF Select tact loFormA = Createobject([frm_modific2024], lnIdSetA) loFormA.WindowType = 0 loFormA.Show() DO asserteaza WITH 'caz A: formularul are articole (lAreArticoleVanzari)', loFormA.lAreArticoleVanzari, TRANSFORM(loFormA.lAreArticoleVanzari) DO asserteaza WITH 'caz A: nIdVanzare = 1013 (descoperit prin IncarcaVanzareDinNota)', loFormA.nIdVanzare == 1013, TRANSFORM(loFormA.nIdVanzare) DO asserteaza WITH 'caz A: tvanz.id_fact = 8008013 (coloana noua incarcata de IncarcaVanzareNota)', Used('tvanz') AND Reccount('tvanz') = 1 AND tvanz.id_fact == 8008013, IIF(Used('tvanz') AND Reccount('tvanz')=1, TRANSFORM(tvanz.id_fact), 'tvanz lipsa') DO asserteaza WITH 'caz A: lArticoleReadOnly = .T. (documentul e in eFactura)', loFormA.lArticoleReadOnly, TRANSFORM(loFormA.lArticoleReadOnly) *!* --- articolele raman VIZIBILE: pagina se pregateste normal, nu se suprima --- DO asserteaza WITH 'caz A: PAGE3 (articole) NU e suprimata - pgfArticole.PageCount = 3', loFormA.pgfArticole.PageCount == 3, TRANSFORM(loFormA.pgfArticole.PageCount) DO asserteaza WITH 'caz A: gridul ramane legat pe tvd (RecordSource neschimbat)', loFormA.pgfArticole.PAGE3.grdArticoleFactura.RecordSource == 'tvd', loFormA.pgfArticole.PAGE3.grdArticoleFactura.RecordSource DO asserteaza WITH 'caz A: tvd are cel putin o linie vizibila (articolele nu au fost golite)', Used('tvd') AND Reccount('tvd') > 0, IIF(Used('tvd'), TRANSFORM(Reccount('tvd')), 'tvd lipsa') *!* --- doar EDITAREA se opreste: butoanele si celulele needitabile --- DO asserteaza WITH 'caz A: cmdAdaugaArticol.Enabled = .F.', !loFormA.pgfArticole.PAGE3.cmdAdaugaArticol.Enabled, TRANSFORM(loFormA.pgfArticole.PAGE3.cmdAdaugaArticol.Enabled) DO asserteaza WITH 'caz A: cmdStergeArticol.Enabled = .F.', !loFormA.pgfArticole.PAGE3.cmdStergeArticol.Enabled, TRANSFORM(loFormA.pgfArticole.PAGE3.cmdStergeArticol.Enabled) DO asserteaza WITH 'caz A: marcajul vizual (lblArticoleReadOnly) e vizibil', loFormA.pgfArticole.PAGE3.lblArticoleReadOnly.Visible, TRANSFORM(loFormA.pgfArticole.PAGE3.lblArticoleReadOnly.Visible) DO asserteaza WITH 'caz A: txtDiscountArt.ReadOnly = .T.', loFormA.pgfArticole.PAGE3.txtDiscountArt.ReadOnly, TRANSFORM(loFormA.pgfArticole.PAGE3.txtDiscountArt.ReadOnly) *!* coloanele gridului nu se materializeaza sub -A -T (ColumnCount=0) - editabilitatea celulei *!* (.When pe cCantitateArt/cPretArt/cPretAchizitieArt/cPretCuTvaArt) se verifica separat, cu *!* harnessul UI vizibil, in test_ui_efactura_readonly.prg *!* --- stergerea de linie (Click direct, fara dialog modal) e blocata de garda --- LOCAL lnStersInainte lnStersInainte = Nvl(tvd.sters, 0) loFormA.pgfArticole.PAGE3.cmdStergeArticol.Click() DO asserteaza WITH 'caz A: cmdStergeArticol.Click() nu modifica linia (garda eFactura)', Nvl(tvd.sters,0) == m.lnStersInainte, TRANSFORM(Nvl(tvd.sters,0)) *!* --- notele/rulajele raman neafectate de garda (grid1, pe notele contabile) --- DO asserteaza WITH 'caz A: Grid1 (nota contabila) ramane editabil - garda nu atinge nota', !loFormA.Grid1.ReadOnly, TRANSFORM(loFormA.Grid1.ReadOnly) loFormA.Release() IF Used('tvd') Use In tvd ENDIF IF Used('tvanz') Use In tvanz ENDIF IF Used('actactan') Use In actactan ENDIF IF Used('tact') Use In tact ENDIF IF Used('rul_temp') Use In rul_temp ENDIF IF Used('trul') Use In trul ENDIF IF Used('rul_temp_obinv') Use In rul_temp_obinv ENDIF IF Used('trul_obinv') Use In trul_obinv ENDIF *!* ===================== CAZ B: document obisnuit, NEtrimis in eFactura (regresie) ===================== LOCAL llCazB llCazB = DescoperaCazTest('FACTURA_ARTICOLE', 'crscaz_b') IF !llCazB 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 B: cod=' + TRANSFORM(crscaz_b.cod) + ' an=' + TRANSFORM(crscaz_b.an) + ' luna=' + TRANSFORM(crscaz_b.luna) + ; ' id_vanzare=' + TRANSFORM(crscaz_b.id_vanzare) + CHR(13) + CHR(10), gcErrLog, 1) LOCAL llOkB, loFormB llOkB = IncarcaCursoareModificareNota(crscaz_b.cod, crscaz_b.an, crscaz_b.luna, .F.) IF !llOkB OR !Used('tact') OR Reccount('tact') = 0 STRTOFILE('EROARE: IncarcaCursoareModificareNota a esuat pe cazul B' + 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 LOCAL lnIdSetB lnIdSetB = tact.id_set IF !Used('crsJtvaTemp') update_jtva_coloane("", "crsJtvaTemp", 6) ENDIF IF Used('tvd') Use In tvd ENDIF IF Used('tvanz') Use In tvanz ENDIF Select tact loFormB = Createobject([frm_modific2024], lnIdSetB) loFormB.WindowType = 0 loFormB.Show() DO asserteaza WITH 'caz B: formularul are articole (lAreArticoleVanzari)', loFormB.lAreArticoleVanzari, TRANSFORM(loFormB.lAreArticoleVanzari) DO asserteaza WITH 'caz B: lArticoleReadOnly = .F. (documentul NU e in eFactura)', !loFormB.lArticoleReadOnly, TRANSFORM(loFormB.lArticoleReadOnly) DO asserteaza WITH 'caz B: PAGE3 pregatita normal', loFormB.pgfArticole.PageCount == 3, TRANSFORM(loFormB.pgfArticole.PageCount) DO asserteaza WITH 'caz B: cmdAdaugaArticol.Enabled = .T. (neregresat)', loFormB.pgfArticole.PAGE3.cmdAdaugaArticol.Enabled, TRANSFORM(loFormB.pgfArticole.PAGE3.cmdAdaugaArticol.Enabled) DO asserteaza WITH 'caz B: cmdStergeArticol.Enabled = .T. (neregresat)', loFormB.pgfArticole.PAGE3.cmdStergeArticol.Enabled, TRANSFORM(loFormB.pgfArticole.PAGE3.cmdStergeArticol.Enabled) DO asserteaza WITH 'caz B: marcajul vizual NU e afisat', !loFormB.pgfArticole.PAGE3.lblArticoleReadOnly.Visible, TRANSFORM(loFormB.pgfArticole.PAGE3.lblArticoleReadOnly.Visible) DO asserteaza WITH 'caz B: txtDiscountArt.ReadOnly = .F. (neregresat)', !loFormB.pgfArticole.PAGE3.txtDiscountArt.ReadOnly, TRANSFORM(loFormB.pgfArticole.PAGE3.txtDiscountArt.ReadOnly) *!* editabilitatea celulei (.When) se verifica separat, cu harnessul UI vizibil - vezi *!* test_ui_efactura_readonly.prg IF Used('tvd') AND Reccount('tvd') > 0 LOCAL lnStersInainteB lnStersInainteB = Nvl(tvd.sters, 0) loFormB.pgfArticole.PAGE3.cmdStergeArticol.Click() DO asserteaza WITH 'caz B: cmdStergeArticol.Click() comuta flagul sters (neregresat)', Nvl(tvd.sters,0) <> m.lnStersInainteB, TRANSFORM(Nvl(tvd.sters,0)) *!* restaureaza starea locala a cursorului (memorie, nesalvat in Oracle) REPLACE sters WITH m.lnStersInainteB IN tvd ENDIF STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1) loFormB.Release() IF Used('actactan') Use In actactan ENDIF IF Used('tact') Use In tact ENDIF IF Used('rul_temp') Use In rul_temp ENDIF IF Used('trul') Use In trul ENDIF IF Used('rul_temp_obinv') Use In rul_temp_obinv ENDIF IF Used('trul_obinv') Use In trul_obinv ENDIF IF Used('tvanz') Use In tvanz ENDIF IF Used('tvd') Use In tvd ENDIF IF Used('crscaz_b') Use In crscaz_b 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