Achizitie din import: valuta pe documente secundare (DVI)
Rundele 1-7: golire campuri valuta la debifare in_valuta (cu suma_doc_val), recalcul din curs pe tot documentul (cu refacere suma_doc/suma_doc_val), spargere document principal in valuta (suma_val doar pe randuri in valuta), TVA repartizat din baza in valuta pe import, iar la recalculeaza()/procente per rand sumele in valuta ale documentelor participante aflate in alta valuta decat a principalei se convertesc prin lei (suma/curs principal), nu se mai aduna direct la baza in valuta (100 USD nu mai devine 100 EUR). Teste UI: test_valuta_dvi_usd (scenariu mixt EUR+USD, 8/8 PASS), test_debifare_invaluta (64/64 PASS), test_repro_valuta_dblclick, mock_caut_valuta; regresie test_scenariu_dvi_complet PASS. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KXsyJZBek1e9RvyLAQkoCx
This commit is contained in:
@@ -11225,11 +11225,11 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
|
||||
Sum suma For Inlist(tip_rand,'B','S') And !Inlist(scd,'4426','4428') And !Empty(id_jtva_coloana) To lnBazaLei
|
||||
Sum suma For tip_rand = 'T' And !Empty(id_jtva_coloana) To lnTvaLei
|
||||
Endif
|
||||
Sum suma_val For Inlist(tip_rand,'B','S') And !Inlist(scd,'4426','4428') And !Empty(id_jtva_coloana) And in_valuta = 1 And participa_valuta To lnBazaVal
|
||||
Sum Round(suma/This.oact.Curs, gnPval) For Inlist(tip_rand,'B','S') And !Inlist(scd,'4426','4428') And !Empty(id_jtva_coloana) And in_valuta = 0 And participa_valuta To lnBazaVal2
|
||||
Sum suma_val For Inlist(tip_rand,'B','S') And !Inlist(scd,'4426','4428') And !Empty(id_jtva_coloana) And in_valuta = 1 And Nvl(id_valuta,0) = Nvl(This.oact.id_valuta,0) And participa_valuta To lnBazaVal
|
||||
Sum Round(suma/This.oact.Curs, gnPval) For Inlist(tip_rand,'B','S') And !Inlist(scd,'4426','4428') And !Empty(id_jtva_coloana) And (in_valuta = 0 Or Nvl(id_valuta,0) <> Nvl(This.oact.id_valuta,0)) And participa_valuta To lnBazaVal2
|
||||
lnBazaVal = lnBazaVal + lnBazaVal2
|
||||
Sum suma_val For tip_rand = 'T' And !Empty(id_jtva_coloana) And in_valuta = 1 And participa_valuta To lnTvaVal
|
||||
Sum Round(suma/This.oact.Curs, gnPval) For tip_rand = 'T' And !Empty(id_jtva_coloana) And in_valuta = 0 And participa_valuta To lnTvaVal2
|
||||
Sum suma_val For tip_rand = 'T' And !Empty(id_jtva_coloana) And in_valuta = 1 And Nvl(id_valuta,0) = Nvl(This.oact.id_valuta,0) And participa_valuta To lnTvaVal
|
||||
Sum Round(suma/This.oact.Curs, gnPval) For tip_rand = 'T' And !Empty(id_jtva_coloana) And (in_valuta = 0 Or Nvl(id_valuta,0) <> Nvl(This.oact.id_valuta,0)) And participa_valuta To lnTvaVal2
|
||||
lnTvaVal = lnTvaVal + lnTvaVal2
|
||||
|
||||
*!* baza documentului principal (nr_doc minim dintre B/S), pentru procent_val, procent_lei (intern) si procentele pe rand
|
||||
@@ -11710,7 +11710,7 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
|
||||
Replace explicatia5 With Iif(in_valuta = 1 Or participa_valuta, '100.00', '')
|
||||
Else
|
||||
Replace explicatia4 With Iif(This.nbazaprincipala_lei <> 0, Allt(Str(suma/This.nbazaprincipala_lei*100,6,2)), '')
|
||||
lnValRandProc = Iif(in_valuta = 1, suma_val, Round(suma/This.oact.Curs, gnPval))
|
||||
lnValRandProc = Iif(in_valuta = 1 And Nvl(id_valuta,0) = Nvl(This.oact.id_valuta,0), suma_val, Round(suma/This.oact.Curs, gnPval))
|
||||
Replace explicatia5 With Iif(This.nbazaprincipala_val <> 0, Allt(Str(lnValRandProc/This.nbazaprincipala_val*100,6,2)), '')
|
||||
Endif
|
||||
Endscan
|
||||
@@ -11889,7 +11889,7 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
|
||||
If This.lIntern
|
||||
Thisform.creeaza_rand_s(tcDocKey, cont, baza_lei, 0, loBaza, acont)
|
||||
Else
|
||||
Thisform.creeaza_rand_s(tcDocKey, cont, Round(baza_val*lnCurs,gnPc), baza_val, loBaza, acont)
|
||||
Thisform.creeaza_rand_s(tcDocKey, cont, Round(baza_val*lnCurs,gnPc), Iif(loBaza.in_valuta = 1, baza_val, 0), loBaza, acont)
|
||||
Endif
|
||||
Select crsGrupCont
|
||||
Endscan
|
||||
@@ -12053,6 +12053,9 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
|
||||
scc With crsGrupCota.scc, ascc With crsGrupCota.ascc, ;
|
||||
suma_val With Round(crsGrupCota.baza_val * lnCotaCrt / 100, gnPval)
|
||||
Replace suma With Round(suma_val * lnCurs, gnPc)
|
||||
If !llValuta
|
||||
Replace suma_val With 0
|
||||
Endif
|
||||
Endif
|
||||
If lnIdJtvaCrt <> lnIdJtvaOrig
|
||||
Select jtva_coloane2
|
||||
@@ -12080,9 +12083,13 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
|
||||
Select Sum(baza_lei) As tot_lei, Sum(baza_val) As tot_val, Count(*) As nr_grup ;
|
||||
From crsGrupCota Where cota_tva == lnCotaCrt Into Cursor crsBazaCota NOFILTER
|
||||
If crsBazaCota.nr_grup > 1
|
||||
If This.lIntern
|
||||
If This.lIntern Or !llValuta
|
||||
Select Sum(suma) As s From introdc Where doc_key == tcDocKey And tip_rand == 'T' And ptva == lnCotaCrt And mod_manual <> 1 Into Cursor crsSumTCota NOFILTER
|
||||
lnRestLei = Round(crsBazaCota.tot_lei * lnCotaCrt / 100, gnPc) - Round(Nvl(crsSumTCota.s,0), gnPc)
|
||||
If This.lIntern
|
||||
lnRestLei = Round(crsBazaCota.tot_lei * lnCotaCrt / 100, gnPc) - Round(Nvl(crsSumTCota.s,0), gnPc)
|
||||
Else
|
||||
lnRestLei = Round(Round(crsBazaCota.tot_val * lnCotaCrt / 100, gnPval) * lnCurs, gnPc) - Round(Nvl(crsSumTCota.s,0), gnPc)
|
||||
Endif
|
||||
Use In crsSumTCota
|
||||
If lnRestLei <> 0
|
||||
lnMaxAbs = -1
|
||||
@@ -12447,22 +12454,61 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
|
||||
*!* cursul editat se scrie explicit (ca la cSumaVal.Valid - dupa amessagebox grid-ul
|
||||
*!* nu-l mai scria in camp) si se copiaza pe randul de TVA pereche; apoi ofer
|
||||
*!* recalcularea sumei in lei din suma in valuta, ca la modificarea sumei in valuta
|
||||
Local lnSumaDinVal, lnRaspuns
|
||||
*!* 24.07.2026 claude - recalcularea din curs se aplica pe toate randurile documentului si reface totalurile suma_doc/suma_doc_val
|
||||
Local lnSumaDinVal, lnRaspuns, lcDocKeyC, lnRecC, lnCntS, lnSLei, lnSVal
|
||||
If This.Value # 0
|
||||
Select introdc
|
||||
Replace curs With This.Value
|
||||
Thisform.copiaza_valoare([curs])
|
||||
If in_valuta = 1 And suma_val # 0
|
||||
lnSumaDinVal = Round(suma_val * This.Value, gnPC)
|
||||
If in_valuta = 1 And !Empty(Nvl(introdc.doc_key,''))
|
||||
lcDocKeyC = introdc.doc_key
|
||||
lnRecC = Recno('introdc')
|
||||
lnRaspuns = 6
|
||||
If suma <> 0 And suma <> lnSumaDinVal
|
||||
lnRaspuns = amessagebox("Suma in lei difera de suma in valuta transformata in lei!" + CHR(13) + CHR(10) + ;
|
||||
"Doriti recalcularea sumei in lei?",4+32,"Diferente sume")
|
||||
Locate For doc_key == lcDocKeyC And in_valuta = 1 And suma_val # 0 And suma <> 0 And suma <> Round(suma_val * This.Value, gnPC)
|
||||
If Found()
|
||||
lnRaspuns = amessagebox("Suma in lei difera de suma in valuta transformata in lei!" + Chr(13) + Chr(10) + ;
|
||||
"Doriti recalcularea sumelor in lei pe document?",4+32,"Diferente sume")
|
||||
Endif
|
||||
If lnRaspuns = 6
|
||||
Replace suma With lnSumaDinVal
|
||||
Scan For doc_key == lcDocKeyC And in_valuta = 1 And suma_val # 0
|
||||
Replace suma With Round(suma_val * This.Value, gnPC)
|
||||
Endscan
|
||||
Calculate Cnt(), Sum(suma), Sum(suma_val) For doc_key == lcDocKeyC And tip_rand == 'S' To lnCntS, lnSLei, lnSVal
|
||||
If lnCntS = 0
|
||||
Locate For doc_key == lcDocKeyC And tip_rand == 'B'
|
||||
If Found()
|
||||
lnCntS = -1
|
||||
lnSLei = suma
|
||||
lnSVal = suma_val
|
||||
Endif
|
||||
Else
|
||||
Locate For doc_key == lcDocKeyC
|
||||
Endif
|
||||
If lnCntS <> 0
|
||||
Replace suma_doc With lnSLei, suma_doc_val With lnSVal
|
||||
Thisform.copiaza_valoare([suma_doc])
|
||||
Thisform.copiaza_valoare([suma_doc_val])
|
||||
Endif
|
||||
Endif
|
||||
Try
|
||||
Go lnRecC In introdc
|
||||
Catch
|
||||
Go Top In introdc
|
||||
Endtry
|
||||
Thisform.do_executa
|
||||
Else
|
||||
If in_valuta = 1 And suma_val # 0
|
||||
lnSumaDinVal = Round(suma_val * This.Value, gnPC)
|
||||
lnRaspuns = 6
|
||||
If suma <> 0 And suma <> lnSumaDinVal
|
||||
lnRaspuns = amessagebox("Suma in lei difera de suma in valuta transformata in lei!" + Chr(13) + Chr(10) + ;
|
||||
"Doriti recalcularea sumei in lei?",4+32,"Diferente sume")
|
||||
Endif
|
||||
If lnRaspuns = 6
|
||||
Replace suma With lnSumaDinVal
|
||||
Endif
|
||||
Thisform.do_executa
|
||||
Endif
|
||||
Endif
|
||||
Endif
|
||||
ENDPROC
|
||||
@@ -12516,7 +12562,21 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Grid1.cInValuta.Check1.Valid
|
||||
*!* 24.07.2026 claude - la debifare se sterg valuta, suma in valuta si cursul pe liniile documentului
|
||||
Select introdc
|
||||
Replace in_valuta With This.Value
|
||||
Thisform.copiaza_valoare([in_valuta])
|
||||
If This.Value = 0
|
||||
Replace id_valuta With 0, nume_val With '', curs With 0, suma_val With 0, suma_doc_val With 0
|
||||
Thisform.copiaza_valoare([id_valuta])
|
||||
Thisform.copiaza_valoare([nume_val])
|
||||
Thisform.copiaza_valoare([curs])
|
||||
Thisform.copiaza_valoare([suma_val])
|
||||
Thisform.copiaza_valoare([suma_doc_val])
|
||||
Endif
|
||||
thisform.do_executa
|
||||
Thisform.lSyncPending = .T.
|
||||
Thisform.tmrSync.Interval = 1
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Grid1.cNract.Text1.Valid
|
||||
@@ -12664,6 +12724,8 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
|
||||
|
||||
PROCEDURE Grid1.cParticipaValuta.Check1.Valid
|
||||
thisform.do_executa
|
||||
Thisform.lSyncPending = .T.
|
||||
Thisform.tmrSync.Interval = 1
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE Grid1.cScc.Text1.GotFocus
|
||||
@@ -12888,6 +12950,7 @@ DEFINE CLASS import_nota AS frm_termin_renunt OF "_frm_child.vcx"
|
||||
Replace id_valuta With loCauta.id_valuta, nume_val With Alltrim(loCauta.nume_val)
|
||||
Thisform.copiaza_valoare([id_valuta])
|
||||
Thisform.copiaza_valoare([nume_val])
|
||||
This.Value = introdc.nume_val
|
||||
Thisform.grid1.Refresh()
|
||||
Endif
|
||||
ENDPROC
|
||||
|
||||
8
utile/Teste/achizitie_import/mock_caut_valuta.prg
Normal file
8
utile/Teste/achizitie_import/mock_caut_valuta.prg
Normal file
@@ -0,0 +1,8 @@
|
||||
* mock_caut_valuta.prg - inlocuieste caut_valuta (ocautare.prg) fara UI/Oracle.
|
||||
* Incarcat cu SET PROCEDURE ADDITIVE INAINTE de "ocautare" (castiga primul incarcat, capcana g).
|
||||
* Obiectul de rezultat (PUBLIC goMockValuta) e construit INLINE in programul principal
|
||||
* (capcana l: CREATEOBJECT/ADDPROPERTY nu merg corect apelate dintr-o procedura in acest runtime).
|
||||
FUNCTION caut_valuta
|
||||
LPARAMETERS tnPornire, tlDesktop, tlFaraMonedaNationala
|
||||
RETURN goMockValuta
|
||||
ENDFUNC
|
||||
766
utile/Teste/achizitie_import/test_debifare_invaluta.prg
Normal file
766
utile/Teste/achizitie_import/test_debifare_invaluta.prg
Normal file
@@ -0,0 +1,766 @@
|
||||
* test_debifare_invaluta.prg - verifica fix-ul Grid1.cInValuta.Check1.Valid (COMUN\clase\
|
||||
* ointroduceri.vcx, clasa IMPORT_nota): la debifare (in_valuta=0) se sterg valuta/suma_val/
|
||||
* curs SI suma_doc_val (runda 2) pe TOATE randurile documentului (doc_key), prin
|
||||
* copiaza_valoare (propagare pe grup); la re-bifare (in_valuta=1) doar in_valuta se propaga
|
||||
* neconditionat, campurile de valuta raman goale (nu se restaureaza).
|
||||
*
|
||||
* Runda 4: dupa orice Valid relevant (cInValuta, cCurs, cParticipaValuta), formularul
|
||||
* armeaza o sincronizare amanata (lSyncPending+tmrSync) care ruleaza sincronizeaza():
|
||||
* recalculeaza()+do_reface() (repretare articole), sparge_document/uneste_document pe
|
||||
* TOATE documentele din grid (nu doar cel editat), recalc_diferente, valideaza_sume,
|
||||
* repozitionare. nr_doc trebuie sa fie UNIC per document (invariant real, calc_doc_key) -
|
||||
* altfel sparge_document trateaza gresit mai multe documente ca fiind "principalul" (nr_doc
|
||||
* minim), amestecandu-le. Documentele: 2001 (nr_doc=1, principal - are articole in rul_temp),
|
||||
* 101 (nr_doc=2, secundar, mod_manual=0 pe S - participa la spargere/repartizare), 102
|
||||
* (nr_doc=3, secundar, mod_manual=1 pe S - sparge_document il lasa neatins, guard manual).
|
||||
*
|
||||
* Pasi: PAS1/2 pozitioneaza pe randul B (doc 2001), debifeaza (Check1.Value=0 + Valid()),
|
||||
* verifica armarea sincronizarii, apoi (dupa DOEVENTS) TOATE randurile documentului rezultate
|
||||
* din sync; re-bifeaza (Value=1 + Valid()), verifica propagarea neconditionata a in_valuta si
|
||||
* ca valuta ramane goala. PAS3 debifeaza randul S al doc 101 (secundar, nemanual) si verifica
|
||||
* ca valideaza_sume() ramane .T.. PAS4 schimba cursul pe randul S al doc 102 (secundar, manual -
|
||||
* sparge_document nu il atinge) si verifica recalcularea sumelor + totalurile. PAS5 (nou)
|
||||
* debifeaza cParticipaValuta pe doc 102 si verifica armarea + consumarea sincronizarii amanate.
|
||||
*
|
||||
* Rulare (prin harness):
|
||||
* powershell -ExecutionPolicy Bypass -File vfp_ui_harness.ps1 -TestPrg <acest.prg> -Steps @(...)
|
||||
* Log: test_debifare_invaluta_log.txt
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET DELETED ON
|
||||
SET EXACT ON
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET DECIMALS TO 4
|
||||
SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog, gcSyncDir
|
||||
gcUILog = "D:\ROA\ROAGEST\COMUN\utile\Teste\achizitie_import\test_debifare_invaluta_log.txt"
|
||||
gcSyncDir = "D:\ROA\ROAGEST\COMUN\utile\Teste\achizitie_import\uisync_debifare\"
|
||||
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13)+CHR(10), gcUILog)
|
||||
|
||||
ON ERROR DO UIErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
||||
ON SHUTDOWN QUIT
|
||||
|
||||
TRY
|
||||
LOCAL gcAppPath, lcPath
|
||||
gcAppPath = "D:\ROA\ROAGEST\"
|
||||
SET DEFAULT TO (gcAppPath)
|
||||
|
||||
lcPath = gcAppPath + 'Date;' + ;
|
||||
gcAppPath + 'Include;' + ;
|
||||
gcAppPath + 'FERESTRE;' + ;
|
||||
gcAppPath + 'GRAFICE;' + ;
|
||||
gcAppPath + 'CLASE;' + ;
|
||||
gcAppPath + 'MENIURI;' + ;
|
||||
gcAppPath + 'PROGRAME;' + ;
|
||||
gcAppPath + 'RAPOARTE;' + ;
|
||||
gcAppPath + 'COMUN;' + ;
|
||||
gcAppPath + 'COMUN\CLASE;' + ;
|
||||
gcAppPath + 'COMUN\FERESTRE;' + ;
|
||||
gcAppPath + 'COMUN\PROGRAME;' + ;
|
||||
gcAppPath + 'COMUN\GRAFICE;' + ;
|
||||
gcAppPath + 'COMUN\RAPOARTE;' + ;
|
||||
gcAppPath + 'COMUN\MENIURI;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\GRIDEXTRAS;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\CTL32;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\HPDF;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\HPDF\REPORTOUTPUT;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\WEB;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\EXCEL;' + ;
|
||||
ADDBS(SUBSTR(gcAppPath,1,RAT([\],gcAppPath,2)))+[COMUNROA\]
|
||||
SET PATH TO &lcPath ADDITIVE
|
||||
|
||||
DO UILog WITH 'SET PATH OK'
|
||||
|
||||
*----- CLASE -----
|
||||
SET CLASSLIB TO (gcAppPath + "comun\clase\appwiz") ADDITIVE
|
||||
SET CLASSLIB TO GESTIUNI ADDITIVE
|
||||
SET CLASSLIB TO CAUT ADDITIVE
|
||||
SET CLASSLIB TO BAZA ADDITIVE
|
||||
SET CLASSLIB TO comun ADDITIVE
|
||||
SET CLASSLIB TO accessibility.vcx ADDITIVE
|
||||
SET CLASSLIB TO messagebox ADDITIVE
|
||||
SET CLASSLIB TO registry ADDITIVE
|
||||
SET CLASSLIB TO cauta_alfa_forms.vcx ADDITIVE
|
||||
SET CLASSLIB TO DECABAZA ADDITIVE
|
||||
SET CLASSLIB TO onomenclatoare ADDITIVE
|
||||
SET CLASSLIB TO stocuri.vcx ADDITIVE
|
||||
SET CLASSLIB TO rulaje.vcx ADDITIVE
|
||||
SET CLASSLIB TO ointroduceri ADDITIVE
|
||||
SET CLASSLIB TO ointroduceri_web ADDITIVE
|
||||
SET CLASSLIB TO ointroduceri_depozit ADDITIVE
|
||||
SET CLASSLIB TO overificari ADDITIVE
|
||||
SET CLASSLIB TO ferestre_oracle ADDITIVE
|
||||
SET CLASSLIB TO ferestre_cere_date.vcx ADDITIVE
|
||||
SET CLASSLIB TO configurare.vcx ADDITIVE
|
||||
SET CLASSLIB TO serii_numere.vcx ADDITIVE
|
||||
SET CLASSLIB TO omodificari.vcx ADDITIVE
|
||||
SET CLASSLIB TO ocompensari.vcx ADDITIVE
|
||||
SET CLASSLIB TO caut_ora ADDITIVE
|
||||
SET CLASSLIB TO onote_contabile ADDITIVE
|
||||
SET CLASSLIB TO otoolbar ADDITIVE
|
||||
SET CLASSLIB TO bon_fisc ADDITIVE
|
||||
SET CLASSLIB TO onom_articole ADDITIVE
|
||||
SET CLASSLIB TO onom_retete ADDITIVE
|
||||
SET CLASSLIB TO orapoarte ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_gestiuni ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_parametri ADDITIVE
|
||||
SET CLASSLIB TO ONOM_CURS ADDITIVE
|
||||
SET CLASSLIB TO ctl32_statusbar_fals.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_common.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_structs.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_progressbar.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_balloontip.vcx ADDITIVE
|
||||
SET CLASSLIB TO ocriterii.vcx ADDITIVE
|
||||
SET CLASSLIB TO oavize.vcx ADDITIVE
|
||||
SET CLASSLIB TO onomenclatoare2 ADDITIVE
|
||||
SET CLASSLIB TO wwdialogs.vcx ADDITIVE
|
||||
SET CLASSLIB TO oimportxml.vcx ADDITIVE
|
||||
SET CLASSLIB TO excelxml.vcx ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_obinv.vcx ADDITIVE
|
||||
|
||||
DO UILog WITH 'SET CLASSLIB OK'
|
||||
|
||||
*----- PROCEDURI -----
|
||||
SET PROCEDURE TO PROCEDURI
|
||||
SET PROCEDURE TO "D:\ROA\ROAGEST\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
|
||||
SET PROCEDURE TO acces_meniu ADDITIVE
|
||||
SET PROCEDURE TO cauta_alfa ADDITIVE
|
||||
SET PROCEDURE TO pmenu ADDITIVE
|
||||
SET PROCEDURE TO proceduri_comune ADDITIVE
|
||||
SET PROCEDURE TO quitapp ADDITIVE
|
||||
SET PROCEDURE TO init_program ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_listari.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_configurare.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_articole.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_retete.prg ADDITIVE
|
||||
SET PROCEDURE TO orapoarte.prg ADDITIVE
|
||||
SET PROCEDURE TO mesaje ADDITIVE
|
||||
SET PROCEDURE TO oserii_numere.prg ADDITIVE
|
||||
SET PROCEDURE TO oexport.prg ADDITIVE
|
||||
SET PROCEDURE TO wwConfig.prg ADDITIVE
|
||||
SET PROCEDURE TO proceduri_rapoarte.prg ADDITIVE
|
||||
SET PROCEDURE TO OPROCEDURI_CURS.PRG ADDITIVE
|
||||
SET PROCEDURE TO validare.prg ADDITIVE
|
||||
SET PROCEDURE TO GENCURSOR.PRG ADDITIVE
|
||||
SET PROCEDURE TO OPROCEDURI_COMUNE.PRG ADDITIVE
|
||||
SET PROCEDURE TO OINIT_OPTIUNI.PRG ADDITIVE
|
||||
SET PROCEDURE TO updateserver.prg ADDITIVE
|
||||
SET PROCEDURE TO oinainte_de.prg ADDITIVE
|
||||
SET PROCEDURE TO ooperatii_comune.prg ADDITIVE
|
||||
SET PROCEDURE TO Ocompensari.PRG ADDITIVE
|
||||
SET PROCEDURE TO OPROCEDURI_aMS.PRG ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_rulaje ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_stocuri ADDITIVE
|
||||
SET PROCEDURE TO OINTRODUCERI ADDITIVE
|
||||
SET PROCEDURE TO oHeader.prg ADDITIVE
|
||||
SET PROCEDURE TO proceduri_excel.PRG ADDITIVE
|
||||
SET PROCEDURE TO onomenclatoare.PRG ADDITIVE
|
||||
SET PROCEDURE TO osecurity ADDITIVE
|
||||
SET PROCEDURE TO ocautare ADDITIVE
|
||||
SET PROCEDURE TO orefaceri ADDITIVE
|
||||
SET PROCEDURE TO ofacturare_comun.PRG ADDITIVE
|
||||
SET PROCEDURE TO ofacturare_stoc.PRG ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_casademarcat ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_casa_marcat_e500 ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_casa_marcat_mp500 ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_util.prg ADDITIVE
|
||||
SET PROCEDURE TO wwxmlhttp.prg ADDITIVE
|
||||
SET PROCEDURE TO ini.prg ADDITIVE
|
||||
SET PROCEDURE TO odocumente.prg ADDITIVE
|
||||
SET PROCEDURE TO regex.prg ADDITIVE
|
||||
SET PROCEDURE TO wwutils.prg ADDITIVE
|
||||
SET PROCEDURE TO inchidere_k ADDITIVE
|
||||
SET PROCEDURE TO iniacces.prg ADDITIVE
|
||||
SET PROCEDURE TO oupdate.prg ADDITIVE
|
||||
SET PROCEDURE TO procese.prg ADDITIVE
|
||||
SET PROCEDURE TO version.prg ADDITIVE
|
||||
SET PROCEDURE TO xmlaccess.prg ADDITIVE
|
||||
SET PROCEDURE TO xmlparser.prg ADDITIVE
|
||||
SET PROCEDURE TO filebringer.prg ADDITIVE
|
||||
SET PROCEDURE TO wwcodeupdate.prg ADDITIVE
|
||||
SET PROCEDURE TO wwhttp.prg ADDITIVE
|
||||
SET PROCEDURE TO xdate.prg ADDITIVE
|
||||
SET PROCEDURE TO ofacturare.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_obinv.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_facturare.prg ADDITIVE
|
||||
SET PROCEDURE TO email.prg ADDITIVE
|
||||
|
||||
*----- Harness UI reutilizabil -----
|
||||
SET PROCEDURE TO "D:\ROA\ROAGEST\COMUN\utile\Teste\ui_harness.prg" ADDITIVE
|
||||
|
||||
DO UILog WITH 'SET PROCEDURE OK'
|
||||
|
||||
*----- Globale minimale cerute de definitia clasei / Init -----
|
||||
PUBLIC gnPc, gnPval, gnPcant, gnPpret, gnPPretval, gnPCurs, gnPVal, gnPPretV, gnPPretVal
|
||||
gnPc = 2
|
||||
gnPval = 2
|
||||
gnPVal = 2
|
||||
gnPcant = 3
|
||||
gnPpret = 4
|
||||
gnPPretval = 4
|
||||
gnPPretVal = 4
|
||||
gnPPretV = 4
|
||||
gnPCurs = 4
|
||||
|
||||
PUBLIC gl406, gcS, gnAn, gnLuna, gnIdFirma, gnIdSucursala, gcAcces, gcFirma
|
||||
gl406 = .T.
|
||||
gcS = 'CONTAFIN'
|
||||
gnAn = YEAR(DATE())
|
||||
gnLuna = MONTH(DATE())
|
||||
gnIdFirma = 110
|
||||
gnIdSucursala = 110
|
||||
gcAcces = "1;2;3;4;5;6;7;8;"
|
||||
gcFirma = gcS
|
||||
|
||||
PUBLIC nror(65000)
|
||||
|
||||
*----- goExecutor dummy -----
|
||||
PUBLIC goExecutor
|
||||
goExecutor = CREATEOBJECT('dummyexecutor')
|
||||
DO UILog WITH 'goExecutor dummy creat'
|
||||
|
||||
*----- goApp dummy -----
|
||||
PUBLIC goApp
|
||||
goApp = CREATEOBJECT('dummyapp')
|
||||
DO UILog WITH 'goApp dummy creat'
|
||||
|
||||
*----- poAct dummy -----
|
||||
PUBLIC poAct
|
||||
poAct = CREATEOBJECT('Custom')
|
||||
poAct.AddProperty('nume_val', 'USD')
|
||||
poAct.AddProperty('curs', 4.56)
|
||||
poAct.AddProperty('proc_tva', 1.21)
|
||||
poAct.AddProperty('nnir', 0)
|
||||
poAct.AddProperty('dataact', DATE())
|
||||
poAct.AddProperty('id_valuta', 1)
|
||||
|
||||
*----- jtva_coloane2: minimal -----
|
||||
IF USED('jtva_coloane2')
|
||||
USE IN ('jtva_coloane2')
|
||||
ENDIF
|
||||
CREATE CURSOR jtva_coloane2 (ordine N(8), id_jtva_coloana N(14), denumire C(100), ;
|
||||
jc N(1), jv N(1), afisat N(1), coloana_jc C(20), coloana_jv C(20), ;
|
||||
cota_tva N(6,2), id_tva N(14))
|
||||
INSERT INTO jtva_coloane2 VALUES (0, 0, '', 0, 0, 1, '', '', 0, 0)
|
||||
INSERT INTO jtva_coloane2 VALUES (1, 208, 'ACH. INT. 21%', 1, 0, 1, 'RO21B', 'RO21T', 21, 209)
|
||||
INSERT INTO jtva_coloane2 VALUES (2, 209, 'TVA ACH. INT. 21%', 1, 0, 1, 'RO21T', '', 21, 0)
|
||||
DO UILog WITH 'jtva_coloane2 creat (minimal)'
|
||||
|
||||
*----- saft_taxtable: minimal -----
|
||||
IF USED('saft_taxtable')
|
||||
USE IN ('saft_taxtable')
|
||||
ENDIF
|
||||
CREATE CURSOR saft_taxtable (taxname C(250) NULL, typename C(250) NULL, taxcode N(6) NULL, ;
|
||||
taxtype N(3) NULL, descriere C(250) NULL, tip C(100) NULL, descriere_tip C(250) NULL, ;
|
||||
procent_taxa N(7,2) NULL, procent_prorata N(7,2) NULL, inactiv N(1) NULL, tva N(1) NULL, ;
|
||||
wht N(1) NULL, tva_achizitii N(1) NULL, tva_livrari N(1) NULL)
|
||||
INDEX ON taxcode TAG taxcode
|
||||
INSERT INTO saft_taxtable (taxname, taxcode, descriere, procent_taxa, tva, wht, tva_achizitii, tva_livrari) ;
|
||||
VALUES ('', 0, '', 0, 1, 1, 1, 1)
|
||||
DO UILog WITH 'saft_taxtable creat (minimal)'
|
||||
|
||||
*----- introdc: RecordSource Grid1. Documente cu nr_doc UNIC per document (invariant real,
|
||||
* vezi calc_doc_key) - altfel sincronizeaza() confunda mai multe documente cu nr_doc egal
|
||||
* drept "principalul" (nr_doc minim). Document 2001 (nr_doc=1, principal): rand B
|
||||
* (suma=1000, suma_val=219.30) + rand T pereche (suma=210=1000*21%, suma_val=46.05,
|
||||
* ptva=21 - consistent, ca do_executa sa nu modifice suma la recalculare). in_valuta=1,
|
||||
* id_valuta=1, nume_val='USD', curs=4.56 pe ambele randuri. -----
|
||||
IF USED('introdc')
|
||||
USE IN ('introdc')
|
||||
ENDIF
|
||||
CREATE CURSOR introdc ( ;
|
||||
id_note N(14), explicatia C(100), scd C(10), ascd C(20), scc C(10), ascc C(20), ;
|
||||
cu_tva N(1), id_set N(14), ordine N(8), in_valuta N(1), id_jtva_coloana N(14) NULL, ;
|
||||
ptva N(6,2), explicatie_tva C(50), tipjurnal C(2), taxcode N(6), paymentcode C(9), ;
|
||||
suma N(18,4), suma_val N(18,4), id_partd N(14), id_partc N(14), partd C(100), partc C(100), ;
|
||||
id_fact N(14), id_factd N(14), id_factc N(14), pereched N(14), perechec N(14), ;
|
||||
nract N(14), serie_act C(10), explicatia4 C(50), explicatia5 C(50), participa_valuta L, ;
|
||||
id_valuta N(14), curs N(14,4), nume_val C(10), dataact D, fdoc C(50), id_fdoc N(14), ;
|
||||
se_scrie N(1), tva_incasare N(1), doc_color N(10), doc_label C(10), tip_rand C(1), ;
|
||||
doc_key C(80), nr_doc N(8), suma_doc N(18,4), suma_doc_val N(18,4), mod_manual N(1), ;
|
||||
scd_orig C(20), ascd_orig C(20))
|
||||
|
||||
INSERT INTO introdc (tip_rand, scd, scc, ascc, suma, suma_val, id_jtva_coloana, ptva, explicatie_tva, ;
|
||||
in_valuta, participa_valuta, id_valuta, curs, nume_val, nr_doc, nract, serie_act, fdoc, partc, explicatia, ;
|
||||
cu_tva, dataact, suma_doc, suma_doc_val, doc_key, mod_manual) ;
|
||||
VALUES ('B','371','401','FURN01', 1000, 219.30, 208, 21, 'ACH. INT. 21%', ;
|
||||
1, .T., 1, 4.56, 'USD', 1, 2001, 'A', 'Factura', 'FURNIZOR ABC SRL', 'Marfa achizitionata valuta', ;
|
||||
1, DATE(), 1000, 219.30, 'A|2001|0|0', 0)
|
||||
INSERT INTO introdc (tip_rand, scd, scc, ascc, suma, suma_val, id_jtva_coloana, ptva, explicatie_tva, ;
|
||||
in_valuta, participa_valuta, id_valuta, curs, nume_val, nr_doc, nract, serie_act, fdoc, partc, explicatia, ;
|
||||
cu_tva, dataact, suma_doc, suma_doc_val, doc_key, mod_manual) ;
|
||||
VALUES ('T','4426','401','FURN01', 210, 46.05, 209, 21, 'TVA ACH. INT. 21%', ;
|
||||
1, .T., 1, 4.56, 'USD', 1, 2001, 'A', 'Factura', 'FURNIZOR ABC SRL', 'TVA deductibil valuta', ;
|
||||
1, DATE(), 1000, 219.30, 'A|2001|0|0', 0)
|
||||
INSERT INTO introdc (tip_rand, scd, scc, ascc, suma, suma_val, id_jtva_coloana, ptva, explicatie_tva, ;
|
||||
in_valuta, participa_valuta, id_valuta, curs, nume_val, nr_doc, nract, serie_act, fdoc, partc, explicatia, ;
|
||||
cu_tva, dataact, suma_doc, suma_doc_val, doc_key, mod_manual) ;
|
||||
VALUES ('S','371','401','FURN02', 450, 100, 208, 21, 'ACH. INT. 21%', ;
|
||||
1, .T., 1, 4.50, 'USD', 2, 101, 'D', 'DVI', 'FURNIZOR XYZ SRL', 'Marfa achizitionata valuta spart pe conturi', ;
|
||||
1, DATE(), 450, 100, 'D|101|0|0', 0)
|
||||
INSERT INTO introdc (tip_rand, scd, scc, ascc, suma, suma_val, id_jtva_coloana, ptva, explicatie_tva, ;
|
||||
in_valuta, participa_valuta, id_valuta, curs, nume_val, nr_doc, nract, serie_act, fdoc, partc, explicatia, ;
|
||||
cu_tva, dataact, suma_doc, suma_doc_val, doc_key, mod_manual) ;
|
||||
VALUES ('T','4426','401','FURN02', 94.50, 21, 209, 21, 'TVA ACH. INT. 21%', ;
|
||||
1, .T., 1, 4.50, 'USD', 2, 101, 'D', 'DVI', 'FURNIZOR XYZ SRL', 'TVA deductibil valuta spart pe conturi', ;
|
||||
1, DATE(), 450, 100, 'D|101|0|0', 0)
|
||||
INSERT INTO introdc (tip_rand, scd, scc, ascc, suma, suma_val, id_jtva_coloana, ptva, explicatie_tva, ;
|
||||
in_valuta, participa_valuta, id_valuta, curs, nume_val, nr_doc, nract, serie_act, fdoc, partc, explicatia, ;
|
||||
cu_tva, dataact, suma_doc, suma_doc_val, doc_key, mod_manual) ;
|
||||
VALUES ('S','371','401','FURN03', 2615, 500, 208, 21, 'ACH. INT. 21%', ;
|
||||
1, .T., 1, 5.23, 'USD', 3, 102, 'D', 'DVI', 'FURNIZOR QRS SRL', 'Marfa achizitionata valuta curs manual', ;
|
||||
1, DATE(), 2615, 500, 'D|102|0|0', 1)
|
||||
INSERT INTO introdc (tip_rand, scd, scc, ascc, suma, suma_val, id_jtva_coloana, ptva, explicatie_tva, ;
|
||||
in_valuta, participa_valuta, id_valuta, curs, nume_val, nr_doc, nract, serie_act, fdoc, partc, explicatia, ;
|
||||
cu_tva, dataact, suma_doc, suma_doc_val, doc_key, mod_manual) ;
|
||||
VALUES ('T','4426','401','FURN03', 549.15, 105, 209, 21, 'TVA ACH. INT. 21%', ;
|
||||
1, .T., 1, 5.23, 'USD', 3, 102, 'D', 'DVI', 'FURNIZOR QRS SRL', 'TVA deductibil valuta curs manual', ;
|
||||
1, DATE(), 2615, 500, 'D|102|0|0', 0)
|
||||
GO TOP IN introdc
|
||||
DO UILog WITH 'introdc populat (' + TRANSFORM(RECCOUNT('introdc')) + ' randuri: doc 2001(nr_doc=1,principal) B+T + doc 101(nr_doc=2,secundar) S+T + doc 102(nr_doc=3,secundar,manual) S+T)'
|
||||
|
||||
*----- rul_temp: RecordSource GridArt. Pre-populat, ca sa nu-l recreeze Init din Oracle. -----
|
||||
IF USED('rul_temp')
|
||||
USE IN ('rul_temp')
|
||||
ENDIF
|
||||
CREATE CURSOR rul_temp (denumire C(100), codmat C(30), cant N(14,3), ;
|
||||
pret_val N(18,4), pretd N(18,4), pret N(18,4), pret_lei N(18,4), ;
|
||||
cont C(10), acont C(20), serie C(30), lot C(30), adata_expirare C(10), ;
|
||||
proc_disc N(6,2), cota_tva N(6,2))
|
||||
INSERT INTO rul_temp (denumire, codmat, cant, pret_val, pretd, pret, pret_lei, ;
|
||||
cont, acont, serie, lot, adata_expirare, proc_disc, cota_tva) ;
|
||||
VALUES ('Laptop Dell Latitude', 'ART001', 1, 219.30, 219.30, 1000, 1000, ;
|
||||
'371', '01', 'SN-LAP-001', 'L001', '', 0, 21)
|
||||
GO TOP IN rul_temp
|
||||
DO UILog WITH 'rul_temp populat (' + TRANSFORM(RECCOUNT('rul_temp')) + ' articole)'
|
||||
|
||||
*----- Desktop VFP vizibil, maximizat -----
|
||||
_SCREEN.Visible = .T.
|
||||
_SCREEN.WindowState = 2
|
||||
_SCREEN.Caption = 'TEST debifare in_valuta'
|
||||
|
||||
DO UILog WITH 'mediu pregatit, CREATEOBJECT(import_nota, .F.)'
|
||||
|
||||
SELECT introdc
|
||||
PUBLIC goObj
|
||||
goObj = CREATEOBJECT('IMPORT_nota', .F.)
|
||||
|
||||
IF VARTYPE(goObj) <> 'O'
|
||||
DO UILog WITH 'FAIL: CREATEOBJECT a returnat ' + TRANSFORM(goObj)
|
||||
DO HarnessDone WITH 'done-error'
|
||||
QUIT
|
||||
ENDIF
|
||||
goObj.oact = poAct
|
||||
*-- suprim auto-deschiderea modala a dialogului Adauga factura din Activate (ar bloca testul)
|
||||
goObj.lDialogAratat = .T.
|
||||
DO UILog WITH 'PASS: instantiere OK, afisez formularul'
|
||||
|
||||
goObj.WindowType = 0
|
||||
goObj.Visible = .T.
|
||||
goObj.Show()
|
||||
goObj.WindowState = 2
|
||||
DOEVENTS FORCE
|
||||
|
||||
*========================= PAS 0: formular afisat =========================
|
||||
DO HarnessStep WITH 0, 'Formular afisat: introdc=' + TRANSFORM(RECCOUNT('introdc')) + ' randuri, in_valuta B=' + TRANSFORM(introdc.in_valuta)
|
||||
|
||||
*========================= PAS 1: DEBIFARE (Check1.Value=0 + Valid()) pe randul B, doc 2001 =========================
|
||||
PRIVATE pnAsserts, pnPass
|
||||
LOCAL lnA1, lnP1
|
||||
STORE 0 TO pnAsserts, pnPass
|
||||
|
||||
SELECT introdc
|
||||
GO TOP
|
||||
LOCATE FOR nract == 2001 AND tip_rand == 'B'
|
||||
=Assert3('PAS1: rand B doc 2001 gasit (Found)', IIF(FOUND(),1,0), 1)
|
||||
DO UILog WITH 'PAS1: pozitionat pe randul B (nract=2001), in_valuta INAINTE=' + TRANSFORM(introdc.in_valuta) + ' nume_val=' + ALLTRIM(introdc.nume_val)
|
||||
|
||||
goObj.grid1.cInValuta.check1.Value = 0
|
||||
goObj.grid1.cInValuta.check1.Valid()
|
||||
|
||||
*-- R4: dupa Valid, INAINTE de DOEVENTS, sincronizarea trebuie doar ARMATA (nu executata inca)
|
||||
=Assert3('PAS1 armare: lSyncPending=.T. dupa Valid (pre-DOEVENTS)', IIF(goObj.lSyncPending,1,0), 1)
|
||||
=Assert3('PAS1 armare: tmrSync.Interval>0 dupa Valid (pre-DOEVENTS)', IIF(goObj.tmrSync.Interval>0,1,0), 1)
|
||||
|
||||
DOEVENTS FORCE
|
||||
|
||||
*-- dupa DOEVENTS, tmrSync trebuie sa fi consumat armarea si rulat sincronizeaza()
|
||||
=Assert3('PAS1 sync consumat: lSyncPending=.F. dupa DOEVENTS', IIF(goObj.lSyncPending,1,0), 0)
|
||||
=Assert3('PAS1 sync consumat: tmrSync.Interval=0 dupa DOEVENTS', goObj.tmrSync.Interval, 0)
|
||||
DO DumpIntrodc WITH 'dupa PAS1 sync'
|
||||
|
||||
*-- verificare TOATE randurile documentului 2001 dupa sincronizare (sparge_document poate
|
||||
*-- re-crea S-uri din rul_temp; B-ul original ramane ca sablon) - filtrate pe nract, nu pe
|
||||
*-- pozitie fizica (ordinea/structura se poate schimba dupa sync)
|
||||
LOCAL lnCntBS2001, lnSumaLei2001, lnCntT2001
|
||||
STORE 0 TO lnCntBS2001, lnSumaLei2001, lnCntT2001
|
||||
SELECT introdc
|
||||
SCAN FOR nract == 2001
|
||||
DO CASE
|
||||
CASE INLIST(tip_rand,'B','S')
|
||||
lnCntBS2001 = lnCntBS2001 + 1
|
||||
lnSumaLei2001 = lnSumaLei2001 + suma
|
||||
=Assert3('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].in_valuta=0', in_valuta, 0)
|
||||
=Assert3('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].id_valuta=0', id_valuta, 0)
|
||||
=AssertStr('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].nume_val=""', ALLTRIM(NVL(nume_val,'?')), '')
|
||||
=Assert3('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].curs=0', curs, 0)
|
||||
=Assert3('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].suma_val=0', suma_val, 0)
|
||||
=Assert3('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].suma_doc_val=0', suma_doc_val, 0)
|
||||
CASE tip_rand == 'T'
|
||||
lnCntT2001 = lnCntT2001 + 1
|
||||
=Assert3('2001.T['+TRANSFORM(RECNO())+'].in_valuta=0', in_valuta, 0)
|
||||
=Assert3('2001.T['+TRANSFORM(RECNO())+'].id_valuta=0', id_valuta, 0)
|
||||
=AssertStr('2001.T['+TRANSFORM(RECNO())+'].nume_val=""', ALLTRIM(NVL(nume_val,'?')), '')
|
||||
=Assert3('2001.T['+TRANSFORM(RECNO())+'].curs=0', curs, 0)
|
||||
=Assert3('2001.T['+TRANSFORM(RECNO())+'].suma_val=0', suma_val, 0)
|
||||
=Assert3('2001.T['+TRANSFORM(RECNO())+'].suma_doc_val=0', suma_doc_val, 0)
|
||||
ENDCASE
|
||||
ENDSCAN
|
||||
=Assert3('2001: cel putin un rand B/S dupa sync', IIF(lnCntBS2001>0,1,0), 1)
|
||||
=Assert3('2001: cel putin un rand T dupa sync', IIF(lnCntT2001>0,1,0), 1)
|
||||
=Assert3('2001: total suma randuri B/S = 1000 (baza neschimbata)', lnSumaLei2001, 1000)
|
||||
DO UILog WITH 'PAS1: doc 2001 dupa sync - ' + TRANSFORM(lnCntBS2001) + ' rand(uri) B/S, ' + TRANSFORM(lnCntT2001) + ' rand(uri) T'
|
||||
|
||||
goObj.cmesajsync = ''
|
||||
LOCAL llOk1
|
||||
llOk1 = goObj.valideaza_sume()
|
||||
=Assert3('PAS1 valideaza_sume()=.T.', IIF(llOk1,1,0), 1)
|
||||
=AssertStr('PAS1 cmesajsync gol', ALLTRIM(NVL(goObj.cmesajsync,'?')), '')
|
||||
IF !EMPTY(NVL(goObj.cmesajsync,''))
|
||||
DO UILog WITH 'PAS1 cmesajsync=[' + goObj.cmesajsync + ']'
|
||||
ENDIF
|
||||
|
||||
lnP1 = pnPass
|
||||
lnA1 = pnAsserts
|
||||
DO UILog WITH 'PAS1 REZULTAT: ' + TRANSFORM(lnP1) + '/' + TRANSFORM(lnA1) + ' assert-uri PASS'
|
||||
DO HarnessStep WITH 1, 'debifare: ' + TRANSFORM(lnP1) + '/' + TRANSFORM(lnA1) + ' PASS'
|
||||
|
||||
*========================= PAS 2: RE-BIFARE (Check1.Value=1 + Valid()) pe randul B/S doc 2001 =========================
|
||||
STORE 0 TO pnAsserts, pnPass
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR nract == 2001 AND INLIST(tip_rand,'B','S')
|
||||
=Assert3('PAS2: rand B/S doc 2001 gasit (Found) inainte de re-bifare', IIF(FOUND(),1,0), 1)
|
||||
IF FOUND()
|
||||
goObj.grid1.cInValuta.check1.Value = 1
|
||||
goObj.grid1.cInValuta.check1.Valid()
|
||||
DOEVENTS FORCE
|
||||
ELSE
|
||||
DO UILog WITH 'PAS2: ABANDONAT - nu exista rand B/S pe doc 2001 (stare neasteptata dupa PAS1)'
|
||||
ENDIF
|
||||
|
||||
*-- propagare neconditionata a in_valuta pe TOATE randurile doc 2001; campurile de valuta
|
||||
*-- raman goale (nu se restaureaza - doar Value=0 le goleste explicit, Value=1 nu le reface)
|
||||
LOCAL lnCntRande2001b
|
||||
lnCntRande2001b = 0
|
||||
SELECT introdc
|
||||
SCAN FOR nract == 2001 AND INLIST(tip_rand,'B','S','T')
|
||||
lnCntRande2001b = lnCntRande2001b + 1
|
||||
=Assert3('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].in_valuta=1 (re-bifare)', in_valuta, 1)
|
||||
=AssertStr('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].nume_val ramas ""', ALLTRIM(NVL(nume_val,'?')), '')
|
||||
=Assert3('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].id_valuta ramas 0', id_valuta, 0)
|
||||
=Assert3('2001.'+tip_rand+'['+TRANSFORM(RECNO())+'].curs ramas 0', curs, 0)
|
||||
ENDSCAN
|
||||
=Assert3('2001: cel putin un rand verificat la re-bifare', IIF(lnCntRande2001b>0,1,0), 1)
|
||||
|
||||
DO UILog WITH 'PAS2 REZULTAT: ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' assert-uri PASS'
|
||||
DO HarnessStep WITH 2, 're-bifare: ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' PASS'
|
||||
|
||||
LOCAL lnP2, lnA2
|
||||
lnP2 = pnPass
|
||||
lnA2 = pnAsserts
|
||||
|
||||
*========================= PAS 3: debifare pe document secundar spart pe conturi (S/T, doc 101, nemanual) =========================
|
||||
STORE 0 TO pnAsserts, pnPass
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR nract == 101 AND tip_rand == 'S'
|
||||
=Assert3('PAS3: rand S doc 101 gasit (Found)', IIF(FOUND(),1,0), 1)
|
||||
IF FOUND()
|
||||
DO UILog WITH 'PAS3: pozitionat pe randul S (nract=101), in_valuta INAINTE=' + TRANSFORM(introdc.in_valuta)
|
||||
|
||||
goObj.grid1.cInValuta.check1.Value = 0
|
||||
goObj.grid1.cInValuta.check1.Valid()
|
||||
DOEVENTS FORCE
|
||||
DO DumpIntrodc WITH 'dupa PAS3 sync'
|
||||
ELSE
|
||||
DO UILog WITH 'PAS3: ABANDONAT - nu exista rand S pe doc 101'
|
||||
ENDIF
|
||||
|
||||
*-- randul cu contul de marfa (371) al doc 101, indiferent daca a ramas S sau a fost
|
||||
*-- rescris de sync (spargere/unire legitima) - esenta testata e golirea valutei
|
||||
LOCAL lnSuma101
|
||||
lnSuma101 = 0
|
||||
SELECT introdc
|
||||
SCAN FOR nract == 101 AND ALLTRIM(scd) == '371' AND INLIST(tip_rand,'B','S')
|
||||
lnSuma101 = lnSuma101 + suma
|
||||
=Assert3('101.'+tip_rand+'(371).in_valuta=0', in_valuta, 0)
|
||||
=Assert3('101.'+tip_rand+'(371).suma_val=0', suma_val, 0)
|
||||
=Assert3('101.'+tip_rand+'(371).suma_doc_val=0', suma_doc_val, 0)
|
||||
=Assert3('101.'+tip_rand+'(371).curs=0', curs, 0)
|
||||
ENDSCAN
|
||||
=Assert3('101: suma totala cont 371 neschimbata(450)', lnSuma101, 450)
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR nract == 101 AND ALLTRIM(scd) == '4426' AND tip_rand == 'T'
|
||||
IF FOUND()
|
||||
=Assert3('101.T(4426).in_valuta=0', introdc.in_valuta, 0)
|
||||
=Assert3('101.T(4426).suma_val=0', introdc.suma_val, 0)
|
||||
=Assert3('101.T(4426).suma_doc_val=0', introdc.suma_doc_val, 0)
|
||||
=Assert3('101.T(4426).curs=0', introdc.curs, 0)
|
||||
ELSE
|
||||
DO UILog WITH 'PAS3: ATENTIE, nu exista rand T(4426) pt nract=101 dupa sync'
|
||||
ENDIF
|
||||
|
||||
goObj.cmesajsync = ''
|
||||
LOCAL llOk3
|
||||
llOk3 = goObj.valideaza_sume()
|
||||
=Assert3('valideaza_sume()=.T.', IIF(llOk3,1,0), 1)
|
||||
=AssertStr('cmesajsync gol (fara fals NESINCRONIZAT)', ALLTRIM(NVL(goObj.cmesajsync,'?')), '')
|
||||
IF !EMPTY(NVL(goObj.cmesajsync,''))
|
||||
DO UILog WITH 'PAS3 cmesajsync=[' + goObj.cmesajsync + ']'
|
||||
ENDIF
|
||||
|
||||
DO UILog WITH 'PAS3 REZULTAT: ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' assert-uri PASS'
|
||||
DO HarnessStep WITH 3, 'valideaza_sume doc spart: ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' PASS'
|
||||
|
||||
LOCAL lnP3, lnA3
|
||||
lnP3 = pnPass
|
||||
lnA3 = pnAsserts
|
||||
|
||||
*========================= PAS 4: schimbare curs (Grid1.cCurs.Text1.Valid) pe doc 102 (secundar, manual) =========================
|
||||
STORE 0 TO pnAsserts, pnPass
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR nract == 102 AND tip_rand == 'S'
|
||||
=Assert3('PAS4: rand S doc 102 gasit (Found)', IIF(FOUND(),1,0), 1)
|
||||
IF FOUND()
|
||||
DO UILog WITH 'PAS4: pozitionat pe randul S (nract=102), curs INAINTE=' + TRANSFORM(introdc.curs)
|
||||
|
||||
goObj.grid1.cCurs.text1.Value = 4.00
|
||||
goObj.grid1.cCurs.text1.Valid()
|
||||
DOEVENTS FORCE
|
||||
ELSE
|
||||
DO UILog WITH 'PAS4: ABANDONAT - nu exista rand S pe doc 102'
|
||||
ENDIF
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR nract == 102 AND ALLTRIM(scd) == '371' AND tip_rand == 'S'
|
||||
IF FOUND()
|
||||
=Assert3('S102.curs=4', introdc.curs, 4)
|
||||
=Assert3('S102.suma=2000 (recalculat)', introdc.suma, 2000)
|
||||
=Assert3('S102.suma_val neschimbat(500)', introdc.suma_val, 500)
|
||||
=Assert3('S102.suma_doc=2000', introdc.suma_doc, 2000)
|
||||
=Assert3('S102.suma_doc_val=500', introdc.suma_doc_val, 500)
|
||||
ELSE
|
||||
DO UILog WITH 'PAS4: ATENTIE, nu exista rand S(371) pt nract=102 dupa sync (asteptat neschimbat - mod_manual=1)'
|
||||
=Assert3('S102 gasit dupa sync (mod_manual=1, sparge_document nu ar trebui sa-l atinga)', 0, 1)
|
||||
ENDIF
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR nract == 102 AND ALLTRIM(scd) == '4426' AND tip_rand == 'T'
|
||||
IF FOUND()
|
||||
=Assert3('T102.curs=4 (propagat)', introdc.curs, 4)
|
||||
=Assert3('T102.suma=420', introdc.suma, 420)
|
||||
=Assert3('T102.suma_val neschimbat(105)', introdc.suma_val, 105)
|
||||
=Assert3('T102.suma_doc=2000', introdc.suma_doc, 2000)
|
||||
=Assert3('T102.suma_doc_val=500', introdc.suma_doc_val, 500)
|
||||
ELSE
|
||||
DO UILog WITH 'PAS4: ATENTIE, nu exista rand T(4426) pt nract=102 dupa sync'
|
||||
ENDIF
|
||||
|
||||
goObj.cmesajsync = ''
|
||||
LOCAL llOk4
|
||||
llOk4 = goObj.valideaza_sume()
|
||||
=Assert3('valideaza_sume()=.T. (PAS4)', IIF(llOk4,1,0), 1)
|
||||
=AssertStr('cmesajsync gol (PAS4)', ALLTRIM(NVL(goObj.cmesajsync,'?')), '')
|
||||
IF !EMPTY(NVL(goObj.cmesajsync,''))
|
||||
DO UILog WITH 'PAS4 cmesajsync=[' + goObj.cmesajsync + ']'
|
||||
ENDIF
|
||||
|
||||
DO UILog WITH 'PAS4 REZULTAT: ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' assert-uri PASS'
|
||||
DO HarnessStep WITH 4, 'recalc curs doc spart: ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' PASS'
|
||||
|
||||
LOCAL lnP4, lnA4
|
||||
lnP4 = pnPass
|
||||
lnA4 = pnAsserts
|
||||
|
||||
*========================= PAS 5 (NOU, R4): debifare cParticipaValuta pe doc 102 (S, manual) =========================
|
||||
STORE 0 TO pnAsserts, pnPass
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR nract == 102 AND ALLTRIM(scd) == '371' AND tip_rand == 'S'
|
||||
=Assert3('PAS5: rand S doc 102 gasit (Found)', IIF(FOUND(),1,0), 1)
|
||||
IF FOUND()
|
||||
DO UILog WITH 'PAS5: pozitionat pe randul S (nract=102), participa_valuta INAINTE=' + TRANSFORM(introdc.participa_valuta)
|
||||
|
||||
goObj.grid1.cParticipaValuta.check1.Value = 0
|
||||
goObj.grid1.cParticipaValuta.check1.Valid()
|
||||
|
||||
*-- imediat dupa Valid, INAINTE de DOEVENTS: sincronizarea trebuie doar armata
|
||||
=Assert3('PAS5 armare: lSyncPending=.T. dupa Valid (pre-DOEVENTS)', IIF(goObj.lSyncPending,1,0), 1)
|
||||
=Assert3('PAS5 armare: tmrSync.Interval>0 dupa Valid (pre-DOEVENTS)', IIF(goObj.tmrSync.Interval>0,1,0), 1)
|
||||
|
||||
DOEVENTS FORCE
|
||||
|
||||
*-- dupa DOEVENTS FORCE: sincronizarea trebuie sa fi rulat (armare consumata)
|
||||
=Assert3('PAS5 sync consumat: lSyncPending=.F. dupa DOEVENTS', IIF(goObj.lSyncPending,1,0), 0)
|
||||
=Assert3('PAS5 sync consumat: tmrSync.Interval=0 dupa DOEVENTS', goObj.tmrSync.Interval, 0)
|
||||
|
||||
goObj.cmesajsync = ''
|
||||
LOCAL llOk5
|
||||
llOk5 = goObj.valideaza_sume()
|
||||
=Assert3('PAS5 valideaza_sume()=.T. dupa sync', IIF(llOk5,1,0), 1)
|
||||
=AssertStr('PAS5 cmesajsync gol', ALLTRIM(NVL(goObj.cmesajsync,'?')), '')
|
||||
IF !EMPTY(NVL(goObj.cmesajsync,''))
|
||||
DO UILog WITH 'PAS5 cmesajsync=[' + goObj.cmesajsync + ']'
|
||||
ENDIF
|
||||
ELSE
|
||||
DO UILog WITH 'PAS5: ABANDONAT - nu exista rand S(371) pe doc 102'
|
||||
ENDIF
|
||||
|
||||
DO UILog WITH 'PAS5 REZULTAT: ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' assert-uri PASS'
|
||||
DO HarnessStep WITH 5, 'debifare participa_valuta (armare+sync): ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' PASS'
|
||||
|
||||
LOCAL lnP5, lnA5
|
||||
lnP5 = pnPass
|
||||
lnA5 = pnAsserts
|
||||
|
||||
IF lnP1 = lnA1 AND lnP2 = lnA2 AND lnP3 = lnA3 AND lnP4 = lnA4 AND lnP5 = lnA5
|
||||
DO UILog WITH 'VERDICT FINAL: PASS (toate assert-urile au trecut, ' + TRANSFORM(lnP1+lnP2+lnP3+lnP4+lnP5) + '/' + TRANSFORM(lnA1+lnA2+lnA3+lnA4+lnA5) + ')'
|
||||
ELSE
|
||||
DO UILog WITH 'VERDICT FINAL: FAIL (' + TRANSFORM(lnP1+lnP2+lnP3+lnP4+lnP5) + '/' + TRANSFORM(lnA1+lnA2+lnA3+lnA4+lnA5) + ' assert-uri PASS)'
|
||||
ENDIF
|
||||
|
||||
DO UILog WITH 'GATA - toate pasii executati'
|
||||
DO HarnessDone WITH 'done'
|
||||
|
||||
CATCH TO loExc
|
||||
DO UILog WITH 'CATCH ErrorNo=' + TRANSFORM(loExc.ErrorNo) + ' Message=' + loExc.Message + ' Proc=' + loExc.Procedure + ' Line=' + TRANSFORM(loExc.LineNo) + ' [' + loExc.LineContents + ']'
|
||||
DO HarnessDone WITH 'done-error'
|
||||
ENDTRY
|
||||
|
||||
QUIT
|
||||
|
||||
*==================================================================================
|
||||
PROCEDURE Assert3
|
||||
*-- compara numeric cu toleranta 0.01, logheaza PASS/FAIL, incrementeaza contoare (byref)
|
||||
LPARAMETERS tcLabel, tuActual, tuExpected
|
||||
pnAsserts = pnAsserts + 1
|
||||
IF ABS(NVL(tuActual,0) - tuExpected) < 0.01
|
||||
pnPass = pnPass + 1
|
||||
DO UILog WITH ' PASS ' + tcLabel + ' (=' + TRANSFORM(tuActual) + ')'
|
||||
ELSE
|
||||
DO UILog WITH ' FAIL ' + tcLabel + ' (actual=' + TRANSFORM(tuActual) + ' asteptat=' + TRANSFORM(tuExpected) + ')'
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE AssertStr
|
||||
LPARAMETERS tcLabel, tcActual, tcExpected
|
||||
pnAsserts = pnAsserts + 1
|
||||
IF tcActual == tcExpected
|
||||
pnPass = pnPass + 1
|
||||
DO UILog WITH ' PASS ' + tcLabel + ' (=[' + tcActual + '])'
|
||||
ELSE
|
||||
DO UILog WITH ' FAIL ' + tcLabel + ' (actual=[' + tcActual + '] asteptat=[' + tcExpected + '])'
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE UIErr
|
||||
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
||||
DO UILog WITH 'ON ERROR ' + TRANSFORM(tnErr) + ' [' + tcProg + ':' + TRANSFORM(tnLine) + '] ' + tcMsg
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE DumpIntrodc
|
||||
LPARAMETERS tcEticheta
|
||||
LOCAL lcSel
|
||||
lcSel = SELECT()
|
||||
SELECT introdc
|
||||
DO UILog WITH '--- DUMP introdc [' + tcEticheta + '] (' + TRANSFORM(RECCOUNT()) + ' randuri) ---'
|
||||
SCAN
|
||||
DO UILog WITH ' rec=' + TRANSFORM(RECNO()) + ' nract=' + TRANSFORM(nract) + ' nr_doc=' + TRANSFORM(nr_doc) + ' tip=' + tip_rand + ' scd=' + ALLTRIM(scd) + ' suma=' + TRANSFORM(suma) + ' suma_val=' + TRANSFORM(suma_val) + ' in_valuta=' + TRANSFORM(in_valuta) + ' mod_manual=' + TRANSFORM(mod_manual) + ' doc_key=[' + ALLTRIM(doc_key) + ']'
|
||||
ENDSCAN
|
||||
SELECT (lcSel)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE UILog
|
||||
LPARAMETERS tcMsg
|
||||
LOCAL lcL
|
||||
lcL = FILETOSTR(gcUILog)
|
||||
STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcUILog)
|
||||
ENDPROC
|
||||
|
||||
DEFINE CLASS dummyapp AS Custom
|
||||
PROCEDURE ReadIni
|
||||
LPARAMETERS tcSection, tcKey
|
||||
RETURN ''
|
||||
ENDPROC
|
||||
PROCEDURE WriteIni
|
||||
LPARAMETERS tcSection, tcKey, tcValue
|
||||
RETURN .T.
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
|
||||
DEFINE CLASS dummyexecutor AS Custom
|
||||
cEroare = ''
|
||||
|
||||
PROCEDURE oExecute
|
||||
LPARAMETERS tcSql, tcCursor
|
||||
IF USED(m.tcCursor)
|
||||
USE IN (m.tcCursor)
|
||||
ENDIF
|
||||
IF 'VJTVA_COLOANE' $ UPPER(m.tcSql)
|
||||
DO CreeazaJtvaColoaneView WITH m.tcCursor
|
||||
RETURN 1
|
||||
ENDIF
|
||||
IF 'VPLCONT_ANALITIC' $ UPPER(m.tcSql)
|
||||
CREATE CURSOR (m.tcCursor) (cont C(10), acont C(20))
|
||||
INSERT INTO (m.tcCursor) VALUES ('371', '01')
|
||||
RETURN 1
|
||||
ENDIF
|
||||
CREATE CURSOR (m.tcCursor) (id_temp N(1))
|
||||
RETURN 1
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE oExecuta
|
||||
LPARAMETERS tcSql, tcCursor
|
||||
IF !EMPTY(m.tcCursor)
|
||||
IF USED(m.tcCursor)
|
||||
USE IN (m.tcCursor)
|
||||
ENDIF
|
||||
IF UPPER(m.tcCursor) == 'CJTVACOL4427'
|
||||
CREATE CURSOR (m.tcCursor) (id_jtva_coloana N(14))
|
||||
ELSE
|
||||
CREATE CURSOR (m.tcCursor) (id_temp N(1))
|
||||
ENDIF
|
||||
ENDIF
|
||||
RETURN .T.
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE oSelect2Value
|
||||
LPARAMETERS tcSql, toValue
|
||||
toValue = ''
|
||||
RETURN 1
|
||||
ENDPROC
|
||||
PROCEDURE oReset
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
|
||||
PROCEDURE CreeazaJtvaColoaneView
|
||||
LPARAMETERS tcCursor
|
||||
IF USED(m.tcCursor)
|
||||
USE IN (m.tcCursor)
|
||||
ENDIF
|
||||
CREATE CURSOR (m.tcCursor) (id_jtva_coloana N(14), denumire C(100), jc N(1), jv N(1), ;
|
||||
coloana_jc C(20), coloana_jv C(20), cota_tva N(6,2), id_tva N(14) NULL, afisat N(1), ;
|
||||
id_jtva_ex N(14) NULL, id_jtva_neex N(14) NULL, ordine N(8), ;
|
||||
taxcode N(6) NULL, taxcode_neexigibil N(6) NULL, taxcode_n50 N(6) NULL, ;
|
||||
taxcode_n50_tvai N(6) NULL, taxcode_n100 N(6) NULL, taxcode_regularizare N(6) NULL, taxcode_tvai N(6) NULL)
|
||||
INSERT INTO (m.tcCursor) (id_jtva_coloana, denumire, jc, jv, afisat, ordine, cota_tva) VALUES (0, '', 0, 0, 1, 0, 0)
|
||||
INSERT INTO (m.tcCursor) (id_jtva_coloana, denumire, jc, jv, coloana_jc, cota_tva, id_tva, afisat, ordine, taxcode) ;
|
||||
VALUES (208, 'ACH. INT. 21%', 1, 0, 'RO21B', 21, 209, 1, 1, 301104)
|
||||
ENDPROC
|
||||
11
utile/Teste/achizitie_import/test_debifare_invaluta.ps1
Normal file
11
utile/Teste/achizitie_import/test_debifare_invaluta.ps1
Normal file
@@ -0,0 +1,11 @@
|
||||
# test_debifare_invaluta.ps1 - wrapper subtire peste harness-ul generic vfp_ui_harness.ps1.
|
||||
# Verifica fix-ul Grid1.cInValuta.Check1.Valid: debifare/re-bifare in_valuta propaga corect
|
||||
# pe tot grupul doc_key (B+T), fara sa restaureze valuta la re-bifare.
|
||||
# Rulare: powershell -ExecutionPolicy Bypass -File test_debifare_invaluta.ps1
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$Teste = $PSScriptRoot
|
||||
& (Join-Path (Split-Path $Teste -Parent) 'vfp_ui_harness.ps1') `
|
||||
-TestPrg (Join-Path $Teste 'test_debifare_invaluta.prg') `
|
||||
-Steps @('formular_afisat','debifare','re_bifare','valideaza_sume_doc_spart','recalc_curs_doc_spart','debifare_participa_valuta') `
|
||||
-SyncDir (Join-Path $Teste 'uisync_debifare') `
|
||||
-ShotsDir (Join-Path $Teste 'screenshots_debifare')
|
||||
541
utile/Teste/achizitie_import/test_repro_valuta_dblclick.prg
Normal file
541
utile/Teste/achizitie_import/test_repro_valuta_dblclick.prg
Normal file
@@ -0,0 +1,541 @@
|
||||
* test_repro_valuta_dblclick.prg - reproduce headless bugul "valuta ramane USD" din
|
||||
* Grid1.cValuta.Text1.DblClick (COMUN\clase\ointroduceri.vcx, clasa IMPORT_nota).
|
||||
* Ipoteza: apelat PROGRAMATIC (fara focus real pe celula) Replace-ul ramane (PASS fals in
|
||||
* teste vechi); cu focus REAL pe celula (ca la dublu-click de mouse), textbox-ul activ
|
||||
* rescrie valoarea VECHE peste camp la parasirea celulei => valuta "ramane" USD.
|
||||
*
|
||||
* Mock caut_valuta (mock_caut_valuta.prg, incarcat PRIMUL, capcana g) returneaza
|
||||
* goMockValuta (id_valuta=1, nume_val='RON'), construit INLINE in main (capcana l).
|
||||
*
|
||||
* Pasi: A (programatic, fara focus) - astept 'RON'; B (cu focus real pe celula) -
|
||||
* verifica daca revine la 'USD' (bug reprodus) sau ramane 'RON'.
|
||||
*
|
||||
* Rulare (prin harness):
|
||||
* powershell -ExecutionPolicy Bypass -File vfp_ui_harness.ps1 -TestPrg <acest.prg> -Steps @(...)
|
||||
* Log: test_repro_valuta_dblclick_log.txt
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET DELETED ON
|
||||
SET EXACT ON
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET DECIMALS TO 4
|
||||
SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog, gcSyncDir
|
||||
gcUILog = "D:\ROA\ROAGEST\COMUN\utile\Teste\achizitie_import\test_repro_valuta_dblclick_log.txt"
|
||||
gcSyncDir = "D:\ROA\ROAGEST\COMUN\utile\Teste\achizitie_import\uisync_valuta\"
|
||||
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13)+CHR(10), gcUILog)
|
||||
|
||||
ON ERROR DO UIErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
||||
ON SHUTDOWN QUIT
|
||||
|
||||
TRY
|
||||
LOCAL gcAppPath, lcPath
|
||||
gcAppPath = "D:\ROA\ROAGEST\"
|
||||
SET DEFAULT TO (gcAppPath)
|
||||
|
||||
lcPath = gcAppPath + 'Date;' + ;
|
||||
gcAppPath + 'Include;' + ;
|
||||
gcAppPath + 'FERESTRE;' + ;
|
||||
gcAppPath + 'GRAFICE;' + ;
|
||||
gcAppPath + 'CLASE;' + ;
|
||||
gcAppPath + 'MENIURI;' + ;
|
||||
gcAppPath + 'PROGRAME;' + ;
|
||||
gcAppPath + 'RAPOARTE;' + ;
|
||||
gcAppPath + 'COMUN;' + ;
|
||||
gcAppPath + 'COMUN\CLASE;' + ;
|
||||
gcAppPath + 'COMUN\FERESTRE;' + ;
|
||||
gcAppPath + 'COMUN\PROGRAME;' + ;
|
||||
gcAppPath + 'COMUN\GRAFICE;' + ;
|
||||
gcAppPath + 'COMUN\RAPOARTE;' + ;
|
||||
gcAppPath + 'COMUN\MENIURI;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\GRIDEXTRAS;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\CTL32;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\HPDF;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\HPDF\REPORTOUTPUT;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\WEB;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\EXCEL;' + ;
|
||||
ADDBS(SUBSTR(gcAppPath,1,RAT([\],gcAppPath,2)))+[COMUNROA\]
|
||||
SET PATH TO &lcPath ADDITIVE
|
||||
|
||||
DO UILog WITH 'SET PATH OK'
|
||||
|
||||
*----- CLASE -----
|
||||
SET CLASSLIB TO (gcAppPath + "comun\clase\appwiz") ADDITIVE
|
||||
SET CLASSLIB TO GESTIUNI ADDITIVE
|
||||
SET CLASSLIB TO CAUT ADDITIVE
|
||||
SET CLASSLIB TO BAZA ADDITIVE
|
||||
SET CLASSLIB TO comun ADDITIVE
|
||||
SET CLASSLIB TO accessibility.vcx ADDITIVE
|
||||
SET CLASSLIB TO messagebox ADDITIVE
|
||||
SET CLASSLIB TO registry ADDITIVE
|
||||
SET CLASSLIB TO cauta_alfa_forms.vcx ADDITIVE
|
||||
SET CLASSLIB TO DECABAZA ADDITIVE
|
||||
SET CLASSLIB TO onomenclatoare ADDITIVE
|
||||
SET CLASSLIB TO stocuri.vcx ADDITIVE
|
||||
SET CLASSLIB TO rulaje.vcx ADDITIVE
|
||||
SET CLASSLIB TO ointroduceri ADDITIVE
|
||||
SET CLASSLIB TO ointroduceri_web ADDITIVE
|
||||
SET CLASSLIB TO ointroduceri_depozit ADDITIVE
|
||||
SET CLASSLIB TO overificari ADDITIVE
|
||||
SET CLASSLIB TO ferestre_oracle ADDITIVE
|
||||
SET CLASSLIB TO ferestre_cere_date.vcx ADDITIVE
|
||||
SET CLASSLIB TO configurare.vcx ADDITIVE
|
||||
SET CLASSLIB TO serii_numere.vcx ADDITIVE
|
||||
SET CLASSLIB TO omodificari.vcx ADDITIVE
|
||||
SET CLASSLIB TO ocompensari.vcx ADDITIVE
|
||||
SET CLASSLIB TO caut_ora ADDITIVE
|
||||
SET CLASSLIB TO onote_contabile ADDITIVE
|
||||
SET CLASSLIB TO otoolbar ADDITIVE
|
||||
SET CLASSLIB TO bon_fisc ADDITIVE
|
||||
SET CLASSLIB TO onom_articole ADDITIVE
|
||||
SET CLASSLIB TO onom_retete ADDITIVE
|
||||
SET CLASSLIB TO orapoarte ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_gestiuni ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_parametri ADDITIVE
|
||||
SET CLASSLIB TO ONOM_CURS ADDITIVE
|
||||
SET CLASSLIB TO ctl32_statusbar_fals.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_common.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_structs.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_progressbar.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_balloontip.vcx ADDITIVE
|
||||
SET CLASSLIB TO ocriterii.vcx ADDITIVE
|
||||
SET CLASSLIB TO oavize.vcx ADDITIVE
|
||||
SET CLASSLIB TO onomenclatoare2 ADDITIVE
|
||||
SET CLASSLIB TO wwdialogs.vcx ADDITIVE
|
||||
SET CLASSLIB TO oimportxml.vcx ADDITIVE
|
||||
SET CLASSLIB TO excelxml.vcx ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_obinv.vcx ADDITIVE
|
||||
|
||||
DO UILog WITH 'SET CLASSLIB OK'
|
||||
|
||||
*----- PROCEDURI -----
|
||||
SET PROCEDURE TO PROCEDURI
|
||||
*-- mock amessagebox INCARCAT PRIMUL (inaintea oproceduri_comune.prg, care are amessagebox
|
||||
*-- real): in VFP, la nume duplicat de procedura, castiga fisierul cautat PRIMUL in lista.
|
||||
SET PROCEDURE TO "D:\ROA\ROAGEST\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
|
||||
*-- mock caut_valuta INCARCAT PRIMUL, inaintea lui ocautare (care are caut_valuta real).
|
||||
SET PROCEDURE TO "D:\ROA\ROAGEST\COMUN\utile\Teste\achizitie_import\mock_caut_valuta.prg" ADDITIVE
|
||||
SET PROCEDURE TO acces_meniu ADDITIVE
|
||||
SET PROCEDURE TO cauta_alfa ADDITIVE
|
||||
SET PROCEDURE TO pmenu ADDITIVE
|
||||
SET PROCEDURE TO proceduri_comune ADDITIVE
|
||||
SET PROCEDURE TO quitapp ADDITIVE
|
||||
SET PROCEDURE TO init_program ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_listari.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_configurare.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_articole.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_retete.prg ADDITIVE
|
||||
SET PROCEDURE TO orapoarte.prg ADDITIVE
|
||||
SET PROCEDURE TO mesaje ADDITIVE
|
||||
SET PROCEDURE TO oserii_numere.prg ADDITIVE
|
||||
SET PROCEDURE TO oexport.prg ADDITIVE
|
||||
SET PROCEDURE TO wwConfig.prg ADDITIVE
|
||||
SET PROCEDURE TO proceduri_rapoarte.prg ADDITIVE
|
||||
SET PROCEDURE TO OPROCEDURI_CURS.PRG ADDITIVE
|
||||
SET PROCEDURE TO validare.prg ADDITIVE
|
||||
SET PROCEDURE TO GENCURSOR.PRG ADDITIVE
|
||||
SET PROCEDURE TO OPROCEDURI_COMUNE.PRG ADDITIVE
|
||||
SET PROCEDURE TO OINIT_OPTIUNI.PRG ADDITIVE
|
||||
SET PROCEDURE TO updateserver.prg ADDITIVE
|
||||
SET PROCEDURE TO oinainte_de.prg ADDITIVE
|
||||
SET PROCEDURE TO ooperatii_comune.prg ADDITIVE
|
||||
SET PROCEDURE TO Ocompensari.PRG ADDITIVE
|
||||
SET PROCEDURE TO OPROCEDURI_aMS.PRG ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_rulaje ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_stocuri ADDITIVE
|
||||
SET PROCEDURE TO OINTRODUCERI ADDITIVE
|
||||
SET PROCEDURE TO oHeader.prg ADDITIVE
|
||||
SET PROCEDURE TO proceduri_excel.PRG ADDITIVE
|
||||
SET PROCEDURE TO onomenclatoare.PRG ADDITIVE
|
||||
SET PROCEDURE TO osecurity ADDITIVE
|
||||
SET PROCEDURE TO ocautare ADDITIVE
|
||||
SET PROCEDURE TO orefaceri ADDITIVE
|
||||
SET PROCEDURE TO ofacturare_comun.PRG ADDITIVE
|
||||
SET PROCEDURE TO ofacturare_stoc.PRG ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_casademarcat ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_casa_marcat_e500 ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_casa_marcat_mp500 ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_util.prg ADDITIVE
|
||||
SET PROCEDURE TO wwxmlhttp.prg ADDITIVE
|
||||
SET PROCEDURE TO ini.prg ADDITIVE
|
||||
SET PROCEDURE TO odocumente.prg ADDITIVE
|
||||
SET PROCEDURE TO regex.prg ADDITIVE
|
||||
SET PROCEDURE TO wwutils.prg ADDITIVE
|
||||
SET PROCEDURE TO inchidere_k ADDITIVE
|
||||
SET PROCEDURE TO iniacces.prg ADDITIVE
|
||||
SET PROCEDURE TO oupdate.prg ADDITIVE
|
||||
SET PROCEDURE TO procese.prg ADDITIVE
|
||||
SET PROCEDURE TO version.prg ADDITIVE
|
||||
SET PROCEDURE TO xmlaccess.prg ADDITIVE
|
||||
SET PROCEDURE TO xmlparser.prg ADDITIVE
|
||||
SET PROCEDURE TO filebringer.prg ADDITIVE
|
||||
SET PROCEDURE TO wwcodeupdate.prg ADDITIVE
|
||||
SET PROCEDURE TO wwhttp.prg ADDITIVE
|
||||
SET PROCEDURE TO xdate.prg ADDITIVE
|
||||
SET PROCEDURE TO ofacturare.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_obinv.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_facturare.prg ADDITIVE
|
||||
SET PROCEDURE TO email.prg ADDITIVE
|
||||
|
||||
*----- Harness UI reutilizabil (mock-urile sunt incarcate mai sus, primele). -----
|
||||
SET PROCEDURE TO "D:\ROA\ROAGEST\COMUN\utile\Teste\ui_harness.prg" ADDITIVE
|
||||
|
||||
DO UILog WITH 'SET PROCEDURE OK'
|
||||
|
||||
*----- goMockValuta: rezultatul FIX al caut_valuta mock (capcana l - construit INLINE). -----
|
||||
PUBLIC goMockValuta
|
||||
goMockValuta = CREATEOBJECT('Custom')
|
||||
goMockValuta.AddProperty('id_valuta', 1)
|
||||
goMockValuta.AddProperty('nume_val', 'RON')
|
||||
DO UILog WITH 'goMockValuta creat: id_valuta=1 nume_val=RON'
|
||||
|
||||
*----- Globale minimale cerute de definitia clasei / Init -----
|
||||
PUBLIC gnPc, gnPval, gnPcant, gnPpret, gnPPretval, gnPCurs, gnPVal, gnPPretV, gnPPretVal
|
||||
gnPc = 2
|
||||
gnPval = 2
|
||||
gnPVal = 2
|
||||
gnPcant = 3
|
||||
gnPpret = 4
|
||||
gnPPretval = 4
|
||||
gnPPretVal = 4
|
||||
gnPPretV = 4
|
||||
gnPCurs = 4
|
||||
|
||||
PUBLIC gl406, gcS, gnAn, gnLuna, gnIdFirma, gnIdSucursala, gcAcces, gcFirma
|
||||
gl406 = .T.
|
||||
gcS = 'CONTAFIN'
|
||||
gnAn = YEAR(DATE())
|
||||
gnLuna = MONTH(DATE())
|
||||
gnIdFirma = 110
|
||||
gnIdSucursala = 110
|
||||
gcAcces = "1;2;3;4;5;6;7;8;"
|
||||
gcFirma = gcS
|
||||
|
||||
PUBLIC nror(65000)
|
||||
|
||||
*----- goExecutor dummy: creeaza cursoarele cerute fara Oracle real -----
|
||||
PUBLIC goExecutor
|
||||
goExecutor = CREATEOBJECT('dummyexecutor')
|
||||
DO UILog WITH 'goExecutor dummy creat'
|
||||
|
||||
*----- goApp dummy: _frm_base.Init cere goApp.ReadIni (FONTSIZEPLUS/FONTNAME) -----
|
||||
PUBLIC goApp
|
||||
goApp = CREATEOBJECT('dummyapp')
|
||||
DO UILog WITH 'goApp dummy creat'
|
||||
|
||||
*----- poAct dummy: obiectul act (curs valutar in_valuta) -----
|
||||
PUBLIC poAct
|
||||
poAct = CREATEOBJECT('Custom')
|
||||
poAct.AddProperty('nume_val', 'USD')
|
||||
poAct.AddProperty('curs', 4.56)
|
||||
poAct.AddProperty('proc_tva', 1.21)
|
||||
poAct.AddProperty('nnir', 0)
|
||||
poAct.AddProperty('dataact', DATE())
|
||||
|
||||
*----- jtva_coloane2: minimal (nu e relevant pentru bugul de valuta, dar cerut de Init). -----
|
||||
IF USED('jtva_coloane2')
|
||||
USE IN ('jtva_coloane2')
|
||||
ENDIF
|
||||
CREATE CURSOR jtva_coloane2 (ordine N(8), id_jtva_coloana N(14), denumire C(100), ;
|
||||
jc N(1), jv N(1), afisat N(1), coloana_jc C(20), coloana_jv C(20), ;
|
||||
cota_tva N(6,2), id_tva N(14))
|
||||
INSERT INTO jtva_coloane2 VALUES (0, 0, '', 0, 0, 1, '', '', 0, 0)
|
||||
INSERT INTO jtva_coloane2 VALUES (1, 208, 'ACH. INT. 21%', 1, 0, 1, 'RO21B', 'RO21T', 21, 209)
|
||||
INSERT INTO jtva_coloane2 VALUES (2, 209, 'TVA ACH. INT. 21%', 1, 0, 1, 'RO21T', '', 21, 0)
|
||||
DO UILog WITH 'jtva_coloane2 creat (minimal)'
|
||||
|
||||
*----- saft_taxtable: minimal. -----
|
||||
IF USED('saft_taxtable')
|
||||
USE IN ('saft_taxtable')
|
||||
ENDIF
|
||||
CREATE CURSOR saft_taxtable (taxname C(250) NULL, typename C(250) NULL, taxcode N(6) NULL, ;
|
||||
taxtype N(3) NULL, descriere C(250) NULL, tip C(100) NULL, descriere_tip C(250) NULL, ;
|
||||
procent_taxa N(7,2) NULL, procent_prorata N(7,2) NULL, inactiv N(1) NULL, tva N(1) NULL, ;
|
||||
wht N(1) NULL, tva_achizitii N(1) NULL, tva_livrari N(1) NULL)
|
||||
INDEX ON taxcode TAG taxcode
|
||||
INSERT INTO saft_taxtable (taxname, taxcode, descriere, procent_taxa, tva, wht, tva_achizitii, tva_livrari) ;
|
||||
VALUES ('', 0, '', 0, 1, 1, 1, 1)
|
||||
DO UILog WITH 'saft_taxtable creat (minimal)'
|
||||
|
||||
*----- introdc: RecordSource Grid1. Document unic (nract=1001) cu 1 rand B + 1 rand T,
|
||||
* in valuta USD (in_valuta=1, id_valuta=2, nume_val='USD', curs=4.56, participa_valuta=.T.) -----
|
||||
IF USED('introdc')
|
||||
USE IN ('introdc')
|
||||
ENDIF
|
||||
CREATE CURSOR introdc ( ;
|
||||
id_note N(14), explicatia C(100), scd C(10), ascd C(20), scc C(10), ascc C(20), ;
|
||||
cu_tva N(1), id_set N(14), ordine N(8), in_valuta N(1), id_jtva_coloana N(14) NULL, ;
|
||||
ptva N(6,2), explicatie_tva C(50), tipjurnal C(2), taxcode N(6), paymentcode C(9), ;
|
||||
suma N(18,4), suma_val N(18,4), id_partd N(14), id_partc N(14), partd C(100), partc C(100), ;
|
||||
id_fact N(14), id_factd N(14), id_factc N(14), pereched N(14), perechec N(14), ;
|
||||
nract N(14), serie_act C(10), explicatia4 C(50), explicatia5 C(50), participa_valuta L, ;
|
||||
id_valuta N(14), curs N(14,4), nume_val C(10), dataact D, fdoc C(50), id_fdoc N(14), ;
|
||||
se_scrie N(1), tva_incasare N(1), doc_color N(10), doc_label C(10), tip_rand C(1), ;
|
||||
doc_key C(80), nr_doc N(8), suma_doc N(18,4), suma_doc_val N(18,4), mod_manual N(1), ;
|
||||
scd_orig C(20), ascd_orig C(20))
|
||||
|
||||
*-- randul B (baza): suma 1000 lei, suma_val 219.30 USD (curs 4.56)
|
||||
INSERT INTO introdc (tip_rand, scd, scc, ascc, suma, suma_val, id_jtva_coloana, ptva, explicatie_tva, ;
|
||||
in_valuta, participa_valuta, id_valuta, curs, nume_val, nr_doc, nract, serie_act, fdoc, partc, explicatia, ;
|
||||
cu_tva, dataact, suma_doc, suma_doc_val, doc_key) ;
|
||||
VALUES ('B','371','401','FURN01', 1000, 219.30, 208, 21, 'ACH. INT. 21%', ;
|
||||
1, .T., 2, 4.56, 'USD', 1, 1001, 'A', 'Factura', 'FURNIZOR ABC SRL', 'Marfa achizitionata valuta', ;
|
||||
1, DATE(), 1210, 265.35, 'A|1001|0|0')
|
||||
*-- randul T (TVA pereche): suma 210 lei, suma_val 46.05 USD
|
||||
INSERT INTO introdc (tip_rand, scd, scc, ascc, suma, suma_val, id_jtva_coloana, ptva, explicatie_tva, ;
|
||||
in_valuta, participa_valuta, id_valuta, curs, nume_val, nr_doc, nract, serie_act, fdoc, partc, explicatia, ;
|
||||
cu_tva, dataact, suma_doc, suma_doc_val, doc_key) ;
|
||||
VALUES ('T','4426','401','FURN01', 210, 46.05, 209, 21, 'TVA ACH. INT. 21%', ;
|
||||
1, .T., 2, 4.56, 'USD', 1, 1001, 'A', 'Factura', 'FURNIZOR ABC SRL', 'TVA deductibil valuta', ;
|
||||
1, DATE(), 1210, 265.35, 'A|1001|0|0')
|
||||
GO TOP IN introdc
|
||||
DO UILog WITH 'introdc populat (' + TRANSFORM(RECCOUNT('introdc')) + ' randuri, USD/curs 4.56)'
|
||||
|
||||
*----- rul_temp: RecordSource GridArt. Pre-populat, ca sa nu-l recreeze Init din Oracle. -----
|
||||
IF USED('rul_temp')
|
||||
USE IN ('rul_temp')
|
||||
ENDIF
|
||||
CREATE CURSOR rul_temp (denumire C(100), codmat C(30), cant N(14,3), ;
|
||||
pret_val N(18,4), pretd N(18,4), pret N(18,4), pret_lei N(18,4), ;
|
||||
cont C(10), acont C(20), serie C(30), lot C(30), adata_expirare C(10), ;
|
||||
proc_disc N(6,2), cota_tva N(6,2))
|
||||
INSERT INTO rul_temp (denumire, codmat, cant, pret_val, pretd, pret, pret_lei, ;
|
||||
cont, acont, serie, lot, adata_expirare, proc_disc, cota_tva) ;
|
||||
VALUES ('Laptop Dell Latitude', 'ART001', 1, 219.30, 219.30, 1000, 1000, ;
|
||||
'371', '01', 'SN-LAP-001', 'L001', '', 0, 21)
|
||||
GO TOP IN rul_temp
|
||||
DO UILog WITH 'rul_temp populat (' + TRANSFORM(RECCOUNT('rul_temp')) + ' articole)'
|
||||
|
||||
*----- Desktop VFP vizibil, maximizat -----
|
||||
_SCREEN.Visible = .T.
|
||||
_SCREEN.WindowState = 2
|
||||
_SCREEN.Caption = 'TEST REPRO valuta dblclick'
|
||||
|
||||
DO UILog WITH 'mediu pregatit, CREATEOBJECT(import_nota, .T.)'
|
||||
|
||||
SELECT introdc
|
||||
PUBLIC goObj
|
||||
goObj = CREATEOBJECT('IMPORT_nota', .T.)
|
||||
|
||||
IF VARTYPE(goObj) <> 'O'
|
||||
DO UILog WITH 'FAIL: CREATEOBJECT a returnat ' + TRANSFORM(goObj)
|
||||
DO HarnessDone WITH 'done-error'
|
||||
QUIT
|
||||
ENDIF
|
||||
goObj.oact = poAct
|
||||
DO UILog WITH 'PASS: instantiere OK, afisez formularul'
|
||||
|
||||
goObj.WindowType = 0
|
||||
goObj.Visible = .T.
|
||||
goObj.Show()
|
||||
goObj.WindowState = 2
|
||||
DOEVENTS FORCE
|
||||
|
||||
*========================= PAS 0: formular afisat =========================
|
||||
DO HarnessStep WITH 0, 'Formular afisat: introdc=' + TRANSFORM(RECCOUNT('introdc')) + ' randuri, nume_val B=' + ALLTRIM(introdc.nume_val)
|
||||
|
||||
*========================= PAS A: apel PROGRAMATIC, FARA focus real pe celula =========================
|
||||
*-- Pozitionez pe randul B, apelez direct handler-ul DblClick FARA sa fi dat SetFocus
|
||||
*-- celulei/Text1-ului (simuleaza apelul din testele vechi, care treceau).
|
||||
SELECT introdc
|
||||
GO TOP
|
||||
LOCATE FOR tip_rand == 'B'
|
||||
DO UILog WITH 'PAS A: pozitionat pe randul B, nume_val INAINTE=' + ALLTRIM(NVL(introdc.nume_val,'?')) + ' (astept USD)'
|
||||
|
||||
LOCAL lcActivPreA
|
||||
lcActivPreA = IIF(TYPE('_SCREEN.ActiveForm.ActiveControl') = 'O', _SCREEN.ActiveForm.ActiveControl.Name, '?')
|
||||
DO UILog WITH 'PAS A: control activ INAINTE de DblClick = ' + lcActivPreA
|
||||
|
||||
goObj.grid1.cValuta.text1.DblClick()
|
||||
DOEVENTS FORCE
|
||||
|
||||
*-- mut focusul pe alt control, ca la parasirea normala a celulei
|
||||
goObj.grid1.cCurs.text1.SetFocus()
|
||||
DOEVENTS FORCE
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR tip_rand == 'B'
|
||||
LOCAL lcNumeValA
|
||||
lcNumeValA = ALLTRIM(NVL(introdc.nume_val,'?'))
|
||||
IF lcNumeValA == 'RON'
|
||||
DO UILog WITH 'PAS A PASS (asteptat): programatic fara focus real => nume_val=' + lcNumeValA + ' (Replace ramane, nu e suprascris)'
|
||||
ELSE
|
||||
DO UILog WITH 'PAS A NEASTEPTAT: nume_val=' + lcNumeValA + ' (asteptam RON)'
|
||||
ENDIF
|
||||
DO HarnessStep WITH 1, 'PAS A (programatic): nume_val=' + lcNumeValA
|
||||
|
||||
*========================= PAS B: cu FOCUS REAL pe celula (reproducerea bugului) =========================
|
||||
*-- Resetez randul B la USD/id_valuta=2 (setup, nu parte din pasul testat)
|
||||
SELECT introdc
|
||||
LOCATE FOR tip_rand == 'B'
|
||||
REPLACE id_valuta WITH 2, nume_val WITH 'USD', curs WITH 4.56
|
||||
goObj.grid1.Refresh()
|
||||
DOEVENTS FORCE
|
||||
DO UILog WITH 'PAS B: reset randul B la USD, nume_val=' + ALLTRIM(introdc.nume_val)
|
||||
|
||||
*-- activez celula coloanei cValuta pe randul B: SetFocus pe grid, apoi pe Text1-ul coloanei
|
||||
goObj.grid1.SetFocus()
|
||||
DOEVENTS FORCE
|
||||
goObj.grid1.cValuta.text1.SetFocus()
|
||||
DOEVENTS FORCE
|
||||
|
||||
LOCAL lcActivB, lcValueActivB
|
||||
lcActivB = IIF(TYPE('_SCREEN.ActiveForm.ActiveControl') = 'O', _SCREEN.ActiveForm.ActiveControl.Name, '?')
|
||||
*-- This.Value al textbox-ului activ (cValuta.Text1) - starea INAINTE de DblClick
|
||||
lcValueActivB = ALLTRIM(NVL(goObj.grid1.cValuta.text1.Value, '?'))
|
||||
DO UILog WITH 'PAS B: control activ dupa SetFocus = ' + lcActivB + '; Text1.Value INAINTE de DblClick = [' + lcValueActivB + ']'
|
||||
|
||||
*-- echivalentul handler-ului de dublu-click, ACUM cu celula avand focus real
|
||||
goObj.grid1.cValuta.text1.DblClick()
|
||||
DOEVENTS FORCE
|
||||
|
||||
LOCAL lcValueActivB2
|
||||
lcValueActivB2 = ALLTRIM(NVL(goObj.grid1.cValuta.text1.Value, '?'))
|
||||
DO UILog WITH 'PAS B: Text1.Value DUPA DblClick (inainte de mutarea focusului) = [' + lcValueActivB2 + ']'
|
||||
|
||||
*-- mut focusul pe ALT control/coloana - aici s-ar declansa write-back-ul controlului activ
|
||||
goObj.grid1.cCurs.text1.SetFocus()
|
||||
DOEVENTS FORCE
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR tip_rand == 'B'
|
||||
LOCAL lcNumeValB, lcNumeValT
|
||||
lcNumeValB = ALLTRIM(NVL(introdc.nume_val,'?'))
|
||||
LOCATE FOR tip_rand == 'T'
|
||||
lcNumeValT = ALLTRIM(NVL(introdc.nume_val,'?'))
|
||||
|
||||
IF lcNumeValB == 'USD'
|
||||
DO UILog WITH 'PAS B: BUG REPRODUS - dupa DblClick cu focus real + mutare focus, randul B a revenit la nume_val=' + lcNumeValB + ' (randul T=' + lcNumeValT + '). Mecanism: write-back-ul controlului activ (Text1) suprascrie Replace-ul cu valoarea veche.'
|
||||
ELSE
|
||||
DO UILog WITH 'PAS B: bugul NU s-a reprodus asa - nume_val randul B=' + lcNumeValB + ' (randul T=' + lcNumeValT + '). Stare: Text1.Value inainte=[' + lcValueActivB + '] dupa DblClick=[' + lcValueActivB2 + '] control activ=[' + lcActivB + ']'
|
||||
|
||||
*-- varianta 2: dupa DblClick, mut pointerul pe ALT RAND din grid (scroll) inainte de verificare
|
||||
DO UILog WITH 'PAS B varianta 2: reset randul B la USD, reincerc cu mutare pe alt RAND dupa DblClick'
|
||||
SELECT introdc
|
||||
LOCATE FOR tip_rand == 'B'
|
||||
REPLACE id_valuta WITH 2, nume_val WITH 'USD', curs WITH 4.56
|
||||
goObj.grid1.Refresh()
|
||||
DOEVENTS FORCE
|
||||
|
||||
goObj.grid1.SetFocus()
|
||||
DOEVENTS FORCE
|
||||
goObj.grid1.cValuta.text1.SetFocus()
|
||||
DOEVENTS FORCE
|
||||
LOCAL lcValueActivB3
|
||||
lcValueActivB3 = ALLTRIM(NVL(goObj.grid1.cValuta.text1.Value, '?'))
|
||||
goObj.grid1.cValuta.text1.DblClick()
|
||||
DOEVENTS FORCE
|
||||
LOCAL lcValueActivB4
|
||||
lcValueActivB4 = ALLTRIM(NVL(goObj.grid1.cValuta.text1.Value, '?'))
|
||||
|
||||
*-- muta pointerul grid-ului pe randul urmator (T), simuland navigare cu sageata/click alt rand
|
||||
SELECT introdc
|
||||
LOCATE FOR tip_rand == 'T'
|
||||
goObj.grid1.Refresh()
|
||||
DOEVENTS FORCE
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR tip_rand == 'B'
|
||||
LOCAL lcNumeValB2
|
||||
lcNumeValB2 = ALLTRIM(NVL(introdc.nume_val,'?'))
|
||||
IF lcNumeValB2 == 'USD'
|
||||
DO UILog WITH 'PAS B varianta 2: BUG REPRODUS - dupa DblClick + mutare pe alt rand din grid, randul B=' + lcNumeValB2
|
||||
ELSE
|
||||
DO UILog WITH 'PAS B varianta 2: NU s-a reprodus - randul B=' + lcNumeValB2 + '. Text1.Value inainte=[' + lcValueActivB3 + '] dupa DblClick=[' + lcValueActivB4 + ']'
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
DO HarnessStep WITH 2, 'PAS B (focus real): randB=' + lcNumeValB + ' randT=' + lcNumeValT
|
||||
|
||||
DO UILog WITH 'GATA - toate pasii executati'
|
||||
DO HarnessDone WITH 'done'
|
||||
|
||||
CATCH TO loExc
|
||||
DO UILog WITH 'CATCH ErrorNo=' + TRANSFORM(loExc.ErrorNo) + ' Message=' + loExc.Message + ' Proc=' + loExc.Procedure + ' Line=' + TRANSFORM(loExc.LineNo) + ' [' + loExc.LineContents + ']'
|
||||
DO HarnessDone WITH 'done-error'
|
||||
ENDTRY
|
||||
|
||||
QUIT
|
||||
|
||||
*==================================================================================
|
||||
PROCEDURE UIErr
|
||||
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
||||
DO UILog WITH 'ON ERROR ' + TRANSFORM(tnErr) + ' [' + tcProg + ':' + TRANSFORM(tnLine) + '] ' + tcMsg
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE UILog
|
||||
LPARAMETERS tcMsg
|
||||
LOCAL lcL
|
||||
lcL = FILETOSTR(gcUILog)
|
||||
STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcUILog)
|
||||
ENDPROC
|
||||
|
||||
DEFINE CLASS dummyapp AS Custom
|
||||
PROCEDURE ReadIni
|
||||
LPARAMETERS tcSection, tcKey
|
||||
RETURN ''
|
||||
ENDPROC
|
||||
PROCEDURE WriteIni
|
||||
LPARAMETERS tcSection, tcKey, tcValue
|
||||
RETURN .T.
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
|
||||
DEFINE CLASS dummyexecutor AS Custom
|
||||
cEroare = ''
|
||||
|
||||
PROCEDURE oExecute
|
||||
LPARAMETERS tcSql, tcCursor
|
||||
IF USED(m.tcCursor)
|
||||
USE IN (m.tcCursor)
|
||||
ENDIF
|
||||
IF 'VJTVA_COLOANE' $ UPPER(m.tcSql)
|
||||
DO CreeazaJtvaColoaneView WITH m.tcCursor
|
||||
RETURN 1
|
||||
ENDIF
|
||||
CREATE CURSOR (m.tcCursor) (id_temp N(1))
|
||||
RETURN 1
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE oExecuta
|
||||
LPARAMETERS tcSql, tcCursor
|
||||
IF !EMPTY(m.tcCursor)
|
||||
IF USED(m.tcCursor)
|
||||
USE IN (m.tcCursor)
|
||||
ENDIF
|
||||
IF UPPER(m.tcCursor) == 'CJTVACOL4427'
|
||||
CREATE CURSOR (m.tcCursor) (id_jtva_coloana N(14))
|
||||
ELSE
|
||||
CREATE CURSOR (m.tcCursor) (id_temp N(1))
|
||||
ENDIF
|
||||
ENDIF
|
||||
RETURN .T.
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE oSelect2Value
|
||||
LPARAMETERS tcSql, toValue
|
||||
toValue = ''
|
||||
RETURN 1
|
||||
ENDPROC
|
||||
PROCEDURE oReset
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
|
||||
PROCEDURE CreeazaJtvaColoaneView
|
||||
LPARAMETERS tcCursor
|
||||
IF USED(m.tcCursor)
|
||||
USE IN (m.tcCursor)
|
||||
ENDIF
|
||||
CREATE CURSOR (m.tcCursor) (id_jtva_coloana N(14), denumire C(100), jc N(1), jv N(1), ;
|
||||
coloana_jc C(20), coloana_jv C(20), cota_tva N(6,2), id_tva N(14) NULL, afisat N(1), ;
|
||||
id_jtva_ex N(14) NULL, id_jtva_neex N(14) NULL, ordine N(8), ;
|
||||
taxcode N(6) NULL, taxcode_neexigibil N(6) NULL, taxcode_n50 N(6) NULL, ;
|
||||
taxcode_n50_tvai N(6) NULL, taxcode_n100 N(6) NULL, taxcode_regularizare N(6) NULL, taxcode_tvai N(6) NULL)
|
||||
INSERT INTO (m.tcCursor) (id_jtva_coloana, denumire, jc, jv, afisat, ordine, cota_tva) VALUES (0, '', 0, 0, 1, 0, 0)
|
||||
INSERT INTO (m.tcCursor) (id_jtva_coloana, denumire, jc, jv, coloana_jc, cota_tva, id_tva, afisat, ordine, taxcode) ;
|
||||
VALUES (208, 'ACH. INT. 21%', 1, 0, 'RO21B', 21, 209, 1, 1, 301104)
|
||||
ENDPROC
|
||||
10
utile/Teste/achizitie_import/test_repro_valuta_dblclick.ps1
Normal file
10
utile/Teste/achizitie_import/test_repro_valuta_dblclick.ps1
Normal file
@@ -0,0 +1,10 @@
|
||||
# test_repro_valuta_dblclick.ps1 - wrapper subtire peste harness-ul generic vfp_ui_harness.ps1.
|
||||
# Reproduce bugul valuta "ramane USD" dupa DblClick cu focus real pe celula cValuta.
|
||||
# Rulare: powershell -ExecutionPolicy Bypass -File test_repro_valuta_dblclick.ps1
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$Teste = $PSScriptRoot
|
||||
& (Join-Path (Split-Path $Teste -Parent) 'vfp_ui_harness.ps1') `
|
||||
-TestPrg (Join-Path $Teste 'test_repro_valuta_dblclick.prg') `
|
||||
-Steps @('formular_afisat','pas_A_programatic','pas_B_focus_real') `
|
||||
-SyncDir (Join-Path $Teste 'uisync_valuta') `
|
||||
-ShotsDir (Join-Path $Teste 'screenshots_valuta')
|
||||
762
utile/Teste/achizitie_import/test_valuta_dvi_usd.prg
Normal file
762
utile/Teste/achizitie_import/test_valuta_dvi_usd.prg
Normal file
@@ -0,0 +1,762 @@
|
||||
* test_valuta_dvi_usd.prg
|
||||
* Scenariu raportat de Marius (runda7, COMUN\clase\ointroduceri.vcx, clasa import_nota):
|
||||
* document secundar intr-o ALTA valuta decat principala trebuie convertit prin lei
|
||||
* (suma/This.oact.Curs), nu adunat direct la baza in valuta principalei.
|
||||
* Doc1 (principal) FACTURA 15000 RAJA, 1000 EUR curs 5.2300 (5230 lei), in_valuta,
|
||||
* participa la pret, TVA pe DVI ('D'): DVI 101 BIROUL VAMAL, tva 1098.30 lei / 210 EUR,
|
||||
* explicatie ACH. IMP. 21%.
|
||||
* Doc2 (secundar) DVI 101 BIROUL VAMAL, 100 USD curs 4.0000 (400 lei), in_valuta (USD -
|
||||
* id_valuta DIFERIT de EUR), participa la pretul in valuta, TVA normal ('F') proprie
|
||||
* 84 lei / 21 USD (autocalculata din sablon cu_tva).
|
||||
* Articol: A8/371 (mock_cauta_nom_articole, cont 371 - substituie A-TEST din cerinta,
|
||||
* acelasi cont), cantitate 1, pret_val 1000 (1000 EUR).
|
||||
* Asteptat dupa fix (procent_val/nbaza_val NU mai aduna suma_val a doc2 direct la baza EUR,
|
||||
* ci Round(suma/curs,2)=76.48 EUR-echivalent):
|
||||
* procent_val ~= 107.648, nbaza_val ~= 1076.48, rul_temp.pretd ~= 1076.48 / pret ~= 5629.99,
|
||||
* S-ul (371) al doc2 explicatia5 ~= '7.65', randul D (diferenta) ~= 0, ntva_val ~= 226.06.
|
||||
*
|
||||
* Rulare:
|
||||
* powershell -ExecutionPolicy Bypass -File test_valuta_dvi_usd.ps1
|
||||
|
||||
SET SAFETY OFF
|
||||
SET TALK OFF
|
||||
SET DELETED ON
|
||||
SET EXACT ON
|
||||
SET CENTURY ON
|
||||
SET DATE DMY
|
||||
SET DECIMALS TO 4
|
||||
SET NULLDISPLAY TO ''
|
||||
CLOSE DATABASES
|
||||
|
||||
PUBLIC gcUILog, gcSyncDir
|
||||
gcUILog = "D:\ROA\ROAGEST\COMUN\utile\Teste\achizitie_import\test_valuta_dvi_usd_log.txt"
|
||||
gcSyncDir = "D:\ROA\ROAGEST\COMUN\utile\Teste\achizitie_import\uisync_valuta_usd\"
|
||||
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13)+CHR(10), gcUILog)
|
||||
|
||||
ON ERROR DO DcErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
||||
ON SHUTDOWN QUIT
|
||||
|
||||
TRY
|
||||
LOCAL gcAppPath, lcPath
|
||||
gcAppPath = "D:\ROA\ROAGEST\"
|
||||
SET DEFAULT TO (gcAppPath)
|
||||
|
||||
lcPath = gcAppPath + 'Date;' + gcAppPath + 'Include;' + gcAppPath + 'FERESTRE;' + ;
|
||||
gcAppPath + 'GRAFICE;' + gcAppPath + 'CLASE;' + gcAppPath + 'MENIURI;' + ;
|
||||
gcAppPath + 'PROGRAME;' + gcAppPath + 'RAPOARTE;' + gcAppPath + 'COMUN;' + ;
|
||||
gcAppPath + 'COMUN\CLASE;' + gcAppPath + 'COMUN\FERESTRE;' + gcAppPath + 'COMUN\PROGRAME;' + ;
|
||||
gcAppPath + 'COMUN\GRAFICE;' + gcAppPath + 'COMUN\RAPOARTE;' + gcAppPath + 'COMUN\MENIURI;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\GRIDEXTRAS;' + gcAppPath + 'COMUN\UTILE\CTL32;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\HPDF;' + gcAppPath + 'COMUN\UTILE\HPDF\REPORTOUTPUT;' + ;
|
||||
gcAppPath + 'COMUN\UTILE\WEB;' + gcAppPath + 'COMUN\UTILE\EXCEL;' + ;
|
||||
ADDBS(SUBSTR(gcAppPath,1,RAT([\],gcAppPath,2)))+[COMUNROA\]
|
||||
SET PATH TO &lcPath ADDITIVE
|
||||
DO DcLog WITH 'SET PATH OK'
|
||||
|
||||
*----- CLASE -----
|
||||
SET CLASSLIB TO (gcAppPath + "comun\clase\appwiz") ADDITIVE
|
||||
SET CLASSLIB TO GESTIUNI ADDITIVE
|
||||
SET CLASSLIB TO CAUT ADDITIVE
|
||||
SET CLASSLIB TO BAZA ADDITIVE
|
||||
SET CLASSLIB TO comun ADDITIVE
|
||||
SET CLASSLIB TO accessibility.vcx ADDITIVE
|
||||
SET CLASSLIB TO messagebox ADDITIVE
|
||||
SET CLASSLIB TO registry ADDITIVE
|
||||
SET CLASSLIB TO cauta_alfa_forms.vcx ADDITIVE
|
||||
SET CLASSLIB TO DECABAZA ADDITIVE
|
||||
SET CLASSLIB TO onomenclatoare ADDITIVE
|
||||
SET CLASSLIB TO stocuri.vcx ADDITIVE
|
||||
SET CLASSLIB TO rulaje.vcx ADDITIVE
|
||||
SET CLASSLIB TO ointroduceri ADDITIVE
|
||||
SET CLASSLIB TO ointroduceri_web ADDITIVE
|
||||
SET CLASSLIB TO ointroduceri_depozit ADDITIVE
|
||||
SET CLASSLIB TO overificari ADDITIVE
|
||||
SET CLASSLIB TO ferestre_oracle ADDITIVE
|
||||
SET CLASSLIB TO ferestre_cere_date.vcx ADDITIVE
|
||||
SET CLASSLIB TO configurare.vcx ADDITIVE
|
||||
SET CLASSLIB TO serii_numere.vcx ADDITIVE
|
||||
SET CLASSLIB TO omodificari.vcx ADDITIVE
|
||||
SET CLASSLIB TO ocompensari.vcx ADDITIVE
|
||||
SET CLASSLIB TO caut_ora ADDITIVE
|
||||
SET CLASSLIB TO onote_contabile ADDITIVE
|
||||
SET CLASSLIB TO otoolbar ADDITIVE
|
||||
SET CLASSLIB TO bon_fisc ADDITIVE
|
||||
SET CLASSLIB TO onom_articole ADDITIVE
|
||||
SET CLASSLIB TO onom_retete ADDITIVE
|
||||
SET CLASSLIB TO orapoarte ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_gestiuni ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_parametri ADDITIVE
|
||||
SET CLASSLIB TO ONOM_CURS ADDITIVE
|
||||
SET CLASSLIB TO ctl32_statusbar_fals.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_common.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_structs.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_progressbar.vcx ADDITIVE
|
||||
SET CLASSLIB TO ctl32_balloontip.vcx ADDITIVE
|
||||
SET CLASSLIB TO ocriterii.vcx ADDITIVE
|
||||
SET CLASSLIB TO oavize.vcx ADDITIVE
|
||||
SET CLASSLIB TO onomenclatoare2 ADDITIVE
|
||||
SET CLASSLIB TO wwdialogs.vcx ADDITIVE
|
||||
SET CLASSLIB TO oimportxml.vcx ADDITIVE
|
||||
SET CLASSLIB TO excelxml.vcx ADDITIVE
|
||||
SET CLASSLIB TO orapoarte_obinv.vcx ADDITIVE
|
||||
DO DcLog WITH 'SET CLASSLIB OK'
|
||||
|
||||
*----- PROCEDURI (mock-uri PRIMELE, ui_harness la final) -----
|
||||
SET PROCEDURE TO PROCEDURI
|
||||
SET PROCEDURE TO "D:\ROA\ROAGEST\COMUN\utile\Teste\mock_amessagebox.prg" ADDITIVE
|
||||
SET PROCEDURE TO "D:\ROA\ROAGEST\COMUN\utile\Teste\mock_cauta_nom_articole.prg" ADDITIVE
|
||||
SET PROCEDURE TO "D:\ROA\ROAGEST\COMUN\utile\Teste\achizitie_import\mock_caut_valuta.prg" ADDITIVE
|
||||
SET PROCEDURE TO acces_meniu ADDITIVE
|
||||
SET PROCEDURE TO cauta_alfa ADDITIVE
|
||||
SET PROCEDURE TO pmenu ADDITIVE
|
||||
SET PROCEDURE TO proceduri_comune ADDITIVE
|
||||
SET PROCEDURE TO quitapp ADDITIVE
|
||||
SET PROCEDURE TO init_program ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_listari.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_configurare.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_articole.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_retete.prg ADDITIVE
|
||||
SET PROCEDURE TO orapoarte.prg ADDITIVE
|
||||
SET PROCEDURE TO mesaje ADDITIVE
|
||||
SET PROCEDURE TO oserii_numere.prg ADDITIVE
|
||||
SET PROCEDURE TO oexport.prg ADDITIVE
|
||||
SET PROCEDURE TO wwConfig.prg ADDITIVE
|
||||
SET PROCEDURE TO proceduri_rapoarte.prg ADDITIVE
|
||||
SET PROCEDURE TO OPROCEDURI_CURS.PRG ADDITIVE
|
||||
SET PROCEDURE TO validare.prg ADDITIVE
|
||||
SET PROCEDURE TO GENCURSOR.PRG ADDITIVE
|
||||
SET PROCEDURE TO OPROCEDURI_COMUNE.PRG ADDITIVE
|
||||
SET PROCEDURE TO OINIT_OPTIUNI.PRG ADDITIVE
|
||||
SET PROCEDURE TO updateserver.prg ADDITIVE
|
||||
SET PROCEDURE TO oinainte_de.prg ADDITIVE
|
||||
SET PROCEDURE TO ooperatii_comune.prg ADDITIVE
|
||||
SET PROCEDURE TO Ocompensari.PRG ADDITIVE
|
||||
SET PROCEDURE TO OPROCEDURI_aMS.PRG ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_rulaje ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_stocuri ADDITIVE
|
||||
SET PROCEDURE TO OINTRODUCERI ADDITIVE
|
||||
SET PROCEDURE TO oHeader.prg ADDITIVE
|
||||
SET PROCEDURE TO proceduri_excel.PRG ADDITIVE
|
||||
SET PROCEDURE TO onomenclatoare.PRG ADDITIVE
|
||||
SET PROCEDURE TO osecurity ADDITIVE
|
||||
SET PROCEDURE TO ocautare ADDITIVE
|
||||
SET PROCEDURE TO orefaceri ADDITIVE
|
||||
SET PROCEDURE TO ofacturare_comun.PRG ADDITIVE
|
||||
SET PROCEDURE TO ofacturare_stoc.PRG ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_casademarcat ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_casa_marcat_e500 ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_casa_marcat_mp500 ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_util.prg ADDITIVE
|
||||
SET PROCEDURE TO wwxmlhttp.prg ADDITIVE
|
||||
SET PROCEDURE TO ini.prg ADDITIVE
|
||||
SET PROCEDURE TO odocumente.prg ADDITIVE
|
||||
SET PROCEDURE TO regex.prg ADDITIVE
|
||||
SET PROCEDURE TO wwutils.prg ADDITIVE
|
||||
SET PROCEDURE TO inchidere_k ADDITIVE
|
||||
SET PROCEDURE TO iniacces.prg ADDITIVE
|
||||
SET PROCEDURE TO oupdate.prg ADDITIVE
|
||||
SET PROCEDURE TO procese.prg ADDITIVE
|
||||
SET PROCEDURE TO version.prg ADDITIVE
|
||||
SET PROCEDURE TO xmlaccess.prg ADDITIVE
|
||||
SET PROCEDURE TO xmlparser.prg ADDITIVE
|
||||
SET PROCEDURE TO filebringer.prg ADDITIVE
|
||||
SET PROCEDURE TO wwcodeupdate.prg ADDITIVE
|
||||
SET PROCEDURE TO wwhttp.prg ADDITIVE
|
||||
SET PROCEDURE TO xdate.prg ADDITIVE
|
||||
SET PROCEDURE TO ofacturare.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_obinv.prg ADDITIVE
|
||||
SET PROCEDURE TO oproceduri_facturare.prg ADDITIVE
|
||||
SET PROCEDURE TO email.prg ADDITIVE
|
||||
SET PROCEDURE TO "D:\ROA\ROAGEST\COMUN\utile\Teste\ui_harness.prg" ADDITIVE
|
||||
DO DcLog WITH 'SET PROCEDURE OK'
|
||||
|
||||
*----- goMockValuta: rezultatul FIX al caut_valuta mock (capcana l - construit INLINE);
|
||||
* implicit EUR (moneda documentului principal) - caut_valuta nu e invocat direct in
|
||||
* fluxul acestui test (id_valuta/curs se seteaza direct pe dialog, ca in AdaugaDoc*),
|
||||
* dar mock-ul e incarcat pentru orice apel intern neasteptat. -----
|
||||
PUBLIC goMockValuta
|
||||
goMockValuta = CREATEOBJECT('Custom')
|
||||
goMockValuta.AddProperty('id_valuta', 978)
|
||||
goMockValuta.AddProperty('nume_val', 'EUR')
|
||||
|
||||
*----- Globale -----
|
||||
PUBLIC gnPc, gnPval, gnPcant, gnPpret, gnPPretval, gnPCurs, gnPVal, gnPPretV, gnPPretVal
|
||||
STORE 2 TO gnPc, gnPval, gnPVal
|
||||
gnPcant = 3
|
||||
STORE 4 TO gnPpret, gnPPretval, gnPPretVal, gnPPretV, gnPCurs
|
||||
PUBLIC gl406, gcS, gnAn, gnLuna, gnIdFirma, gnIdSucursala, gcAcces, gcFirma
|
||||
gl406 = .T.
|
||||
gcS = 'CONTAFIN'
|
||||
gnAn = YEAR(DATE())
|
||||
gnLuna = MONTH(DATE())
|
||||
gnIdFirma = 110
|
||||
gnIdSucursala = 110
|
||||
gcAcces = "1;2;3;4;5;6;7;8;"
|
||||
gcFirma = gcS
|
||||
PUBLIC nror(65000)
|
||||
|
||||
PUBLIC gnButon
|
||||
STORE 2 TO gnButon
|
||||
PUBLIC gcMockArtCodmat, gcMockAcontCrt
|
||||
gcMockArtCodmat = ''
|
||||
gcMockAcontCrt = ''
|
||||
PUBLIC gnMockRaspuns
|
||||
gnMockRaspuns = 6
|
||||
|
||||
PUBLIC goExecutor, goApp
|
||||
goExecutor = CREATEOBJECT('dummyexecutor')
|
||||
goApp = CREATEOBJECT('dummyapp')
|
||||
|
||||
*----- poAct: antetul notei (moneda principala EUR, curs 5.23); dialogul mosteneste din el la Init -----
|
||||
PUBLIC poAct
|
||||
poAct = CREATEOBJECT('Custom')
|
||||
poAct.AddProperty('nume_val', 'EUR')
|
||||
poAct.AddProperty('curs', 5.23)
|
||||
poAct.AddProperty('proc_tva', 1.21)
|
||||
poAct.AddProperty('nnir', 0)
|
||||
poAct.AddProperty('id_valuta', 978)
|
||||
poAct.AddProperty('id_fdoc', 1)
|
||||
poAct.AddProperty('fdoc', 'Factura')
|
||||
poAct.AddProperty('id_partc', 601)
|
||||
poAct.AddProperty('partc', 'RAJA')
|
||||
poAct.AddProperty('serie_act', '')
|
||||
poAct.AddProperty('dataact', DATE())
|
||||
poAct.AddProperty('tva_incasare', 0)
|
||||
poAct.AddProperty('id_set', 1)
|
||||
poAct.AddProperty('id_gestin', 1)
|
||||
|
||||
*----- jtva_coloane2 / saft_taxtable: perechi reale 21% (Oracle dev, vjtva_coloane) -----
|
||||
IF USED('jtva_coloane2')
|
||||
USE IN ('jtva_coloane2')
|
||||
ENDIF
|
||||
CREATE CURSOR jtva_coloane2 (ordine N(8), id_jtva_coloana N(14), denumire C(100), ;
|
||||
jc N(1), jv N(1), afisat N(1), coloana_jc C(20), coloana_jv C(20), cota_tva N(6,2), id_tva N(14))
|
||||
INSERT INTO jtva_coloane2 VALUES (0, 0, '', 0, 0, 1, '', '', 0, 0)
|
||||
INSERT INTO jtva_coloane2 VALUES (1, 208, 'ACH. INT. 21%', 1, 0, 1, 'RO21B', 'RO21T', 21, 209)
|
||||
INSERT INTO jtva_coloane2 VALUES (2, 209, 'TVA ACH. INT. 21%', 1, 0, 1, 'RO21T', '', 21, 0)
|
||||
INSERT INTO jtva_coloane2 VALUES (3, 220, 'ACH. IMP. 21%', 1, 0, 1, 'FO21B', 'FO21T', 21, 221)
|
||||
INSERT INTO jtva_coloane2 VALUES (4, 221, 'TVA ACH. IMP. 21%', 1, 0, 1, 'FO21T', '', 21, 0)
|
||||
|
||||
IF USED('saft_taxtable')
|
||||
USE IN ('saft_taxtable')
|
||||
ENDIF
|
||||
CREATE CURSOR saft_taxtable (taxname C(250) NULL, typename C(250) NULL, taxcode N(6) NULL, ;
|
||||
taxtype N(3) NULL, descriere C(250) NULL, tip C(100) NULL, descriere_tip C(250) NULL, ;
|
||||
procent_taxa N(7,2) NULL, procent_prorata N(7,2) NULL, inactiv N(1) NULL, tva N(1) NULL, ;
|
||||
wht N(1) NULL, tva_achizitii N(1) NULL, tva_livrari N(1) NULL)
|
||||
INDEX ON taxcode TAG taxcode
|
||||
INSERT INTO saft_taxtable (taxname, taxcode, descriere, procent_taxa, tva, wht, tva_achizitii, tva_livrari) ;
|
||||
VALUES ('', 0, '', 0, 1, 1, 1, 1)
|
||||
INSERT INTO saft_taxtable (taxname, taxcode, descriere, procent_taxa, tva, wht, tva_achizitii, tva_livrari) ;
|
||||
VALUES ('301104-Achizitii de bunuri si servicii taxabile cu cota de 21%, altele decat importurile si cele supuse masurilor de simplificare', 301104, '', 21, 1, 0, 1, 0)
|
||||
INSERT INTO saft_taxtable (taxname, taxcode, descriere, procent_taxa, tva, wht, tva_achizitii, tva_livrari) ;
|
||||
VALUES ('301204-Import de bunuri cota 21%', 301204, '', 21, 1, 0, 1, 0)
|
||||
|
||||
DO CreeazaIntrodc WITH 'introdc'
|
||||
DO CreeazaIntrodc WITH 'introdc_sablon'
|
||||
INSERT INTO introdc_sablon (scd, scc, cu_tva, ordine, id_set, participa_valuta, tip_rand, ;
|
||||
id_jtva_coloana, ptva, explicatie_tva) ;
|
||||
VALUES ('371', '401', 1, 1, 1, .T., 'B', 208, 21, 'ACH. INT. 21%')
|
||||
INSERT INTO introdc_sablon (scd, scc, cu_tva, ordine, id_set, participa_valuta, tip_rand, ;
|
||||
id_jtva_coloana, ptva, explicatie_tva) ;
|
||||
VALUES ('4426', '401', 1, 2, 1, .T., 'T', 209, 21, 'TVA ACH. INT. 21%')
|
||||
GO TOP IN introdc_sablon
|
||||
|
||||
DO CreeazaRulTemp
|
||||
INSERT INTO rul_temp (denumire, codmat, cant, pret, pret_lei, cont, cota_tva) ;
|
||||
VALUES ('PLACEHOLDER', 'PH', 1, 1, 1, '371', 21)
|
||||
|
||||
*-- F1 (ointroduceri.prg): index ord_doc INAINTE de CREATEOBJECT - vezi docs/testare-ui-vfp.md capcana p.
|
||||
SELECT introdc
|
||||
INDEX ON Str(Nvl(nr_doc,0),8) + Icase(tip_rand='B','1', tip_rand='S','2', tip_rand='T','3', tip_rand='D','4', '5') + Padr(Nvl(scd,''),10) TAG ord_doc
|
||||
SET ORDER TO ord_doc
|
||||
|
||||
DO DcLog WITH 'cursoare pregatite, CREATEOBJECT(import_nota, .F.) - lIntern=.F. (import)'
|
||||
PUBLIC goObj
|
||||
goObj = CREATEOBJECT('IMPORT_nota', .F.)
|
||||
IF VARTYPE(goObj) <> 'O'
|
||||
DO DcLog WITH 'FAIL: instantiere import_nota'
|
||||
DO HarnessDone WITH 'done-error'
|
||||
QUIT
|
||||
ENDIF
|
||||
goObj.lDialogAratat = .T.
|
||||
goObj.oact = poAct
|
||||
*-- lSpargeSecundare=.T.: doc2 (DVI, USD) participa la pret in alta valuta si trebuie
|
||||
*-- SPART pe cont (371), altfel nu apare randul S verificat (explicatia5).
|
||||
goObj.lSpargeSecundare = .T.
|
||||
goObj.WindowType = 0
|
||||
goObj.Visible = .T.
|
||||
goObj.Show()
|
||||
goObj.WindowState = 2
|
||||
DOEVENTS FORCE
|
||||
|
||||
SELECT rul_temp
|
||||
ZAP
|
||||
goObj.gridart.Refresh()
|
||||
DOEVENTS FORCE
|
||||
|
||||
*========================= DOC 1 (principal, FACTURA EUR + DVI referinta), DOC 2 (secundar, DVI USD) =========================
|
||||
PUBLIC goDlg, goT
|
||||
DO AdaugaDoc1
|
||||
DO VerificaPereche WITH 15000, 5230, 1000, 'EUR'
|
||||
DO AdaugaDoc2
|
||||
DO VerificaPereche WITH 101, 400, 100, 'USD'
|
||||
|
||||
DO DcLog WITH 'dump introdc dupa cele 2 documente (inainte de articol):'
|
||||
DO DumpIntrodc
|
||||
|
||||
DO HarnessStep WITH 0, 'dupa 2 documente: introdc=' + TRANSFORM(RECCOUNT_ACTIVE('introdc')) + ' randuri'
|
||||
|
||||
*========================= ARTICOL (flux real do_adauga_articol) - A8/371 substituie A-TEST/371 =========================
|
||||
gcMockArtCodmat = 'ART-A8-371'
|
||||
gcMockAcontCrt = '4'
|
||||
TRY
|
||||
goObj.do_adauga_articol()
|
||||
CATCH TO loExcA1
|
||||
DO DcLog WITH 'EROARE do_adauga_articol (A8/371) ' + TRANSFORM(loExcA1.ErrorNo) + ' [' + loExcA1.Message + '] in ' + loExcA1.Procedure + ':' + TRANSFORM(loExcA1.LineNo)
|
||||
ENDTRY
|
||||
DOEVENTS FORCE
|
||||
SELECT rul_temp
|
||||
LOCATE FOR ALLTRIM(codmat) == 'ART-A8-371'
|
||||
IF FOUND()
|
||||
REPLACE cant WITH 1, pret_val WITH 1000, pretd WITH 1000, pret WITH ROUND(1000*5.23,4), pret_lei WITH ROUND(1000*5.23,4)
|
||||
DO DcLog WITH 'articol (371) adaugat, cant/pret completate (1000 EUR / ' + TRANSFORM(ROUND(1000*5.23,4)) + ' lei)'
|
||||
ELSE
|
||||
DO DcLog WITH 'FAIL: articolul nu a fost adaugat de do_adauga_articol()'
|
||||
ENDIF
|
||||
goObj.gridart.Refresh()
|
||||
DOEVENTS FORCE
|
||||
|
||||
DO HarnessStep WITH 1, 'dupa adaugare articol, rul_temp=' + TRANSFORM(RECCOUNT_ACTIVE('rul_temp'))
|
||||
|
||||
*========================= SINCRONIZARE =========================
|
||||
LOCAL llEroareSync
|
||||
llEroareSync = .F.
|
||||
TRY
|
||||
goObj.sincronizeaza()
|
||||
CATCH TO loExcS1
|
||||
llEroareSync = .T.
|
||||
DO DcLog WITH 'EROARE la sincronizeaza() ' + TRANSFORM(loExcS1.ErrorNo) + ' [' + loExcS1.Message + '] in ' + loExcS1.Procedure + ':' + TRANSFORM(loExcS1.LineNo) + ' (' + loExcS1.LineContents + ')'
|
||||
ENDTRY
|
||||
DOEVENTS FORCE
|
||||
goObj.grid1.Refresh()
|
||||
IF !llEroareSync
|
||||
DO DcLog WITH 'PASS sincronizare: sincronizeaza() fara eroare'
|
||||
ELSE
|
||||
DO DcLog WITH 'FAIL sincronizare: sincronizeaza() a aruncat eroare'
|
||||
ENDIF
|
||||
DO DcLog WITH 'dump introdc dupa sincronizare:'
|
||||
DO DumpIntrodc
|
||||
|
||||
DO HarnessStep WITH 2, 'dupa sincronizare, introdc=' + TRANSFORM(RECCOUNT_ACTIVE('introdc')) + ' randuri'
|
||||
|
||||
*========================= ASSERT-URI =========================
|
||||
PRIVATE pnAsserts, pnPass
|
||||
STORE 0 TO pnAsserts, pnPass
|
||||
|
||||
DO DcLog WITH 'goObj.procent_val=' + TRANSFORM(goObj.procent_val) + ' goObj.nbaza_val=' + TRANSFORM(goObj.nbaza_val) + ' goObj.ntva_val=' + TRANSFORM(goObj.ntva_val)
|
||||
DO Assert3 WITH '1-procent_val (astept 107.648, NU 110)', goObj.procent_val, 107.648
|
||||
DO Assert3 WITH '2-nbaza_val (astept 1076.48, NU 1100)', goObj.nbaza_val, 1076.48
|
||||
DO Assert3 WITH '6-ntva_val (astept 226.06, NU 231)', goObj.ntva_val, 226.06
|
||||
|
||||
SELECT rul_temp
|
||||
LOCATE FOR ALLTRIM(codmat) == 'ART-A8-371'
|
||||
IF FOUND()
|
||||
DO DcLog WITH 'rul_temp: pretd=' + TRANSFORM(pretd) + ' pret=' + TRANSFORM(pret)
|
||||
DO Assert3 WITH '3a-rul_temp.pretd (astept 1076.48, NU 1100)', pretd, 1076.48
|
||||
DO Assert3 WITH '3b-rul_temp.pret (astept 5629.99, NU 5753)', pret, 5629.99
|
||||
ELSE
|
||||
pnAsserts = pnAsserts + 2
|
||||
DO DcLog WITH ' FAIL 3a/3b: nu am gasit articolul ART-A8-371 in rul_temp'
|
||||
ENDIF
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR nract = 101 AND ALLTRIM(fdoc) == 'DVI' AND tip_rand == 'S' AND ALLTRIM(scd) == '371'
|
||||
IF FOUND()
|
||||
DO DcLog WITH 'S doc2 (nract=101,scd=371): explicatia5=[' + ALLTRIM(NVL(explicatia5,'')) + ']'
|
||||
DO AssertStr WITH '4-explicatia5 S doc2 (astept 7.65, NU 10.00)', ALLTRIM(NVL(explicatia5,'')), '7.65'
|
||||
ELSE
|
||||
pnAsserts = pnAsserts + 1
|
||||
DO DcLog WITH ' FAIL 4: nu am gasit randul S (nract=101, fdoc=DVI, scd=371)'
|
||||
ENDIF
|
||||
|
||||
SELECT introdc
|
||||
LOCATE FOR tip_rand == 'D'
|
||||
IF FOUND()
|
||||
DO DcLog WITH 'randul D (diferenta): suma=' + TRANSFORM(suma)
|
||||
DO Assert3 WITH '5-diferenta D (|suma|<=0.02, inainte de fix era -123)', ABS(suma), 0
|
||||
ELSE
|
||||
DO DcLog WITH ' INFO 5: nu exista rand D (diferenta 0, D a fost sters de recalc_diferente) - OK'
|
||||
pnAsserts = pnAsserts + 1
|
||||
pnPass = pnPass + 1
|
||||
ENDIF
|
||||
|
||||
LOCAL llValidSume
|
||||
llValidSume = goObj.valideaza_sume()
|
||||
DO DcLog WITH '7-valideaza_sume()=' + TRANSFORM(llValidSume) + ' cmesajsync=[' + ALLTRIM(NVL(goObj.cmesajsync,'')) + ']'
|
||||
pnAsserts = pnAsserts + 1
|
||||
IF llValidSume AND EMPTY(ALLTRIM(NVL(goObj.cmesajsync,'')))
|
||||
pnPass = pnPass + 1
|
||||
DO DcLog WITH ' PASS 7-valideaza_sume (.T., cmesajsync gol)'
|
||||
ELSE
|
||||
DO DcLog WITH ' FAIL 7-valideaza_sume (' + TRANSFORM(llValidSume) + ', cmesajsync=[' + ALLTRIM(NVL(goObj.cmesajsync,'')) + '])'
|
||||
ENDIF
|
||||
|
||||
DO DcLog WITH 'REZULTAT: ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' assert-uri PASS'
|
||||
IF pnPass = pnAsserts
|
||||
DO DcLog WITH 'VERDICT FINAL: PASS (' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ')'
|
||||
ELSE
|
||||
DO DcLog WITH 'VERDICT FINAL: FAIL (' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' assert-uri PASS)'
|
||||
ENDIF
|
||||
|
||||
DO HarnessStep WITH 3, 'final: ' + TRANSFORM(pnPass) + '/' + TRANSFORM(pnAsserts) + ' PASS'
|
||||
DO HarnessDone WITH 'done'
|
||||
|
||||
CATCH TO loExc
|
||||
DO DcLog WITH 'CATCH ErrorNo=' + TRANSFORM(loExc.ErrorNo) + ' Message=' + loExc.Message + ' Proc=' + loExc.Procedure + ' Line=' + TRANSFORM(loExc.LineNo) + ' [' + loExc.LineContents + ']'
|
||||
DO HarnessDone WITH 'done-error'
|
||||
ENDTRY
|
||||
|
||||
QUIT
|
||||
|
||||
*==================================================================================
|
||||
PROCEDURE AdaugaDoc1
|
||||
*-- FACTURA 15000, RAJA, DVI in EUR (curs 5.23): DVI 101, BIROUL VAMAL, tva 1098.30/210.
|
||||
goDlg = CREATEOBJECT('import_adauga_factura', goObj)
|
||||
goDlg.cFelDoc = 'Factura'
|
||||
goDlg.nIdFdoc = 1
|
||||
goDlg.nNract = 15000
|
||||
goDlg.dDataAct = DATE()
|
||||
goDlg.nIdPartener = 601
|
||||
goDlg.cPartener = 'RAJA'
|
||||
goDlg.cExplicatia = 'Import marfa RAJA'
|
||||
goDlg.nSuma = 1000
|
||||
goDlg.nSumaLei = 0
|
||||
goDlg.nCurs = 5.23
|
||||
goDlg.nIdValuta = 978
|
||||
goDlg.cValuta = 'EUR'
|
||||
goDlg.nIdExplicatieTva = 220
|
||||
goDlg.cExplicatieTva = 'ACH. IMP. 21%'
|
||||
goDlg.optTipTva.Value = 2 && D = DVI
|
||||
goDlg.chkInValutaCont.Value = 1
|
||||
goDlg.chkParticipaValuta.Value = 1
|
||||
goDlg.cSerieDvi = ''
|
||||
goDlg.nNractDvi = 101
|
||||
goDlg.dDviData = DATE()
|
||||
goDlg.nIdFdocDVI = 2
|
||||
goDlg.cFelDocDvi = 'DVI'
|
||||
goDlg.nDviIdPartener = 900
|
||||
goDlg.cDviPartener = 'BIROUL VAMAL'
|
||||
goDlg.nDviTvaLei = 1098.30
|
||||
goDlg.nDviTvaVal = 210.00
|
||||
goDlg.actualizeaza_stare_dvi()
|
||||
goDlg.WindowType = 0
|
||||
goDlg.Visible = .T.
|
||||
goDlg.Show()
|
||||
DOEVENTS FORCE
|
||||
DO DcLog WITH 'DOC1: valideaza = ' + TRANSFORM(goDlg.valideaza())
|
||||
DO ConstruiesteToDlg
|
||||
DO DcLog WITH 'DOC1: do_adauga_factura = ' + TRANSFORM(goObj.do_adauga_factura(goT))
|
||||
goDlg.Hide()
|
||||
DOEVENTS FORCE
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE AdaugaDoc2
|
||||
*-- DVI 101, BIROUL VAMAL, 100 USD curs 4.00 (400 lei) - ALTA valuta decat principala (EUR),
|
||||
*-- participa la pretul in valuta, TVA normal ('F', NU referinta la alt DVI) - proprie, se
|
||||
*-- autocalculeaza din sablonul cu_tva (21% din baza: 84 lei / 21 USD).
|
||||
goDlg = CREATEOBJECT('import_adauga_factura', goObj)
|
||||
goDlg.cFelDoc = 'DVI'
|
||||
goDlg.nIdFdoc = 2
|
||||
goDlg.nNract = 101
|
||||
goDlg.dDataAct = DATE()
|
||||
goDlg.nIdPartener = 900
|
||||
goDlg.cPartener = 'BIROUL VAMAL'
|
||||
goDlg.cExplicatia = 'DVI 101 taxe vamale USD'
|
||||
goDlg.nSuma = 100
|
||||
goDlg.nSumaLei = 0
|
||||
goDlg.nCurs = 4.00
|
||||
goDlg.nIdValuta = 840
|
||||
goDlg.cValuta = 'USD'
|
||||
goDlg.nIdExplicatieTva = 220
|
||||
goDlg.cExplicatieTva = 'ACH. IMP. 21%'
|
||||
goDlg.optTipTva.Value = 1 && F = furnizor (normal, NU referinta DVI)
|
||||
goDlg.chkInValutaCont.Value = 1
|
||||
goDlg.chkParticipaValuta.Value = 1
|
||||
goDlg.WindowType = 0
|
||||
goDlg.Visible = .T.
|
||||
goDlg.Show()
|
||||
DOEVENTS FORCE
|
||||
DO DcLog WITH 'DOC2: valideaza = ' + TRANSFORM(goDlg.valideaza())
|
||||
DO ConstruiesteToDlg
|
||||
DO DcLog WITH 'DOC2: do_adauga_factura = ' + TRANSFORM(goObj.do_adauga_factura(goT))
|
||||
goDlg.Hide()
|
||||
DOEVENTS FORCE
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE ConstruiesteToDlg
|
||||
*-- toDlg construit INLINE (nu intr-o functie apelata din procedura de business) - vezi
|
||||
*-- docs/testare-ui-vfp.md capcana l; aici functioneaza fiindca goT e PUBLIC (nu return local).
|
||||
goT = CREATEOBJECT('Empty')
|
||||
=ADDPROPERTY(goT,'serie_act',ALLTRIM(NVL(goDlg.cSerieAct,'')))
|
||||
=ADDPROPERTY(goT,'nract',goDlg.nNract)
|
||||
=ADDPROPERTY(goT,'dataact',goDlg.dDataAct)
|
||||
=ADDPROPERTY(goT,'fdoc',goDlg.cFelDoc)
|
||||
=ADDPROPERTY(goT,'id_fdoc',goDlg.nIdFdoc)
|
||||
=ADDPROPERTY(goT,'id_partc',goDlg.nIdPartener)
|
||||
=ADDPROPERTY(goT,'partc',goDlg.cPartener)
|
||||
=ADDPROPERTY(goT,'explicatia',ALLTRIM(NVL(goDlg.cExplicatia,'')))
|
||||
=ADDPROPERTY(goT,'suma',IIF(goDlg.chkInValutaCont.Value=1 AND goDlg.nCurs<>0,IIF(goDlg.nSumaLei<>0,goDlg.nSumaLei,ROUND(goDlg.nSuma*goDlg.nCurs,gnPC)),goDlg.nSuma))
|
||||
=ADDPROPERTY(goT,'suma_val',IIF(goDlg.chkInValutaCont.Value=1 AND goDlg.nCurs<>0,goDlg.nSuma,0))
|
||||
=ADDPROPERTY(goT,'in_valuta',goDlg.chkInValutaCont.Value)
|
||||
=ADDPROPERTY(goT,'participa_valuta',(goDlg.chkParticipaValuta.Value=1))
|
||||
=ADDPROPERTY(goT,'id_valuta',IIF(goDlg.chkInValutaCont.Value=1,goDlg.nIdValuta,0))
|
||||
=ADDPROPERTY(goT,'curs',IIF(goDlg.chkInValutaCont.Value=1,goDlg.nCurs,0))
|
||||
=ADDPROPERTY(goT,'nume_val',IIF(goDlg.chkInValutaCont.Value=1,ALLTRIM(NVL(goDlg.cValuta,'')),''))
|
||||
=ADDPROPERTY(goT,'cTipTva',IIF(goDlg.optTipTva.Value=1,'F',IIF(goDlg.optTipTva.Value=2,'D','N')))
|
||||
=ADDPROPERTY(goT,'id_jtva_coloana',goDlg.nIdExplicatieTva)
|
||||
=ADDPROPERTY(goT,'dvi_serie',CHRTRAN(ALLTRIM(NVL(goDlg.cSerieDvi,'')),CHR(34),''))
|
||||
=ADDPROPERTY(goT,'dvi_nract',goDlg.nNractDvi)
|
||||
=ADDPROPERTY(goT,'dvi_dataact',goDlg.dDviData)
|
||||
=ADDPROPERTY(goT,'dvi_id_fdoc',goDlg.nIdFdocDVI)
|
||||
=ADDPROPERTY(goT,'dvi_fdoc',goDlg.cFelDocDvi)
|
||||
=ADDPROPERTY(goT,'dvi_id_partc',goDlg.nDviIdPartener)
|
||||
=ADDPROPERTY(goT,'dvi_partc',goDlg.cDviPartener)
|
||||
=ADDPROPERTY(goT,'dvi_scc','401')
|
||||
=ADDPROPERTY(goT,'dvi_tva_lei',goDlg.nDviTvaLei)
|
||||
=ADDPROPERTY(goT,'dvi_tva_val',goDlg.nDviTvaVal)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE CreeazaRulTemp
|
||||
*-- structura reala rul_temp (VRUL, Oracle dev).
|
||||
IF USED('rul_temp')
|
||||
USE IN ('rul_temp')
|
||||
ENDIF
|
||||
CREATE CURSOR rul_temp ( ;
|
||||
id_rul N(20,0), an N(4,0), luna N(2,0), cod N(20,0);
|
||||
, serie C(100), nnir N(20,0), id_articol N(10,0), denumire C(100);
|
||||
, codmat C(50), codmatf C(50), codbare C(50), um C(20);
|
||||
, id_gestiune N(5,0), nume_gestiune C(50), cgest C(20), nr_pag N(2,0);
|
||||
, gestionar C(50), comisie_receptie1 C(50), comisie_receptie2 C(50), comisie_receptie3 C(50);
|
||||
, cant N(14,3), cante N(14,3), cont C(10), acont C(20);
|
||||
, pret N(18,4), tva N(18,4), valoare N(18,4), valtva N(18,4);
|
||||
, proc_tva N(5,2), pretv N(18,4), pretvtva N(18,4), tvav N(18,4);
|
||||
, valoarev N(18,4), valtvav N(18,4), proc_tvav N(5,2), adaos N(18,4);
|
||||
, adaos_tva N(18,4), valoare_adaos N(18,4), valtva_adaos N(18,4), procent N(10,3);
|
||||
, discunitar N(18,4), discount_tva N(18,4), valoare_discount N(18,4), valtva_discount N(18,4);
|
||||
, proc_disc N(7,3), pretd N(14,4), curs N(18,4), id_valuta N(10,0);
|
||||
, nume_val C(20), id_lucrare N(20,0), nrord C(100), id_responsabil N(10,0);
|
||||
, nresp C(100), resp_marca N(18,4), dataact T, id_util N(5,0);
|
||||
, util C(30), dataora T, id_sectie N(5,0), sectie C(50);
|
||||
, csectie C(10), alcooltutun N(1,0), datain T, dataout T;
|
||||
, id_fact N(20,0), id_gestiunec N(10,0), nume_gestiunec C(50), cgestc C(20);
|
||||
, id_responsabilc N(5,0), id_reteta N(10,0), reteta C(50), nrespc C(100);
|
||||
, respc_marca N(18,4), id_set N(20,0), id_tip_rulaj N(10,0), tip_rulaj C(50);
|
||||
, id_obiect_depozit N(10,0), id_rul_aux N(10,0), nract N(20,0), serie_act C(10);
|
||||
, dataoras T, id_utils N(10,0), lot C(30), adata_expirare T;
|
||||
, id_sucursala N(5,0), sucursala C(250), id_part_rez N(10,0), part_rez C(100);
|
||||
, id_lucrare_rez N(10,0), nrord_rez C(100), subgrupa C(100), grupa C(100);
|
||||
, id_subgrupa N(5,0), id_grupa N(5,0), in_stoc N(1,0), in_crm N(1,0);
|
||||
, id_furnizor N(10,0), furnizor C(100), id_jtva_coloana N(4,0), explicatie_tva C(100);
|
||||
, taxcode N(6,0), taxname C(254), saft_procent N(18,4), codnc8 C(20);
|
||||
, id_tara_origine N(4,0), cod_tara_origine C(5), tara_origine C(50), greutate N(12,4);
|
||||
, fdoc C(30), id_fdoc N(18,4);
|
||||
, pret_lei N(18,4), pret_val N(14,4), cota_tva N(6,2))
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE CreeazaIntrodc
|
||||
LPARAMETERS tcAlias
|
||||
IF USED(tcAlias)
|
||||
USE IN (tcAlias)
|
||||
ENDIF
|
||||
CREATE CURSOR (tcAlias) ( ;
|
||||
id_note N(14), explicatia C(100), scd C(10), ascd C(20), scc C(10), ascc C(20), ;
|
||||
cu_tva N(1), id_set N(14), ordine N(8), in_valuta N(1), id_jtva_coloana N(14) NULL, ;
|
||||
ptva N(6,2), explicatie_tva C(50), tipjurnal C(2), taxcode N(6), paymentcode C(9), ;
|
||||
suma N(18,4), suma_val N(18,4), id_partd N(14), id_partc N(14), partd C(100), partc C(100), ;
|
||||
id_fact N(14), id_factd N(14), id_factc N(14), pereched N(14), perechec N(14), ;
|
||||
nract N(14), serie_act C(10), explicatia4 C(50), explicatia5 C(50), participa_valuta L, ;
|
||||
id_valuta N(14), curs N(14,4), nume_val C(10), dataact D, fdoc C(50), id_fdoc N(14), ;
|
||||
se_scrie N(1), tva_incasare N(1), doc_color N(10), doc_label C(10), tip_rand C(1), ;
|
||||
doc_key C(80), nr_doc N(8), suma_doc N(18,4), suma_doc_val N(18,4), mod_manual N(1), ;
|
||||
scd_orig C(20), ascd_orig C(20))
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE VerificaPereche
|
||||
LPARAMETERS tnNract, tnBazaLei, tnBazaVal, tcVal
|
||||
LOCAL lnSel, lcMsg, llB, lnBS, lnBSV, lcNV
|
||||
lnSel = SELECT()
|
||||
SELECT introdc
|
||||
LOCATE FOR nract = tnNract AND tip_rand == 'B'
|
||||
llB = FOUND()
|
||||
IF llB
|
||||
lnBS = suma
|
||||
lnBSV = suma_val
|
||||
lcNV = ALLTRIM(NVL(nume_val,''))
|
||||
ENDIF
|
||||
IF llB AND ABS(lnBS - tnBazaLei) < 0.01 AND ABS(lnBSV - tnBazaVal) < 0.01 AND ALLTRIM(NVL(lcNV,'')) == tcVal
|
||||
lcMsg = 'PASS pereche nract=' + TRANSFORM(tnNract) + ': B(suma=' + TRANSFORM(lnBS) + ' val=' + TRANSFORM(lnBSV) + ' ' + lcNV + ')'
|
||||
ELSE
|
||||
lcMsg = 'FAIL pereche nract=' + TRANSFORM(tnNract) + ': B?=' + TRANSFORM(llB) + ' bazaLei=' + TRANSFORM(IIF(llB,lnBS,-1)) + '(astept ' + TRANSFORM(tnBazaLei) + ') bazaVal=' + TRANSFORM(IIF(llB,lnBSV,-1)) + '(astept ' + TRANSFORM(tnBazaVal) + ') val=[' + IIF(llB,lcNV,'?') + '](astept [' + tcVal + '])'
|
||||
ENDIF
|
||||
DO DcLog WITH lcMsg
|
||||
SELECT (lnSel)
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE DumpIntrodc
|
||||
LOCAL lnSel
|
||||
lnSel = SELECT()
|
||||
SELECT introdc
|
||||
SCAN
|
||||
DO DcLog WITH ' recno=' + TRANSFORM(RECNO()) + ' nr_doc=' + TRANSFORM(NVL(nr_doc,0)) + ' nract=' + TRANSFORM(nract) + ' fdoc=[' + ALLTRIM(NVL(fdoc,'')) + '] tip_rand=' + tip_rand + ;
|
||||
' scd=' + ALLTRIM(scd) + ' ascd=[' + ALLTRIM(NVL(ascd,'')) + '] scc=' + ALLTRIM(scc) + ' ptva=' + TRANSFORM(ptva) + ' suma=' + TRANSFORM(suma) + ' suma_val=' + TRANSFORM(suma_val) + ;
|
||||
' in_valuta=' + TRANSFORM(NVL(in_valuta,0)) + ' id_valuta=' + TRANSFORM(NVL(id_valuta,0)) + ' partc=[' + ALLTRIM(NVL(partc,'')) + '] expl4=[' + ALLTRIM(NVL(explicatia4,'')) + '] expl5=[' + ALLTRIM(NVL(explicatia5,'')) + '] doc_key=[' + ALLTRIM(doc_key) + ']'
|
||||
ENDSCAN
|
||||
SELECT (lnSel)
|
||||
ENDPROC
|
||||
|
||||
FUNCTION RECCOUNT_ACTIVE
|
||||
LPARAMETERS tcAlias
|
||||
LOCAL lnSel, lnCnt
|
||||
lnSel = SELECT()
|
||||
SELECT (tcAlias)
|
||||
COUNT TO lnCnt FOR !DELETED()
|
||||
SELECT (lnSel)
|
||||
RETURN lnCnt
|
||||
ENDFUNC
|
||||
|
||||
PROCEDURE Assert3
|
||||
*-- compara numeric cu toleranta 0.02, logheaza PASS/FAIL, incrementeaza contoare (byref).
|
||||
LPARAMETERS tcLabel, tuActual, tuExpected
|
||||
pnAsserts = pnAsserts + 1
|
||||
IF ABS(NVL(tuActual,0) - tuExpected) < 0.02
|
||||
pnPass = pnPass + 1
|
||||
DO DcLog WITH ' PASS ' + tcLabel + ' (=' + TRANSFORM(tuActual) + ')'
|
||||
ELSE
|
||||
DO DcLog WITH ' FAIL ' + tcLabel + ' (actual=' + TRANSFORM(tuActual) + ' asteptat=' + TRANSFORM(tuExpected) + ')'
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE AssertStr
|
||||
LPARAMETERS tcLabel, tcActual, tcExpected
|
||||
pnAsserts = pnAsserts + 1
|
||||
IF tcActual == tcExpected
|
||||
pnPass = pnPass + 1
|
||||
DO DcLog WITH ' PASS ' + tcLabel + ' (=[' + tcActual + '])'
|
||||
ELSE
|
||||
DO DcLog WITH ' FAIL ' + tcLabel + ' (actual=[' + tcActual + '] asteptat=[' + tcExpected + '])'
|
||||
ENDIF
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE DcErr
|
||||
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
||||
DO DcLog WITH 'ON ERROR ' + TRANSFORM(tnErr) + ' [' + tcProg + ':' + TRANSFORM(tnLine) + '] ' + tcMsg
|
||||
ENDPROC
|
||||
|
||||
PROCEDURE DcLog
|
||||
LPARAMETERS tcMsg
|
||||
SET SAFETY OFF
|
||||
LOCAL lcL
|
||||
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
|
||||
STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcUILog)
|
||||
ENDPROC
|
||||
|
||||
DEFINE CLASS dummyapp AS Custom
|
||||
PROCEDURE ReadIni
|
||||
LPARAMETERS tcSection, tcKey
|
||||
RETURN ''
|
||||
ENDPROC
|
||||
PROCEDURE WriteIni
|
||||
LPARAMETERS tcSection, tcKey, tcValue
|
||||
RETURN .T.
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
|
||||
DEFINE CLASS dummyexecutor AS Custom
|
||||
cEroare = ''
|
||||
PROCEDURE oExecute
|
||||
LPARAMETERS tcSql, tcCursor
|
||||
IF USED(m.tcCursor)
|
||||
USE IN (m.tcCursor)
|
||||
ENDIF
|
||||
*-- update_jtva_coloane (SELECT * FROM vjtva_coloane ...): mock cu date reale.
|
||||
IF 'VJTVA_COLOANE' $ UPPER(m.tcSql)
|
||||
DO CreeazaJtvaColoaneView WITH m.tcCursor
|
||||
RETURN 1
|
||||
ENDIF
|
||||
*-- rul_temp (recreat de import_nota.Init din vrul cand e gol): structura completa.
|
||||
IF UPPER(ALLTRIM(m.tcCursor)) == 'RUL_TEMP'
|
||||
CREATE CURSOR (m.tcCursor) (denumire C(100), codmat C(30), cant N(14,3), ;
|
||||
pret_val N(18,4), pretd N(18,4), pret N(18,4), pret_lei N(18,4), cont C(10), ;
|
||||
acont C(20), serie C(30), lot C(30), adata_expirare C(10), proc_disc N(6,2), cota_tva N(6,2))
|
||||
RETURN 1
|
||||
ENDIF
|
||||
*-- assign_analitic (creeaza_rand_s / do_adauga_articol): config_analitice - prefix/sufix goale,
|
||||
*-- deci acont-ul vine direct din fconturi_analitice (mai jos), controlat de gcMockAcontCrt.
|
||||
IF 'CONFIG_ANALITICE' $ UPPER(m.tcSql)
|
||||
CREATE CURSOR (m.tcCursor) (camp_leg_prefix C(30), camp_leg_sufix C(30))
|
||||
INSERT INTO (m.tcCursor) VALUES ('', '')
|
||||
RETURN 1
|
||||
ENDIF
|
||||
*-- fconturi_analitice: acont-ul curent, setat explicit de test (gcMockAcontCrt) inainte de
|
||||
*-- fiecare do_adauga_articol() - simplu si deterministic, fara sa depinda de binding real.
|
||||
IF 'FCONTURI_ANALITICE' $ UPPER(m.tcSql)
|
||||
CREATE CURSOR (m.tcCursor) (acont C(20))
|
||||
INSERT INTO (m.tcCursor) VALUES (IIF(TYPE('gcMockAcontCrt') = 'C', gcMockAcontCrt, ''))
|
||||
RETURN 1
|
||||
ENDIF
|
||||
*-- vplcont_analitic: validare analitic vs plan de conturi.
|
||||
IF 'VPLCONT_ANALITIC' $ UPPER(m.tcSql)
|
||||
CREATE CURSOR (m.tcCursor) (cont C(10), acont C(20))
|
||||
INSERT INTO (m.tcCursor) VALUES ('371', '4')
|
||||
RETURN 1
|
||||
ENDIF
|
||||
*-- ramura generica: cursor gol (nu afecteaza fluxurile testate mai sus).
|
||||
CREATE CURSOR (m.tcCursor) (id_temp N(1))
|
||||
RETURN 1
|
||||
ENDPROC
|
||||
PROCEDURE oExecuta
|
||||
LPARAMETERS tcSql, tcCursor
|
||||
IF !EMPTY(m.tcCursor)
|
||||
IF USED(m.tcCursor)
|
||||
USE IN (m.tcCursor)
|
||||
ENDIF
|
||||
IF UPPER(m.tcCursor) == 'CJTVACOL4427'
|
||||
*-- coloana_jc 'FO21T' (import) NU se potriveste patternurilor TI%T/XX%TIT/CE%T -
|
||||
*-- cursor gol => scc ramane '401' (nu 4427).
|
||||
CREATE CURSOR (m.tcCursor) (id_jtva_coloana N(14))
|
||||
ELSE
|
||||
CREATE CURSOR (m.tcCursor) (id_temp N(1))
|
||||
ENDIF
|
||||
ENDIF
|
||||
RETURN .T.
|
||||
ENDPROC
|
||||
PROCEDURE oSelect2Value
|
||||
LPARAMETERS tcSql, toValue
|
||||
toValue = ''
|
||||
RETURN 1
|
||||
ENDPROC
|
||||
PROCEDURE oReset
|
||||
ENDPROC
|
||||
ENDDEFINE
|
||||
|
||||
PROCEDURE CreeazaJtvaColoaneView
|
||||
LPARAMETERS tcCursor
|
||||
IF USED(m.tcCursor)
|
||||
USE IN (m.tcCursor)
|
||||
ENDIF
|
||||
CREATE CURSOR (m.tcCursor) (id_jtva_coloana N(14), denumire C(100), jc N(1), jv N(1), ;
|
||||
coloana_jc C(20), coloana_jv C(20), cota_tva N(6,2), id_tva N(14) NULL, afisat N(1), ;
|
||||
id_jtva_ex N(14) NULL, id_jtva_neex N(14) NULL, ordine N(8), ;
|
||||
taxcode N(6) NULL, taxcode_neexigibil N(6) NULL, taxcode_n50 N(6) NULL, ;
|
||||
taxcode_n50_tvai N(6) NULL, taxcode_n100 N(6) NULL, taxcode_regularizare N(6) NULL, taxcode_tvai N(6) NULL)
|
||||
INSERT INTO (m.tcCursor) (id_jtva_coloana, denumire, jc, jv, afisat, ordine, cota_tva) VALUES (0, '', 0, 0, 1, 0, 0)
|
||||
INSERT INTO (m.tcCursor) (id_jtva_coloana, denumire, jc, jv, coloana_jc, cota_tva, id_tva, afisat, ordine, taxcode) ;
|
||||
VALUES (208, 'ACH. INT. 21%', 1, 0, 'RO21B', 21, 209, 1, 1, 301104)
|
||||
INSERT INTO (m.tcCursor) (id_jtva_coloana, denumire, jc, jv, coloana_jc, cota_tva, afisat, ordine, taxcode) ;
|
||||
VALUES (209, 'TVA ACH. INT. 21%', 1, 0, 'RO21T', 21, 1, 2, 301104)
|
||||
INSERT INTO (m.tcCursor) (id_jtva_coloana, denumire, jc, jv, coloana_jc, cota_tva, id_tva, afisat, ordine, taxcode) ;
|
||||
VALUES (220, 'ACH. IMP. 21%', 1, 0, 'FO21B', 21, 221, 1, 3, 301204)
|
||||
INSERT INTO (m.tcCursor) (id_jtva_coloana, denumire, jc, jv, coloana_jc, cota_tva, afisat, ordine, taxcode) ;
|
||||
VALUES (221, 'TVA ACH. IMP. 21%', 1, 0, 'FO21T', 21, 1, 4, 301204)
|
||||
ENDPROC
|
||||
12
utile/Teste/achizitie_import/test_valuta_dvi_usd.ps1
Normal file
12
utile/Teste/achizitie_import/test_valuta_dvi_usd.ps1
Normal file
@@ -0,0 +1,12 @@
|
||||
# test_valuta_dvi_usd.ps1 - wrapper peste harness-ul generic pentru scenariul de conversie
|
||||
# valutara a documentelor secundare in ALTA valuta decat principala (runda7). Rulare:
|
||||
# powershell -ExecutionPolicy Bypass -File test_valuta_dvi_usd.ps1
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$Teste = $PSScriptRoot
|
||||
& (Join-Path (Split-Path $Teste -Parent) 'vfp_ui_harness.ps1') `
|
||||
-TestPrg (Join-Path $Teste 'test_valuta_dvi_usd.prg') `
|
||||
-Steps @('2documente','articol_adaugat','sync','final') `
|
||||
-ShotsDir (Join-Path $Teste 'screenshots_valuta_usd') `
|
||||
-SyncDir (Join-Path $Teste 'uisync_valuta_usd') `
|
||||
-StepTimeoutSec 180 `
|
||||
-ReadyTimeoutSec 180
|
||||
Reference in New Issue
Block a user