Files
comun/utile/Teste/efactura_import/test_sursa_cont_ui.prg
2026-09-11 16:44:00 +03:00

379 lines
23 KiB
Plaintext

* test_sursa_cont_ui.prg
* Verifica vizual runda "sursa_cont" (COMUN\clase\anaf_efactura.vc2):
* T1 - grila detalii facturii (frm_import_efactura), cu 4 linii de fixtura EXACT/APROX/
* ISTORIC/fara propunere - culorile pe celulele cCont/cAcont (captura de ecran)
* T2 - formularul frm_configurare_efactura: controalele noi vizibile/aliniate, citire/
* scriere optiuni EFACTURA_ART_NORMALIZAT/PREFIX/ISTORIC, garda pe valoare invalida
* Foloseste factura fixture deja importata de test_import_zip_efactura (acelasi criteriu
* determinist, fixtura_zip_din_baza.prg); liniile de detaliu adaugate pentru colorare sunt
* sterse la final.
*
* Rulare: powershell -ExecutionPolicy Bypass -File test_sursa_cont_ui.ps1
PUBLIC gcUILog, gcSyncDir
gcUILog = 'D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\test_sursa_cont_ui_log.txt'
gcSyncDir = 'D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\uisync_sursacont\'
SET SAFETY OFF
SET TALK OFF
STRTOFILE('START ' + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
ON ERROR DO TErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
ON SHUTDOWN QUIT
SET PROCEDURE TO ('D:\ROA\ROACONT\COMUN\utile\Teste\ui_harness.prg') ADDITIVE
DO ('D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg') WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT', 2026, 1
SET PROCEDURE TO import_efactura.prg ADDITIVE
SET PROCEDURE TO recunoastere_articol_ef.prg ADDITIVE
SET PROCEDURE TO coada_contabilizare_ef.prg ADDITIVE
SET PROCEDURE TO ('D:\ROA\ROACONT\COMUN\utile\Teste\efactura_import\fixtura_zip_din_baza.prg') ADDITIVE
PUBLIC gnPass, gnFail
gnPass = 0
gnFail = 0
DO HarnessLog WITH 'INIT gnHandle=' + TRANSFORM(gnHandle) + ' gcS=' + TRANSFORM(gcS)
lnFixtIdEF = FixturaIdEFactura()
FixturaSincronizeazaPerioada() && perioada = data facturii fixtura, altfel filtrul crsFacturi n-o vede
DO HarnessLog WITH 'id_efactura fixture=' + TRANSFORM(lnFixtIdEF)
IF NVL(lnFixtIdEF,0) = 0
DO TVerdict WITH .F., 'PRECONDITIE fixture', 'lipseste anaf_efactura - ruleaza intai test_import_zip_efactura.prg'
DO HarnessDone WITH 'done PRECONDITIE LIPSA'
QUIT
ENDIF
* curatenie preventiva + 4 linii de fixtura: EXACT / APROX / ISTORIC / fara propunere (NULL)
goExecutor.oExecuta("delete from anaf_efactura_detalii where id_efactura = " + TRANSFORM(m.lnFixtIdEF) + " and nr >= 900")
lcInsBase = "insert into anaf_efactura_detalii (id_efactura, nr, articol, cantitate, um, pret, proctva, valoarefaratva, discountfaratva, cont, acont, sursa_cont) values (" + TRANSFORM(m.lnFixtIdEF) + ", "
goExecutor.oExecuta(lcInsBase + "901, 'TEST FIXTURA EXACT', 1, 'BUC', 100, 19, 100, 0, '628', '4426', 'EXACT')")
goExecutor.oExecuta(lcInsBase + "902, 'TEST FIXTURA APROX', 1, 'BUC', 100, 19, 100, 0, '628', '4426', 'APROX')")
goExecutor.oExecuta(lcInsBase + "903, 'TEST FIXTURA ISTORIC', 1, 'BUC', 100, 19, 100, 0, '628', '4426', 'ISTORIC')")
goExecutor.oExecuta(lcInsBase + "904, 'TEST FIXTURA FARA PROPUNERE', 1, 'BUC', 100, 19, 100, 0, '', '', null)")
DO HarnessLog WITH 'setup: 4 linii fixtura EXACT/APROX/ISTORIC/fara propunere inserate'
* ---------- cursoare, copie fidela din vizImportEFactura (import_efactura.prg) ----------
lcData1 = '01' + Padl(Int(m.gnLuna),2,'0') + Alltrim(Str(m.gnAn))
ldData1 = GOMONTH(DATE(m.gnAn, m.gnLuna, 1), 1)
lcData2 = '01' + PADL(MONTH(m.ldData1),2,'0') + ALLTRIM(STR(YEAR(m.ldData1)))
TEXT To lcSchema Noshow
ales N(1), id N(20), id_fact N(20), data_act D, data_scad D, numar_act C(30), xfurnizor C(200), xclient C(200), partener C(200), id_incarcare C(36), id_descarcare c(36) null, tip_mesaj_raspuns C(50) null,mesaj_raspuns C(250) null, data_raspuns D null, trimis N(1) null, data_trimis T null, cod_fiscal C(30) null, cod_fiscal_emitent C(30) null, cod_fiscal_beneficiar C(30) null, detalii M null, total_fara_tva N(16,4), total_tva N(16,4), total_tva_ron N(16,4), total_cu_tva N(16,4), discount_fara_tva N(16,4), taxe_fara_tva N(16,4), valoare_fara_tva N(16,4), total_de_plata N(16,4), nume_valuta C(5), test N(1) null, jtotctva N(16,4) null, descriere M null, detalii_plata M null, diferenta N(16,4) null, procesat N(1), SerieActRoa V(10) Null, NrActRoa N(14) Null, IdPartRoa N(10) Null, PartenerRoa V(100) null, codFiscalROA V(20), idValutaROA N(5) null,numeValutaROA V(5) null, cursROA N(16,6) null,Cont c(4) Null,ACont c(4) Null,TVAIncasare N(1),Fdoc V(20) null,Id_Fdoc N(5) Null,Nrord V(100) null,Id_Lucrare I Null,Contract V(100) Null,Id_Ctr I Null,Sectie V(100) null,Id_Sectie I Null,dst_chlt V(100) null, Id_venchelt I NUll, nresp V(100) null, Id_responsabil I NUll , completat N(1), completatdet N(1), creditnote N(1), explicatiaROA V(100) null, explicatia4ROA V(100) null, explicatia5ROA V(100) null, eligibil_lot N(1), motiv_lot V(120), eroare_lot N(1), de_completat V(80), gest c(1), part_inactiv N(1)
ENDTEXT
TEXT To lcSelect TEXTMERGE Noshow
SELECT 0 as ales, id, id_fact, data_act, data_scad, numar_act, xfurnizor, xclient, partener, id_incarcare, id_descarcare, tip_mesaj_raspuns, mesaj_raspuns, data_raspuns, NVL(trimis,0) as trimis, data_trimis, cod_fiscal, cod_fiscal_emitent, cod_fiscal_beneficiar, '' as detalii, total_fara_tva, total_tva, total_tva_ron, total_cu_tva, discount_fara_tva, taxe_fara_tva, valoare_fara_tva, total_de_plata, nume_valuta, test, jtotctva, descriere, detalii_plata, case when jtotctva is null then null when NVL(nume_valuta,'RON') <> 'RON' then null else decode(creditnote,0,1,-1) * NVL(total_cu_tva,0.00) - (NVL(jtotctva,0.00) - NVL(jtva_ti,0.00)) end as diferenta, procesat,
'' as SerieActRoa, CAST(null as Number(14)) as NrActRoa, CAST(null as Number(20)) as idPartRoa, '' as PartenerRoa, '' as codFiscalROA, CAST(null as Number(10)) as idValutaROA, '' as numeValutaROA, CAST(null as Number(16,6)) as cursROA,
'' as Cont, '' as acont, 0 as TVAIncasare, '' as Fdoc, CAST(0 as Number(5)) as Id_Fdoc, '' as Nrord, CAST(0 as Number(10)) as id_Lucrare, '' as Contract, CAST(null as Number(10)) as id_ctr,
'' Sectie, CAST(0 as Number(10)) as id_Sectie, '' as dst_chlt, CAST(0 as Number(10)) as id_Venchelt, '' as nresp, CAST(0 as Number(10)) as id_responsabil, 0 as completat, 0 as completatdet, creditnote, '' as explicatiaROA, '' as explicatia4ROA, '' as explicatia5ROA, 1 as eligibil_lot, '' as motiv_lot, 0 as eroare_lot, '' as de_completat, '' as gest, 0 as part_inactiv
FROM anaf_vefactura_primit
ENDTEXT
lcOrder = [data_act,numar_act,data_raspuns]
lcgroup = []
lcFiltru = [(data_act >= to_date('] + m.lcData1 + [','ddmmyyyy') and data_act < to_date('] + m.lcData2 + [','ddmmyyyy')) or (data_act is null and data_raspuns >= to_date('] + m.lcData1 + [','ddmmyyyy'))]
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
PRIVATE poFacturi, poFacturiDetalii
poFacturi = Null
poFacturiDetalii = Null
gencursor('poFacturi', 'crsFacturi', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poFacturi.ca_baza1.afisare()
SELECT crsFacturi
LOCATE FOR id = m.lnFixtIdEF
DO TVerdict WITH FOUND(), 'setup: factura fixtura vizibila in crsFacturi', 'FOUND=' + TRANSFORM(FOUND()) + ' din ' + TRANSFORM(RECCOUNT('crsFacturi')) + ' randuri'
TEXT To lcSchema Noshow
distribuie N(1), id_tip N(10) null, id_articol N(20) null, id_gestiune N(20) null, cont C(4) null, acont C(4) null, sursa_cont V(10) null, id N(20), id_efactura N(20), nr N(5), articol V(250), descriere V(250), detalii M, cantitate N(18,6), um V(20), um_iso V(50), um_roa V(50), pret N(20,6), proctva N(7,2), tiptva V(2), valoarefaratva N(20,6), discountfaratva N(20,6), in_stoc N(1), articol_roa V(250), codmat_roa V(50), codbare V(50), codclient V(100), codfurnizor V(100), codcpv V(50), codnc8 V(50), nume_gestiune V(50), cgest V(20), tva N(20,6), pretv N(20,6), tvav N(20,6), pretvtva N(20,6), explicatia V(100), explicatia4 V(100), explicatia5 V(100)
ENDTEXT
TEXT To lcSelect Noshow
select 0 as distribuie, CAST(0 as number(10)) as id_tip, id_articol, id_gestiune, cont, acont, sursa_cont, id, id_efactura, nr, articol, descriere, detalii, cantitate, um, um_iso, um_roa, pret, proctva, tiptva, valoarefaratva, discountfaratva, in_stoc, articol_roa, codmat_roa, codbare, codclient, codfurnizor, codcpv, codnc8, nume_gestiune, cgest, 0 as tva, 0 as pretv, 0 as tvav, 0 as pretvtva, '' as explicatia, '' as explicatia4, '' as explicatia5 from anaf_vefactura_detalii
ENDTEXT
lcOrder = [nr]
lcgroup = []
lcFiltru = [id_efactura=] + ALLTRIM(STR(m.lnFixtIdEF))
lcFiltruOriginal = []
llModParam = .T.
llAfiseaza = .F.
gencursor('poFacturiDetalii', 'crsDetaliiFacturiTemp', lcSelect, lcFiltru, lcSchema, lcOrder, llAfiseaza, lcgroup, llModParam, lcFiltruOriginal)
poFacturiDetalii.ca_baza1.afisare()
SELECT * FROM crsDetaliiFacturiTemp INTO CURSOR crsDetaliiFacturi READWRITE
DO TVerdict WITH RECCOUNT('crsDetaliiFacturi') >= 4, 'setup: crsDetaliiFacturi are cele 4 linii fixtura', TRANSFORM(RECCOUNT('crsDetaliiFacturi')) + ' randuri'
* cursoare helper cerute de Init-ul formularului (copie din vizImportEFactura)
CREATE CURSOR cTipArticoleP (id I, in_stoc N(1), tip V(50), cont V(4), ordine I)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (0, 'Nedefinit','', 0, 0)
INSERT INTO cTipArticoleP (id, tip, cont, in_stoc, ordine) VALUES (12, 'Terti','628', 0, 12)
SELECT cTipArticoleP
GO TOP IN cTipArticoleP
INDEX on ordine TAG ordine
CREATE CURSOR cTipArticoleE (id I, in_stoc N(1), tip V(50), cont V(4), ordine I)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (0, 'Nedefinit','', 0, 0)
INSERT INTO cTipArticoleE (id, tip, cont, in_stoc, ordine) VALUES (34, 'Servicii vandute','704', 0, 6)
SELECT cTipArticoleE
GO TOP IN cTipArticoleE
INDEX on ordine TAG ordine
SELECT id, tip, cont, in_stoc, ordine FROM cTipArticoleP ORDER BY ordine INTO CURSOR cTip
SELECT cTip
INDEX on id TAG id
llSucces = goExecutor.oExecuta([select distinct nume_gestiune,cgest,id_gestiune,nr_pag,cont from vgest_gestiuni_util where inactiv = 0 and id_util = ] + Alltrim(Str(m.gnIdUtil)), 'cGestiuni')
SELECT cGestiuni
APPEND BLANK
INDEX on id_gestiune TAG id_gest
select cast(alltrim(nume_gestiune) + '-' + alltrim(nvl(cgest, '')) as V(50)) as nume_gestiune, id_gestiune from cGestiuni order by nume_gestiune into cursor cGestiuni2
llSucces = goExecutor.oExecuta("select cod_um_iso, um_iso from syn_vnom_um_iso", 'cUMISO')
SELECT cUMISO
INDEX on cod_um_iso TAG cod_um_iso
llSucces = goExecutor.oExecuta("select id, um, cod_um_iso, um_iso from vnom_um", 'cUM')
SELECT cUM
INDEX on id TAG id
* ---------- T1: frm_import_efactura, cu grila reala (Show(1) e hardcodat in vizImportEFactura,
* aici instantiez formularul direct, ca in test_import_zip_efactura.prg) ----------
SELECT crsFacturi
loForm = Createobject("frm_import_efactura", .T.)
loForm.WindowType = 0
loForm.Show()
loForm.WindowState = 2
DO HarnessLog WITH 'FORM deschis: [' + TRANSFORM(loForm.Caption) + ']'
DO HarnessLog WITH 'ClassLibrary=' + TRANSFORM(loForm.ClassLibrary)
DO TVerdict WITH TYPE('loForm.grdDetaliiFacturi') = 'O', 'T1.0 grid grdDetaliiFacturi exista pe formular', TYPE('loForm.grdDetaliiFacturi')
* Formularul isi repozitioneaza singur grila de facturi la deschidere (preferinta
* utilizator/ultima factura vazuta), care resincronizeaza crsDetaliiFacturi pe ALTA factura
* prin actualizeaza_grid2() (SET FILTER + fetch daca lipsesc randurile). Pentru verificarea
* de culori pe cele 4 surse, filtrez direct pe factura fixtura - filtrul e acelasi mecanism
* (id_efactura=...) folosit de actualizeaza_grid2, doar aplicat direct, fara sa (re)declansez
* recunoasterea automata de articol pe randul selectat anterior.
SELECT crsFacturi
LOCATE FOR id = m.lnFixtIdEF
DO TVerdict WITH FOUND(), 'T1.1 factura fixtura localizata dupa deschiderea formularului', 'FOUND=' + TRANSFORM(FOUND()) + ' RECNO=' + TRANSFORM(RECNO('crsFacturi'))
SELECT crsDetaliiFacturi
SET FILTER TO
* elimin liniile altei facturi (auto-selectate de formular la deschidere - preferinta
* utilizator/ultima factura vazuta), ca grila sa arate strict cele 4 linii fixtura
DELETE FOR id_efactura <> m.lnFixtIdEF
* SET DELETED ON e activ (test_init_env_auto) - randurile marse raman ascunse fara PACK
* (PACK pe acest cursor da eroarea 1115 "Invalid operation for the cursor")
DO HarnessLog WITH 'DIAGNOSTIC SET(DELETED)=[' + SET('DELETED') + ']'
SET DELETED OFF
GO TOP
SCAN
DO HarnessLog WITH ' recno=' + TRANSFORM(RECNO()) + ' deleted=' + TRANSFORM(DELETED()) + ' id_efactura=' + TRANSFORM(id_efactura) + ' articol=[' + TRANSFORM(articol) + ']'
ENDSCAN
SET DELETED ON
GO TOP
LOCATE FOR ALLTRIM(NVL(articol,'')) == 'TEST FIXTURA ISTORIC'
DO TVerdict WITH FOUND(), 'T1.2 dupa curatarea altei facturi, grila are liniile fixtura corecte', 'FOUND=' + TRANSFORM(FOUND()) + ' din ' + TRANSFORM(RECCOUNT('crsDetaliiFacturi')) + ' randuri'
GO TOP IN crsDetaliiFacturi
loForm.grdDetaliiFacturi.Refresh()
loForm.Refresh()
DOEVENTS FORCE
DO HarnessStep WITH 0, 'grid_4_culori'
* ---------- T2: frm_configurare_efactura, standalone (WindowType=0, situatia A) ----------
lcSql = "select cont, explicatie, tip_sold from vplcont_used where an=?gnAn and tip_cont = 0 order by cont"
llSucces = goExecutor.oExecuta(m.lcSql, "crsPlCont")
Select Cont, explicatie, tip_sold From crsPlCont Into Cursor cPlContP Order By Cont
Select Cont, explicatie, tip_sold From crsPlCont Into Cursor cPlContE Order By Cont
lcSql = "select id_gestiune, nume_gestiune, cont, acont, cgest, nume_tip from vnom_gestiuni where inactiv = 0 order by nume_gestiune"
llSucces = goExecutor.oExecuta(m.lcSql, "crsGestiuni2Cfg")
SELECT crsGestiuni2Cfg
APPEND BLANK
Select id_gestiune, nume_gestiune, Cont From crsGestiuni2Cfg Order By nume_gestiune Into Cursor cGestiuniP NOFILTER
Select id_gestiune, nume_gestiune, Cont From crsGestiuni2Cfg Order By nume_gestiune Into Cursor cGestiuniE NOFILTER
lcSql = "select id_sectie, sectie from vnom_sectii where inactiv = 0 order by sectie"
llSucces = goExecutor.oExecuta(m.lcSql, "crsSectii")
SELECT crsSectii
APPEND BLANK
Select id_sectie, sectie From crsSectii Into Cursor cSectiiP Order By sectie
Select id_sectie, sectie From crsSectii Into Cursor cSectiiE Order By sectie
lcSql = "select id_venchelt, explicatie as venchelt, decode(tip_venchelt, 1, 'VENIT', 'CHELTUIALA') as tip from vnom_venchel where inactiv = 0 order by explicatie"
llSucces = goExecutor.oExecuta(m.lcSql, "crsVenChel")
SELECT crsVenChel
APPEND BLANK
Select id_venchelt, venchelt, tip From crsVenChel Into Cursor cVenChelP Order By venchelt
Select id_venchelt, venchelt, tip From crsVenChel Into Cursor cVenChelE Order By venchelt
PUBLIC gcEFACTURA_CONT_ART_E, gcEFACTURA_CONT_ART_P, gnEFACTURA_ID_SECTIE_E, gnEFACTURA_ID_SECTIE_P, ;
gnEFACTURA_ID_GESTIUNE_E, gnEFACTURA_ID_GESTIUNE_P, gnEFACTURA_ID_VENCHELT_E, gnEFACTURA_ID_VENCHELT_P, ;
gnEFACTURA_ID_TIPART_E, gnEFACTURA_ID_TIPART_P, gnEFACTURA_CONT_ART_EF, gnEFACTURA_CONT_ART_PF, ;
gnEFACTURA_GEST_ART_EF, gnEFACTURA_GEST_ART_PF
gcEFACTURA_CONT_ART_E = ''
gcEFACTURA_CONT_ART_P = ''
gnEFACTURA_ID_SECTIE_E = 0
gnEFACTURA_ID_SECTIE_P = 0
gnEFACTURA_ID_GESTIUNE_E = 0
gnEFACTURA_ID_GESTIUNE_P = 0
gnEFACTURA_ID_VENCHELT_E = 0
gnEFACTURA_ID_VENCHELT_P = 0
gnEFACTURA_ID_TIPART_E = 0
gnEFACTURA_ID_TIPART_P = 0
gnEFACTURA_CONT_ART_EF = 0
gnEFACTURA_CONT_ART_PF = 0
gnEFACTURA_GEST_ART_EF = 0
gnEFACTURA_GEST_ART_PF = 0
SET PROCEDURE TO ('D:\ROA\ROACONT\COMUN\utile\Teste\optiuni_test.prg') ADDITIVE
SalveazaOptiuni('EFACTURA_ART_NORMALIZAT,EFACTURA_ART_PREFIX,EFACTURA_ART_ISTORIC')
* curatenie optiuni ramase de la o rulare intrerupta anterior (test repetabil)
goExecutor.oExecuta("delete from optiuni where varname in ('EFACTURA_ART_NORMALIZAT','EFACTURA_ART_PREFIX','EFACTURA_ART_ISTORIC')")
actualizeaza_optiuni()
* ---------- citire optiuni, copie fidela din Cmd_executa2.Click (anaf_efactura.vc2) ----------
PUBLIC gnEFACTURA_ART_NORMALIZAT, gnEFACTURA_ART_PREFIX, gnEFACTURA_ART_ISTORIC
gnEFACTURA_ART_NORMALIZAT = 1
gnEFACTURA_ART_PREFIX = 12
gnEFACTURA_ART_ISTORIC = 1
Try
lcValArt = citeste_optiune('EFACTURA_ART_NORMALIZAT')
If Type('lcValArt') = 'C' And !Empty(Alltrim(m.lcValArt))
gnEFACTURA_ART_NORMALIZAT = Int(Val(m.lcValArt))
Endif
lcValArt = citeste_optiune('EFACTURA_ART_PREFIX')
If Type('lcValArt') = 'C' And !Empty(Alltrim(m.lcValArt))
gnEFACTURA_ART_PREFIX = Int(Val(m.lcValArt))
Endif
lcValArt = citeste_optiune('EFACTURA_ART_ISTORIC')
If Type('lcValArt') = 'C' And !Empty(Alltrim(m.lcValArt))
gnEFACTURA_ART_ISTORIC = Int(Val(m.lcValArt))
Endif
Catch
Endtry
If gnEFACTURA_ART_PREFIX < 4 Or gnEFACTURA_ART_PREFIX > 40
gnEFACTURA_ART_PREFIX = 12
Endif
DO TVerdict WITH gnEFACTURA_ART_NORMALIZAT = 1 AND gnEFACTURA_ART_PREFIX = 12 AND gnEFACTURA_ART_ISTORIC = 1, 'T2.1 valori implicite (optiuni inca lipsa)', TRANSFORM(gnEFACTURA_ART_NORMALIZAT) + '/' + TRANSFORM(gnEFACTURA_ART_PREFIX) + '/' + TRANSFORM(gnEFACTURA_ART_ISTORIC)
* ATENTIE: comun.vcx are si el o clasa numita frm_configurare_efactura (alt formular, orfan -
* nimeni nu il instantiaza), incarcata INAINTEA anaf_efactura.vcx in SET CLASSLIB ADDITIVE.
* Createobject neambiguu ("frm_configurare_efactura") rezolva la comun.vcx, nu la clasa
* patch-uita din anaf_efactura.vcx - se dezambiguizeaza explicit cu modulul.
loConfAmbiguu = Createobject("frm_configurare_efactura")
DO HarnessLog WITH 'DIAGNOSTIC ambiguitate clasa: Createobject fara modul => ClassLibrary=' + TRANSFORM(loConfAmbiguu.ClassLibrary)
DO TVerdict WITH 'COMUN.VCX' $ UPPER(loConfAmbiguu.ClassLibrary), 'T2.0 REPRO ambiguitate: Createobject neambiguu rezolva la comun.vcx (BUG)', TRANSFORM(loConfAmbiguu.ClassLibrary)
loConfAmbiguu.Release()
loConf = Newobject("frm_configurare_efactura", "anaf_efactura.vcx")
loConf.WindowType = 0
loConf.Show()
DO HarnessLog WITH 'CONFIG deschis: [' + TRANSFORM(loConf.Caption) + '] ClassLibrary=' + TRANSFORM(loConf.ClassLibrary)
DO TVerdict WITH TYPE('loConf.chkArtNormalizatP') = 'O', 'T2.2 chkArtNormalizatP exista', TYPE('loConf.chkArtNormalizatP')
DO TVerdict WITH TYPE('loConf.spnArtPrefixP') = 'O', 'T2.3 spnArtPrefixP exista', TYPE('loConf.spnArtPrefixP')
DO TVerdict WITH TYPE('loConf.chkArtIstoricP') = 'O', 'T2.4 chkArtIstoricP exista', TYPE('loConf.chkArtIstoricP')
DO TVerdict WITH TYPE('loConf.lblArtPrefixP') = 'O', 'T2.5 lblArtPrefixP exista', TYPE('loConf.lblArtPrefixP')
IF TYPE('loConf.chkArtNormalizatP') = 'O'
DO HarnessLog WITH ' chkArtNormalizatP: Left=' + TRANSFORM(loConf.chkArtNormalizatP.Left) + ' Top=' + TRANSFORM(loConf.chkArtNormalizatP.Top) + ' Value=' + TRANSFORM(loConf.chkArtNormalizatP.Value) + ' Visible=' + TRANSFORM(loConf.chkArtNormalizatP.Visible)
DO HarnessLog WITH ' spnArtPrefixP: Left=' + TRANSFORM(loConf.spnArtPrefixP.Left) + ' Top=' + TRANSFORM(loConf.spnArtPrefixP.Top) + ' Value=' + TRANSFORM(loConf.spnArtPrefixP.Value) + ' Visible=' + TRANSFORM(loConf.spnArtPrefixP.Visible)
DO HarnessLog WITH ' chkArtIstoricP: Left=' + TRANSFORM(loConf.chkArtIstoricP.Left) + ' Top=' + TRANSFORM(loConf.chkArtIstoricP.Top) + ' Value=' + TRANSFORM(loConf.chkArtIstoricP.Value) + ' Visible=' + TRANSFORM(loConf.chkArtIstoricP.Visible)
DO HarnessLog WITH ' lblArtPrefixP: Left=' + TRANSFORM(loConf.lblArtPrefixP.Left) + ' Top=' + TRANSFORM(loConf.lblArtPrefixP.Top) + ' Visible=' + TRANSFORM(loConf.lblArtPrefixP.Visible)
DO HarnessLog WITH ' form: Height=' + TRANSFORM(loConf.Height) + ' Width=' + TRANSFORM(loConf.Width)
DO TVerdict WITH loConf.chkArtNormalizatP.Value = 1 AND loConf.chkArtIstoricP.Value = 1, 'T2.6 checkbox-urile reflecta optiunile citite (1/1)', TRANSFORM(loConf.chkArtNormalizatP.Value) + '/' + TRANSFORM(loConf.chkArtIstoricP.Value)
DO TVerdict WITH loConf.spnArtPrefixP.Value = 12, 'T2.7 spinner reflecta optiunea citita (12)', TRANSFORM(loConf.spnArtPrefixP.Value)
DO TVerdict WITH (loConf.chkArtIstoricP.Top + loConf.chkArtIstoricP.Height) <= loConf.Height AND loConf.chkArtIstoricP.Top >= 0, 'T2.8 chkArtIstoricP in interiorul formularului', 'Top=' + TRANSFORM(loConf.chkArtIstoricP.Top) + ' Height form=' + TRANSFORM(loConf.Height)
ENDIF
loConf.Refresh()
DOEVENTS FORCE
DO HarnessStep WITH 1, 'config_deschis'
* simulez modificarea din UI si Terminarea (gnButon=1)
IF TYPE('loConf.chkArtNormalizatP') = 'O'
loConf.chkArtNormalizatP.Value = 0
loConf.spnArtPrefixP.Value = 20
loConf.chkArtIstoricP.Value = 0
DOEVENTS FORCE
DO TVerdict WITH gnEFACTURA_ART_NORMALIZAT = 0 AND gnEFACTURA_ART_PREFIX = 20 AND gnEFACTURA_ART_ISTORIC = 0, 'T2.9 modificarea din UI actualizeaza memvarii (ControlSource)', TRANSFORM(gnEFACTURA_ART_NORMALIZAT) + '/' + TRANSFORM(gnEFACTURA_ART_PREFIX) + '/' + TRANSFORM(gnEFACTURA_ART_ISTORIC)
ENDIF
loConf.Refresh()
DOEVENTS FORCE
DO HarnessStep WITH 2, 'config_modificat'
gnButon = 0
loConf.do_termin()
DOEVENTS FORCE
DO TVerdict WITH gnButon = 1, 'T2.10 do_termin seteaza gnButon=1', TRANSFORM(gnButon)
IF gnButon = 1
scrie_optiune('EFACTURA_ART_NORMALIZAT', ALLTRIM(STR(INT(m.gnEFACTURA_ART_NORMALIZAT))), 'RECUNOASTERE CONT DUPA CHEIE NORMALIZATA ARTICOL EFACTURA')
scrie_optiune('EFACTURA_ART_PREFIX', ALLTRIM(STR(INT(m.gnEFACTURA_ART_PREFIX))), 'LUNGIME CHEIE NORMALIZATA ARTICOL EFACTURA')
scrie_optiune('EFACTURA_ART_ISTORIC', ALLTRIM(STR(INT(m.gnEFACTURA_ART_ISTORIC))), 'RECUNOASTERE CONT DIN ISTORICUL FURNIZORULUI EFACTURA')
ENDIF
lcVerifDb = ''
goExecutor.oSelecteaza2Value("select varvalue from optiuni where varname = 'EFACTURA_ART_PREFIX'", @lcVerifDb)
DO TVerdict WITH ALLTRIM(NVL(lcVerifDb,'')) == '20', 'T2.11 optiune scrisa in Oracle (EFACTURA_ART_PREFIX=20)', '[' + TRANSFORM(lcVerifDb) + ']'
* ---------- T3: garda pe valoare invalida la citire (scriu direct 999, verific reset la 12) ----------
scrie_optiune('EFACTURA_ART_PREFIX', '999', 'LUNGIME CHEIE NORMALIZATA ARTICOL EFACTURA')
gnEFACTURA_ART_PREFIX = 12
Try
lcValArt = citeste_optiune('EFACTURA_ART_PREFIX')
If Type('lcValArt') = 'C' And !Empty(Alltrim(m.lcValArt))
gnEFACTURA_ART_PREFIX = Int(Val(m.lcValArt))
Endif
Catch
Endtry
lnCitit999 = gnEFACTURA_ART_PREFIX
If gnEFACTURA_ART_PREFIX < 4 Or gnEFACTURA_ART_PREFIX > 40
gnEFACTURA_ART_PREFIX = 12
Endif
DO TVerdict WITH lnCitit999 = 999, 'T3.1 valoarea invalida chiar a fost citita din optiuni (999)', TRANSFORM(lnCitit999)
DO TVerdict WITH gnEFACTURA_ART_PREFIX = 12, 'T3.2 garda reseteaza la 12 cand valoarea e in afara [4,40]', TRANSFORM(gnEFACTURA_ART_PREFIX)
DO HarnessStep WITH 3, 'config_invalid_ok'
DO HarnessLog WITH 'REZULTAT FINAL: PASS=' + TRANSFORM(gnPass) + ' FAIL=' + TRANSFORM(gnFail)
DO HarnessDone WITH IIF(gnFail = 0, 'done OK', 'done CU ESECURI')
* curatenie
IF TYPE('loConf') = 'O'
TRY
loConf.Release() && do_termin il poate fi eliberat deja
CATCH
ENDTRY
ENDIF
IF TYPE('loForm') = 'O'
loForm.Release()
ENDIF
goExecutor.oExecuta("delete from anaf_efactura_detalii where id_efactura = " + TRANSFORM(m.lnFixtIdEF) + " and nr >= 900")
RestaureazaOptiuni()
DO HarnessLog WITH 'CURATENIE finala facuta'
QUIT
***********************
PROCEDURE TVerdict
LPARAMETERS tlOk, tcNume, tcDetalii
IF tlOk
gnPass = gnPass + 1
ELSE
gnFail = gnFail + 1
ENDIF
DO HarnessLog WITH IIF(tlOk, 'PASS ', 'FAIL ') + tcNume + ' | ' + TRANSFORM(tcDetalii)
ENDPROC
***********************
PROCEDURE TErr
LPARAMETERS tnError, tcMessage, tcProgram, tnLine
DO HarnessLog WITH 'EROARE ' + TRANSFORM(tnError) + ' [' + TRANSFORM(tcMessage) + '] in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLine)
ENDPROC