* test_ui_fix_editabil_subtotal.prg - verifica pe formular vizibil (nu headless) defectele raportate * pe grid-ul grdArticoleFactura: coloanele cantitate/pret nu erau editabile (_grid.Init le forta * ReadOnly cat timp lcamptextneeditabil ramanea .T.), valoarea pe linie ramanea defazata cu un pas la * bifa "pret cu TVA" (in InteractiveChange, ControlSource nu e inca actualizat) si nu scadea * discountul unitar. Coloana se numeste acum "Valoare" (campul tvd.valoare). * Flux identic cu do_editare_factura. Document: cod=1139934/an=2021/luna=12 (id_vanzare=882, 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\uisync3\' gcUILog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_ui_fix_editabil_subtotal_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, loChk LOCAL lnCant, lnPretNet, lnProcT, lnFlagVechi, lnFlagNou, lnValoareVeche, lnAsteptat, lnLaIncarcare 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 DO asserteaza WITH 'ColumnCount = 14', loGrid.ColumnCount = 14, TRANSFORM(loGrid.ColumnCount) DO asserteaza WITH 'cantitate editabila', loGrid.cCantitateArt.ReadOnly = .F., TRANSFORM(loGrid.cCantitateArt.ReadOnly) DO asserteaza WITH 'pret editabil', loGrid.cPretArt.ReadOnly = .F., TRANSFORM(loGrid.cPretArt.ReadOnly) DO asserteaza WITH 'denumire ramane readonly', loGrid.cDenumireArt.ReadOnly = .T., TRANSFORM(loGrid.cDenumireArt.ReadOnly) DO asserteaza WITH 'discount_unitar ramane readonly', loGrid.cDiscountUnitarArt.ReadOnly = .T., TRANSFORM(loGrid.cDiscountUnitarArt.ReadOnly) DO asserteaza WITH 'valoare ramane readonly', loGrid.cValoareArt.ReadOnly = .T., TRANSFORM(loGrid.cValoareArt.ReadOnly) DO asserteaza WITH 'antetul coloanei e Valoare', loGrid.cValoareArt.Header1.Caption == 'Valoare', loGrid.cValoareArt.Header1.Caption SELECT tvd GO TOP lnCant = NVL(tvd.cantitate, 0) lnPretNet = NVL(tvd.pret, 0) - NVL(tvd.discount_unitar, 0) lnProcT = NVL(tvd.proc_tvav, 1) lnFlagVechi = NVL(tvd.pret_cu_tva, 0) lnValoareVeche = NVL(tvd.valoare, 0) lnFlagNou = IIF(m.lnFlagVechi = 0, 1, 0) lnLaIncarcare = ROUND(m.lnCant * IIF(m.lnFlagVechi = 0, m.lnPretNet * m.lnProcT, m.lnPretNet), m.gnPC) lnAsteptat = ROUND(m.lnCant * IIF(m.lnFlagNou = 0, m.lnPretNet * m.lnProcT, m.lnPretNet), m.gnPC) STRTOFILE('linia 1: cant=' + TRANSFORM(m.lnCant) + ' pret=' + TRANSFORM(NVL(tvd.pret,0)) + ; ' discount_unitar=' + TRANSFORM(NVL(tvd.discount_unitar,0)) + ' proc_tvav=' + TRANSFORM(m.lnProcT) + ; ' flag_vechi=' + TRANSFORM(m.lnFlagVechi) + ' valoare_la_incarcare=' + TRANSFORM(m.lnValoareVeche) + ; ' -> flag_nou=' + TRANSFORM(m.lnFlagNou) + ' valoare_asteptata=' + TRANSFORM(m.lnAsteptat) + CHR(13) + CHR(10), gcUILog, 1) DO asserteaza WITH 'discountul scazut deja la incarcare', m.lnValoareVeche = m.lnLaIncarcare, TRANSFORM(m.lnValoareVeche) + ' vs ' + TRANSFORM(m.lnLaIncarcare) *!* reproduce clickul pe bifa: valoarea se schimba in control, ControlSource inca nu loChk = loGrid.cPretCuTvaArt._checkbox1 loChk.Value = m.lnFlagNou loChk.InteractiveChange() DOEVENTS FORCE SELECT tvd GO TOP DO asserteaza WITH 'flagul ajunge in cursor', NVL(tvd.pret_cu_tva, 0) = m.lnFlagNou, TRANSFORM(NVL(tvd.pret_cu_tva, 0)) DO asserteaza WITH 'valoare recalculata cu flagul nou', NVL(tvd.valoare, 0) = m.lnAsteptat, TRANSFORM(NVL(tvd.valoare, 0)) DO asserteaza WITH 'linia marcata modificata', tvd.lmodificat = .T., TRANSFORM(tvd.lmodificat) DO HarnessStep WITH 0, 'pagina3 articole - dupa bifa pret cu TVA', 25 STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcUILog, 1) 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