188 lines
8.6 KiB
Plaintext
188 lines
8.6 KiB
Plaintext
* probe_12b_s7a_optiuni_readonly.prg
|
|
* Plan #12b, S7a - proba headless pe frm_optiuni_facturare (COMUN\clase\ofacturare.vc2:24650):
|
|
* .ct_clb_pol_pret_stoc.Enabled = Empty(Thisform.nidpolpretstoc) in Init.
|
|
*
|
|
* nidpolpretstoc vine din pack_facturare.citeste_setari_pol_pret(1, gnIdUtil, ...) (apelata din
|
|
* actualizeaza_politica_pret, ofacturare.vc2:24573). Sursa PL/SQL (ALL_SOURCE, verificata inainte
|
|
* de proba, nu presupusa) pentru V_TIP=1 NU filtreaza dupa V_ID_UTIL - citeste direct
|
|
* OPTIUNI.VARVALUE (VARNAME='ID_POL_PRET_STOC') si verifica doar ca politica exista si nu e STERS
|
|
* in CRM_POLITICI_PRETURI. Filtrul pe utilizator (CRM_VPOLPRETCURUTIL) exista doar pe ramurile
|
|
* V_TIP IN (23,30,41) si V_TIP IN (48,49) - S3 a scos exact acest filtru de pe ramura V_TIP=1
|
|
* ("Locul #3 (citire din OPTIUNI + CRM_POLITICI_PRETURI, fara view-ul pe utilizator)"). Cum S3 e
|
|
* deja aplicat REAL pe schema (stare_plan_12b.md), id_util=4 (fara drept azi la politica 41 prin
|
|
* CRM_VPOLPRETCURUTIL, baseline_12b.md sectiunea 11) primeste ACUM acelasi id_pol=41 ca id_util=8
|
|
* pe aceasta ramura - nota "fara drept inainte de S3" din plan descrie starea DINAINTE de aplicarea
|
|
* reala a S3, nu starea curenta a schemei.
|
|
*
|
|
* Spion pe goExecutor (subclasa, DODEFAULT pe PCOUNT) - tiparul din
|
|
* editare_factura\probe_s13_toomanycolumns.prg: nu opreste executia, doar logheaza fiecare SQL.
|
|
*
|
|
* Rulare: powershell -ExecutionPolicy Bypass -File ruleaza_suita.ps1 -Nume probe_12b_s7a_optiuni_readonly
|
|
* Log: D:\ROA\ROAFACTURARE\docs\loguri_12b\s7a_optiuni_readonly.log (cerut de sarcina, nu out\)
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
SET NOTIFY OFF
|
|
CLOSE DATABASES
|
|
|
|
PUBLIC gcLog, gcCaz, gnPass, gnFail
|
|
gcLog = "D:\ROA\ROAFACTURARE\docs\loguri_12b\s7a_optiuni_readonly.log"
|
|
IF !DIRECTORY("D:\ROA\ROAFACTURARE\docs\loguri_12b")
|
|
MD "D:\ROA\ROAFACTURARE\docs\loguri_12b"
|
|
ENDIF
|
|
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcLog)
|
|
gcCaz = ""
|
|
gnPass = 0
|
|
gnFail = 0
|
|
ON ERROR DO AfErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
|
|
DO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto_roafacturare.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
|
IF TYPE('gnHandle') <> 'N' OR gnHandle <= 0
|
|
DO AfLog WITH "FAIL: conexiune Oracle esuata"
|
|
DO Final
|
|
ENDIF
|
|
DO AfLog WITH "ENV OK gnHandle=" + TRANSFORM(gnHandle)
|
|
|
|
* incarcare explicita a clasei din calea COMPLETA (nu relativa via SET PATH), ca sa fim siguri
|
|
* care ofacturare.vcx s-a incarcat de fapt
|
|
RELEASE CLASSLIB ofacturare
|
|
SET CLASSLIB TO (gcAppPath + "COMUN\CLASE\ofacturare.vcx") ADDITIVE
|
|
DO AfLog WITH "SET CLASSLIB la " + gcAppPath + "COMUN\CLASE\ofacturare.vcx"
|
|
|
|
gnTransOriginal = SQLGETPROP(gnHandle, "Transactions")
|
|
SQLSETPROP(gnHandle, "Transactions", 2)
|
|
DO AfLog WITH "Transactions manual, original=" + TRANSFORM(gnTransOriginal)
|
|
|
|
LOCAL loForm1, loForm2, loForm3, loForm4, loReal, loSpy
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
gcCaz = "[1: optiune setata, id_util=8] "
|
|
gnIdUtil = 8
|
|
loForm1 = CREATEOBJECT('frm_optiuni_facturare', 1)
|
|
DO Verdict WITH LOWER(JUSTFNAME(loForm1.ClassLibrary)) == 'ofacturare.vcx', ;
|
|
"ClassLibrary incarcat = ofacturare.vcx (cale completa) - " + TRANSFORM(loForm1.ClassLibrary)
|
|
DO Verdict WITH loForm1.pgfrm_optiuni.Page1.Ct_clb_pol_pret_stoc.Enabled = .F., ;
|
|
"Enabled=.F. dupa Init (nidpolpretstoc=" + TRANSFORM(loForm1.nidpolpretstoc) + ")"
|
|
loForm1.Refresh()
|
|
DO Verdict WITH loForm1.pgfrm_optiuni.Page1.Ct_clb_pol_pret_stoc.Enabled = .F., "Enabled=.F. dupa Refresh()"
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
gcCaz = "[2: optiune setata, id_util=4 fara drept CRM_VPOLPRETCURUTIL] "
|
|
gnIdUtil = 4
|
|
loForm2 = CREATEOBJECT('frm_optiuni_facturare', 1)
|
|
DO Verdict WITH loForm2.pgfrm_optiuni.Page1.Ct_clb_pol_pret_stoc.Enabled = .F., ;
|
|
"Enabled=.F. dupa Init (nidpolpretstoc=" + TRANSFORM(loForm2.nidpolpretstoc) + ") - fara filtru pe utilizator pe ramura V_TIP=1, cf. sursei citite"
|
|
loForm2.Refresh()
|
|
DO Verdict WITH loForm2.pgfrm_optiuni.Page1.Ct_clb_pol_pret_stoc.Enabled = .F., "Enabled=.F. dupa Refresh()"
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
gcCaz = "[3: optiune GOALA] "
|
|
gnIdUtil = 8
|
|
LOCAL lnOk
|
|
lnOk = SQLEXEC(gnHandle, "UPDATE OPTIUNI SET VARVALUE = NULL WHERE PROGRAM = 'ROAFACTURARE' AND VARNAME = 'ID_POL_PRET_STOC'")
|
|
DO Verdict WITH lnOk > 0, "UPDATE OPTIUNI ID_POL_PRET_STOC=NULL (in tranzactie, ROLLBACK la final) - lnOk=" + TRANSFORM(lnOk)
|
|
loForm3 = CREATEOBJECT('frm_optiuni_facturare', 1)
|
|
DO Verdict WITH loForm3.pgfrm_optiuni.Page1.Ct_clb_pol_pret_stoc.Enabled = .T., ;
|
|
"Enabled=.T. cu optiunea goala (nidpolpretstoc=" + TRANSFORM(NVL(loForm3.nidpolpretstoc, -999)) + ")"
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
* revin la optiunea reala (41) pentru cazul 4 - salvare fara schimbare trebuie sa compare fata
|
|
* de valoarea reala din OPTIUNI, nu fata de NULL-ul de mai sus
|
|
lnOk = SQLEXEC(gnHandle, "UPDATE OPTIUNI SET VARVALUE = '41' WHERE PROGRAM = 'ROAFACTURARE' AND VARNAME = 'ID_POL_PRET_STOC'")
|
|
DO Verdict WITH lnOk > 0, "restaurare OPTIUNI ID_POL_PRET_STOC=41 (tot in tranzactie) - lnOk=" + TRANSFORM(lnOk)
|
|
|
|
gcCaz = "[4: salvare fara schimbare de camp, spion oexecutor] "
|
|
loForm4 = CREATEOBJECT('frm_optiuni_facturare', 1)
|
|
loReal = goExecutor
|
|
loSpy = CREATEOBJECT('SpyS7a')
|
|
loSpy.nHandle = gnHandle
|
|
goExecutor = loSpy
|
|
loForm4.inainte_de_do_termin()
|
|
goExecutor = loReal
|
|
DO Verdict WITH !('modificare_politica_stoc' $ UPPER(loSpy.cToateSql)) AND !('MODIFICARE_POLITICA_STOC' $ loSpy.cToateSql), ;
|
|
"niciun SQL trimis prin executor nu contine modificare_politica_stoc (" + TRANSFORM(loSpy.nApeluri) + " apel(uri))"
|
|
|
|
*----------------------------------------------------------------------------------------
|
|
gcCaz = "[mutatie de control, instanta separata] "
|
|
LOCAL loFormCtrl
|
|
gnIdUtil = 8
|
|
loFormCtrl = CREATEOBJECT('frm_optiuni_facturare', 1)
|
|
loFormCtrl.pgfrm_optiuni.Page1.Ct_clb_pol_pret_stoc.Enabled = .T.
|
|
DO Verdict WITH loFormCtrl.pgfrm_optiuni.Page1.Ct_clb_pol_pret_stoc.Enabled = .T., ;
|
|
"dupa fortare manuala Enabled=.T. pe o instanta separata - un assert naiv 'Enabled=.F.' de la cazul 1 ar fi picat aici, deci asertul e sensibil la linia din Init"
|
|
|
|
DO Final
|
|
|
|
*==================================================================================================
|
|
* Spion pe goExecutor - subclasa DODEFAULT pe PCOUNT (nu opreste executia), tiparul din
|
|
* editare_factura\probe_s13_toomanycolumns.prg. Acumuleaza toate SQL-urile intr-un singur sir,
|
|
* pentru un singur test de substring la final.
|
|
*==================================================================================================
|
|
DEFINE CLASS SpyS7a AS oexecutor
|
|
nApeluri = 0
|
|
cToateSql = ''
|
|
|
|
PROCEDURE oExecute(tcSql, tcCursor, tlProgress, tcTitluProgress, tnHandle, tlShowError, tlQuitOnError, tlReconnect)
|
|
LOCAL lnRet, lnPc, lcS
|
|
THIS.nApeluri = THIS.nApeluri + 1
|
|
lcS = IIF(VARTYPE(m.tcSql) = 'C', m.tcSql, '<NU E SIR>')
|
|
THIS.cToateSql = THIS.cToateSql + lcS + CHR(13) + CHR(10)
|
|
STRTOFILE(' SpyS7a #' + TRANSFORM(THIS.nApeluri) + ' SQL=[' + lcS + ']' + CHR(13) + CHR(10), gcLog, 1)
|
|
|
|
lnPc = PCOUNT()
|
|
DO CASE
|
|
CASE lnPc <= 1
|
|
lnRet = DODEFAULT(m.tcSql)
|
|
CASE lnPc = 2
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor)
|
|
CASE lnPc = 3
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress)
|
|
CASE lnPc = 4
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress)
|
|
CASE lnPc = 5
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress, m.tnHandle)
|
|
CASE lnPc = 6
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress, m.tnHandle, m.tlShowError)
|
|
CASE lnPc = 7
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress, m.tnHandle, m.tlShowError, m.tlQuitOnError)
|
|
OTHERWISE
|
|
lnRet = DODEFAULT(m.tcSql, m.tcCursor, m.tlProgress, m.tcTitluProgress, m.tnHandle, m.tlShowError, m.tlQuitOnError, m.tlReconnect)
|
|
ENDCASE
|
|
RETURN lnRet
|
|
ENDPROC
|
|
ENDDEFINE
|
|
|
|
PROCEDURE Verdict
|
|
LPARAMETERS tlCond, tcMsg
|
|
IF tlCond
|
|
gnPass = gnPass + 1
|
|
DO AfLog WITH "PASS: " + gcCaz + tcMsg
|
|
ELSE
|
|
gnFail = gnFail + 1
|
|
DO AfLog WITH "FAIL: " + gcCaz + tcMsg
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
PROCEDURE AfLog
|
|
LPARAMETERS tcMsg
|
|
STRTOFILE(tcMsg + CHR(13) + CHR(10), gcLog, 1)
|
|
ENDPROC
|
|
|
|
PROCEDURE AfErr
|
|
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
|
|
DO AfLog WITH "ERROR " + TRANSFORM(tnErr) + " [" + gcCaz + tcProg + ":" + TRANSFORM(tnLine) + "] " + tcMsg
|
|
ENDPROC
|
|
|
|
PROCEDURE Final
|
|
LOCAL lnOk
|
|
gcCaz = "[final] "
|
|
lnOk = SQLEXEC(gnHandle, "ROLLBACK")
|
|
DO AfLog WITH "ROLLBACK lnOk=" + TRANSFORM(lnOk)
|
|
IF TYPE('gnTransOriginal') = 'N'
|
|
SQLSETPROP(gnHandle, "Transactions", gnTransOriginal)
|
|
ENDIF
|
|
DO AfLog WITH "TOTAL PASS=" + TRANSFORM(gnPass) + " FAIL=" + TRANSFORM(gnFail)
|
|
DO AfLog WITH "END " + TTOC(DATETIME())
|
|
QUIT
|
|
ENDPROC
|