182 lines
8.5 KiB
Plaintext
182 lines
8.5 KiB
Plaintext
* probe_12b_s7b_politica_nota.prg
|
|
* Plan #12b, S7b - proba headless pe clasa cus_pret_nomenclator (COMUN\programe\ofacturare_comun.prg:2323),
|
|
* metodele adaugate in S7b: incarca_nota_politica / salveaza_nota_politica (nota implicita a politicii
|
|
* de stoc, folosita in optiunile facturarii, ofacturare.vc2). Clasa e definita direct in .prg
|
|
* (Set Procedure To ofacturare_comun.prg, deja Additive in mediul de test) - CREATEOBJECT direct.
|
|
*
|
|
* Cazuri:
|
|
* (1) asigura_politica() apelata de doua ori, ca din ROACONTRACTE (acelasi pachet PL/SQL,
|
|
* D14 = pack_preturi.asigura_politica_stoc) dupa ce optiunea e golita -> o singura politica
|
|
* noua (numarate randurile CRM_POLITICI_PRETURI inainte/dupa fiecare apel, nu doar id-ul).
|
|
* (2) salveaza_nota_politica(id_pol_nou, '461', '7583') -> ID_NOTA citit DIRECT din
|
|
* CRM_POLITICI_PRETURI (nu din proprietatile instantei), plus SCD/SCC ale notei citite prin
|
|
* JOIN CRM_NOTE_VANZARI/NOTE_CONTABILE, comparate cu valorile asteptate 461/7583.
|
|
* (3) incarca_nota_politica(acelasi id_pol) pe o instanta noua -> cScd/cScc = 461/7583, identic
|
|
* cu ce s-a scris la (2).
|
|
* Politica noua de la (1) e folosita si la (2)/(3), ca sa nu atinga politica 41 de productie -
|
|
* dispare oricum la ROLLBACK.
|
|
*
|
|
* Spion pe goExecutor: nu e nevoie - toate verificarile citesc direct din Oracle (SQLEXEC), nu
|
|
* numara apeluri RPC.
|
|
*
|
|
* Rulare: powershell -ExecutionPolicy Bypass -File ruleaza_suita.ps1 -Nume probe_12b_s7b_politica_nota
|
|
* Log: D:\ROA\ROAFACTURARE\docs\loguri_12b\s7b_proba.log (cerut de sarcina, nu out\)
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
SET NOTIFY OFF
|
|
CLOSE DATABASES
|
|
|
|
PUBLIC gcLog, gcCaz, gnPass, gnFail, gnTransOriginal
|
|
gcLog = "D:\ROA\ROAFACTURARE\docs\loguri_12b\s7b_proba.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
|
|
gnIdUtil = 8
|
|
DO AfLog WITH "ENV OK gnHandle=" + TRANSFORM(gnHandle)
|
|
|
|
gnTransOriginal = SQLGETPROP(gnHandle, "Transactions")
|
|
SQLSETPROP(gnHandle, "Transactions", 2)
|
|
DO AfLog WITH "Transactions manual, original=" + TRANSFORM(gnTransOriginal)
|
|
|
|
LOCAL lnOk, lnCntInit, lnCntDupa1, lnCntDupa2, lcOptInit, loA, loB, lnPolA, lnPolB
|
|
|
|
*==========================================================================================
|
|
* CAZ (1): asigura_politica_stoc apelata de doua ori (ca din ROACONTRACTE) -> o singura politica
|
|
*==========================================================================================
|
|
gcCaz = "[1-asigura_politica_stoc-x2] "
|
|
|
|
* precondition: sesiunea reala initializeaza pack_facturare.nid_moneda_nationala inaintea D14
|
|
* (initializeaza_facturare) - tiparul confirmat in docs\proba_s6a_asigura_politica_stoc.sql
|
|
lnOk = SQLEXEC(gnHandle, "begin pack_facturare.nid_moneda_nationala := pack_def.GetIdMonedaNationala(); end;")
|
|
DO Verdict WITH lnOk > 0, "precondition pack_facturare.nid_moneda_nationala initializat"
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select count(*) cnt from crm_politici_preturi", "crscnt0")
|
|
lnCntInit = IIF(lnOk > 0 AND USED('crscnt0'), crscnt0.cnt, -1)
|
|
IF USED('crscnt0')
|
|
USE IN crscnt0
|
|
ENDIF
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select varvalue from optiuni where program='ROAFACTURARE' and varname='ID_POL_PRET_STOC'", "crsopt0")
|
|
lcOptInit = IIF(lnOk > 0 AND USED('crsopt0') AND !ISNULL(crsopt0.varvalue), ALLTRIM(crsopt0.varvalue), "")
|
|
IF USED('crsopt0')
|
|
USE IN crsopt0
|
|
ENDIF
|
|
DO AfLog WITH " OPTIUNE initiala ID_POL_PRET_STOC=[" + lcOptInit + "], politici initial=" + TRANSFORM(lnCntInit)
|
|
|
|
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 (tranzactie, ROLLBACK la final) - lnOk=" + TRANSFORM(lnOk)
|
|
|
|
loA = CREATEOBJECT('cus_pret_nomenclator')
|
|
lnPolA = loA.asigura_politica()
|
|
DO Verdict WITH lnPolA > 0, "primul apel asigura_politica() > 0 (obtinut " + TRANSFORM(lnPolA) + ")"
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select count(*) cnt from crm_politici_preturi", "crscnt1")
|
|
lnCntDupa1 = IIF(lnOk > 0 AND USED('crscnt1'), crscnt1.cnt, -1)
|
|
IF USED('crscnt1')
|
|
USE IN crscnt1
|
|
ENDIF
|
|
DO Verdict WITH lnCntDupa1 = lnCntInit + 1, "dupa primul apel: politici " + TRANSFORM(lnCntInit) + " -> " + TRANSFORM(lnCntDupa1) + " (+1 asteptat)"
|
|
|
|
loB = CREATEOBJECT('cus_pret_nomenclator')
|
|
lnPolB = loB.asigura_politica()
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select count(*) cnt from crm_politici_preturi", "crscnt2")
|
|
lnCntDupa2 = IIF(lnOk > 0 AND USED('crscnt2'), crscnt2.cnt, -1)
|
|
IF USED('crscnt2')
|
|
USE IN crscnt2
|
|
ENDIF
|
|
|
|
DO Verdict WITH lnPolB = lnPolA, "al doilea apel (ca din ROACONTRACTE) intoarce acelasi id=" + TRANSFORM(lnPolA) + " (obtinut " + TRANSFORM(lnPolB) + ")"
|
|
DO Verdict WITH lnCntDupa2 = lnCntDupa1, "al doilea apel NU creeaza politica noua (politici " + TRANSFORM(lnCntDupa1) + " -> " + TRANSFORM(lnCntDupa2) + ")"
|
|
|
|
IF !EMPTY(lcOptInit)
|
|
lnOk = SQLEXEC(gnHandle, "UPDATE OPTIUNI SET VARVALUE = '" + lcOptInit + "' WHERE PROGRAM = 'ROAFACTURARE' AND VARNAME = 'ID_POL_PRET_STOC'")
|
|
DO Verdict WITH lnOk > 0, "restaurare OPTIUNI ID_POL_PRET_STOC=" + lcOptInit + " (tot in tranzactie) - lnOk=" + TRANSFORM(lnOk)
|
|
ENDIF
|
|
|
|
*==========================================================================================
|
|
* CAZ (2): salveaza_nota_politica scrie ID_NOTA in CRM_POLITICI_PRETURI (citit din Oracle)
|
|
*==========================================================================================
|
|
gcCaz = "[2-salveaza_nota_politica] "
|
|
LOCAL loC, llRes2, lnIdNotaCitit
|
|
|
|
loC = CREATEOBJECT('cus_pret_nomenclator')
|
|
llRes2 = loC.salveaza_nota_politica(lnPolA, '461', '7583')
|
|
DO Verdict WITH llRes2, "salveaza_nota_politica(" + TRANSFORM(lnPolA) + ",461,7583) = .T."
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select id_nota from crm_politici_preturi where id_pol = " + TRANSFORM(lnPolA), "crsverif2")
|
|
lnIdNotaCitit = IIF(lnOk > 0 AND USED('crsverif2') AND RECCOUNT('crsverif2') = 1, NVL(crsverif2.id_nota,-999), -999)
|
|
IF USED('crsverif2')
|
|
USE IN crsverif2
|
|
ENDIF
|
|
DO Verdict WITH lnIdNotaCitit > 0, "ID_NOTA citit direct din CRM_POLITICI_PRETURI (nu din instanta) > 0 - obtinut " + TRANSFORM(lnIdNotaCitit)
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select n.scd, n.scc from crm_note_vanzari v, note_contabile n where v.id_nota = " + TRANSFORM(lnIdNotaCitit) + " and n.id_set = v.id_set", "crsnota2")
|
|
DO Verdict WITH lnOk > 0 AND USED('crsnota2') AND RECCOUNT('crsnota2') = 1 AND ALLTRIM(crsnota2.scd) == "461" AND ALLTRIM(crsnota2.scc) == "7583", ;
|
|
"nota din Oracle are scd/scc = 461/7583 (asteptat independent, nu cursorul clasei) - obtinut " + ;
|
|
IIF(USED('crsnota2') AND RECCOUNT('crsnota2') = 1, ALLTRIM(NVL(crsnota2.scd,'?')) + '/' + ALLTRIM(NVL(crsnota2.scc,'?')), '<lipsa>')
|
|
IF USED('crsnota2')
|
|
USE IN crsnota2
|
|
ENDIF
|
|
|
|
*==========================================================================================
|
|
* CAZ (3): incarca_nota_politica citeste inapoi identic (instanta noua)
|
|
*==========================================================================================
|
|
gcCaz = "[3-incarca_nota_politica] "
|
|
LOCAL loD, llRes3
|
|
|
|
loD = CREATEOBJECT('cus_pret_nomenclator')
|
|
llRes3 = loD.incarca_nota_politica(lnPolA)
|
|
DO Verdict WITH llRes3, "incarca_nota_politica(" + TRANSFORM(lnPolA) + ") = .T."
|
|
DO Verdict WITH ALLTRIM(loD.cScd) == "461", "incarca_nota_politica: cScd=461 (obtinut [" + ALLTRIM(loD.cScd) + "])"
|
|
DO Verdict WITH ALLTRIM(loD.cScc) == "7583", "incarca_nota_politica: cScc=7583 (obtinut [" + ALLTRIM(loD.cScc) + "])"
|
|
|
|
DO Final
|
|
|
|
*==================================================================================================
|
|
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
|