* test_ui_efactura_readonly.prg - verificare UI (formular vizibil, nu headless - coloanele * gridului NU se materializeaza sub -A -T) a editabilitatii gridului de articole cand documentul * a fost trimis in eFactura: cantitate/pret/pret_achizitie/checkbox pret_cu_tva NU primesc focus * (When()=.F.) pe TOATE liniile, nu doar pe liniile de set. Verificarile de editabilitate se fac * prin apel DIRECT al metodei .When() a controlului (echivalentul programatic al "celula * primeste focus"), nu prin navigare cu input real (masina partajata - fara SendInput/click real). * Document real: id_vanzare=1013 (cod=1140509/an=2025/luna=8), efectiv trimis in eFactura * (VANZARI.ID_FACT=8008013, prezent in ANAF_EFACTURA). Controlul negativ (grid editabil cand NU e * in eFactura) e deja acoperit headless, cu apel direct pe .When(), in test_efactura_readonly.prg - * aici doar cazul SINTETIC de revenire (lArticoleReadOnly comutat inapoi pe acelasi document real, * fara sa mai caute alt document), ca sa confirme ca gating-ul e chiar pe flag, nu o coincidenta. * 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\uisync_efactura\' gcUILog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_ui_efactura_readonly_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 llOk = IncarcaCursoareModificareNota(1140509, 2025, 8, .F.) IF !llOk OR !Used('tact') OR Reccount('tact') = 0 STRTOFILE('EROARE: IncarcaCursoareModificareNota a esuat pe cod=1140509' + 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 *!* articolele pregatite INAINTE de Createobject, ca Load() sa lege grid-ul o singura data pe *!* tvd deja plin - fara asta, fallback-ul din Show() recreeaza tvd prin SQL dupa constructie, *!* iar gridul (legat la construire pe cursorul initial) ramane cu ColumnCount=0 IncarcaArticoleFactura(1013, 'crsArticoleFactura') Select tact loForm = Createobject([frm_modific2024], lnIdSet) loForm.WindowType = 0 loForm.Show() loForm.pgfArticole.ActivePage = 3 DOEVENTS FORCE DO asserteaza WITH 'documentul e recunoscut ca trimis in eFactura (lArticoleReadOnly)', loForm.lArticoleReadOnly, TRANSFORM(loForm.lArticoleReadOnly) DO asserteaza WITH 'PAGE3 (articole) NU e suprimata - pgfArticole.PageCount = 3', loForm.pgfArticole.PageCount == 3, TRANSFORM(loForm.pgfArticole.PageCount) DO asserteaza WITH 'cmdAdaugaArticol.Enabled = .F.', !loForm.pgfArticole.PAGE3.cmdAdaugaArticol.Enabled, TRANSFORM(loForm.pgfArticole.PAGE3.cmdAdaugaArticol.Enabled) DO asserteaza WITH 'cmdStergeArticol.Enabled = .F.', !loForm.pgfArticole.PAGE3.cmdStergeArticol.Enabled, TRANSFORM(loForm.pgfArticole.PAGE3.cmdStergeArticol.Enabled) DO asserteaza WITH 'marcajul vizual (lblArticoleReadOnly) e vizibil si are text', ; loForm.pgfArticole.PAGE3.lblArticoleReadOnly.Visible AND !Empty(Alltrim(loForm.pgfArticole.PAGE3.lblArticoleReadOnly.Caption)), ; loForm.pgfArticole.PAGE3.lblArticoleReadOnly.Caption loGrid = loForm.pgfArticole.Page3.grdArticoleFactura DO asserteaza WITH 'gridul are 15 coloane (neregresat)', loGrid.ColumnCount == 15, TRANSFORM(loGrid.ColumnCount) DO asserteaza WITH 'documentul are cel putin o linie reala', Reccount('tvd') >= 1, TRANSFORM(Reccount('tvd')) IF Reccount('tvd') >= 1 SELECT tvd GO TOP DO asserteaza WITH 'eFactura: cantitate NU primeste focus pe linie normala (nu doar pe linie de set)', loGrid.cCantitateArt.Text1.When() == .F., '' DO asserteaza WITH 'eFactura: pret NU primeste focus', loGrid.cPretArt.Text1.When() == .F., '' DO asserteaza WITH 'eFactura: pret_achizitie NU primeste focus', loGrid.cPretAchizitieArt.Text1.When() == .F., '' DO asserteaza WITH 'eFactura: checkbox pret_cu_tva NU primeste focus', loGrid.cPretCuTvaArt._checkbox1.When() == .F., '' *!* --- CAZ SINTETIC: acelasi document, flagul comutat manual pe .F. - gating-ul e pe flag, nu pe alta cauza --- loForm.lArticoleReadOnly = .F. DO asserteaza WITH 'CAZ SINTETIC flag=.F.: cantitate PRIMESTE focus (gating e pe lArticoleReadOnly)', loGrid.cCantitateArt.Text1.When() == .T., '' DO asserteaza WITH 'CAZ SINTETIC flag=.F.: pret PRIMESTE focus', loGrid.cPretArt.Text1.When() == .T., '' DO asserteaza WITH 'CAZ SINTETIC flag=.F.: checkbox pret_cu_tva PRIMESTE focus', loGrid.cPretCuTvaArt._checkbox1.When() == .T., '' loForm.lArticoleReadOnly = .T. ENDIF STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcUILog, 1) DO HarnessStep WITH 0, 'pagina3 articole - document trimis in eFactura, grid needitabil, marcaj vizual afisat', 15 loForm.Release() IF Used('crsArticoleFactura') Use In crsArticoleFactura 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 IF Used('tvanz') Use In tvanz ENDIF IF Used('tvd') Use In tvd 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