Files
roaimob/teste/test_chk_amort_introducere.prg
2026-08-24 19:28:22 +03:00

197 lines
7.8 KiB
Plaintext

* test_chk_amort_introducere.prg
* Test headless pentru "bifa amortizare maxim deductibila la introducere imobilizare
* corporala" (frm_introducere din Clase\oimobilizari.vc2).
*
* Verifica:
* 1) formularul frm_introducere se instantiaza fara eroare (obiectul chk_amort_max_deductibil
* e adaugat corect, metoda .Valid se leaga)
* 2) la introducere noua (tnTipModificare=1): bifa NEACTIVA, campul read-only, valoarea NULL
* (toata amortizarea deductibila)
* 3) activarea bifei -> campul devine editabil, valoarea 0; dezactivarea -> NULL din nou
* 4) expresia de salvare pcAmortMaxDeductibil -> 'NULL' la debifat / valoarea la bifat
*
* Rulare: vfp9.exe -A -T "test_chk_amort_introducere.prg"
* (DO test_init_env_auto_roaimob din acelasi folder, cu DSN CENTRAL / schema MARIUSM_AUTO)
* Verdict in test_chk_amort_introducere_log.txt (langa acest fisier).
SET SAFETY OFF
SET TALK OFF
SET DELETED ON
SET EXACT ON
SET CENTURY ON
SET DATE DMY
SET NULLDISPLAY TO ''
CLOSE DATABASES
PUBLIC gcUILog
gcUILog = "D:\ROA\ROAIMOB\teste\test_chk_amort_introducere_log.txt"
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13)+CHR(10), gcUILog)
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
ON SHUTDOWN QUIT
TRY
DO "D:\ROA\ROAIMOB\teste\test_init_env_auto_roaimob.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
IF gnHandle <= 0
DO PrLogLocal WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')'
QUIT
ENDIF
DO PrLogLocal WITH 'mediu ROAIMOB initializat'
*-- variabile globale de care depinde formularul
PUBLIC gnPa, gnPC
gnPa = 2
gnPC = 2
gnIdSucursala = gnIdFirma
*-- cursorii pe care ii folosesc combobox-urile formularului (v_tipuri_amort, v_tipuri_imob, cote_TVA)
IF USED('v_tipuri_amort')
USE IN v_tipuri_amort
ENDIF
CREATE CURSOR v_tipuri_amort (denumire C(30), id_tip_amortizare N(4))
INSERT INTO v_tipuri_amort (denumire, id_tip_amortizare) VALUES ('LINIARA', 1)
INSERT INTO v_tipuri_amort (denumire, id_tip_amortizare) VALUES ('ACCELERATA', 2)
IF USED('v_tipuri_imob')
USE IN v_tipuri_imob
ENDIF
CREATE CURSOR v_tipuri_imob (denumire C(30), id_tip_imobilizare N(4))
INSERT INTO v_tipuri_imob (denumire, id_tip_imobilizare) VALUES ('CORPORALA', 1)
IF USED('cote_TVA')
USE IN cote_TVA
ENDIF
CREATE CURSOR cote_TVA (procent N(6,2), descriere C(40), id_proc_tva N(4), proc_tva N(6,2))
INSERT INTO cote_TVA (procent, descriere, id_proc_tva, proc_tva) VALUES (1.19, 'standard', 1, 1.19)
*-- stub poGeneratorNumere pentru apelul poGeneratorNumere.aloca_numar din Init (tnTipModificare=1)
PUBLIC poGeneratorNumere
poGeneratorNumere = CREATEOBJECT('stub_generator')
*-- poMF trebuie sa existe ca variabila (formularul il foloseste in metode)
PUBLIC poMF
poMF = CREATEOBJECT('custom')
DO PrLogLocal WITH 'cursori + stubs pregatite'
*-- instantiez formularul real (introducere imobilizare CORPORALA = tnTip 1, modificare 1)
LOCAL ofrm
ofrm = CREATEOBJECT('frm_intro_test', 1, 1)
DO PrLogLocal WITH 'frm_introducere instantiat OK'
DO PrLogLocal WITH 'chk exista: ' + TRANSFORM(PEMSTATUS(ofrm, 'chk_amort_max_deductibil', 5))
*-- 1) stare initiala la introducere noua (INANTE de orice modificare)
LOCAL lcStare1
lcStare1 = 'bifa=' + TRANSFORM(ofrm.chk_amort_max_deductibil.Value) + ;
' readonly=' + TRANSFORM(ofrm.clb_amort_max_deductibil.text_simplu1.ReadOnly) + ;
' valoare=[' + TRANSFORM(ofrm.clb_amort_max_deductibil.text_simplu1.Value) + ']'
DO PrLogLocal WITH 'stare initiala: ' + lcStare1
*-- stare initiala trebuie sa fie: bifa .F., readonly .T., valoare NULL
LOCAL llBifaNeactiva, llReadOnly, llNull, llOk
llBifaNeactiva = (ofrm.chk_amort_max_deductibil.Value = .F.)
llReadOnly = (ofrm.clb_amort_max_deductibil.text_simplu1.ReadOnly = .T.)
llNull = ISNULL(ofrm.clb_amort_max_deductibil.text_simplu1.Value)
llOk = (m.llBifaNeactiva AND m.llReadOnly AND m.llNull)
IF m.llOk
DO PrLogLocal WITH 'PASS: stare initiala corecta (bifa neactiva, camp read-only, valoare NULL = toata amortizarea deductibila)'
ELSE
DO PrLogLocal WITH 'FAIL: stare initiala incorecta (bifa=' + TRANSFORM(m.llBifaNeactiva) + ;
' readonly=' + TRANSFORM(m.llReadOnly) + ' null=' + TRANSFORM(m.llNull) + ')'
ENDIF
*-- 2) activez bifa -> camp editabil, valoare 0
ofrm.chk_amort_max_deductibil.Value = .T.
ofrm.chk_amort_max_deductibil.Valid()
LOCAL llToggleOk
llToggleOk = (ofrm.clb_amort_max_deductibil.text_simplu1.ReadOnly = .F.) ;
AND (ofrm.clb_amort_max_deductibil.text_simplu1.Value = 0)
DO PrLogLocal WITH 'dupa activare bifa: readonly=' + TRANSFORM(ofrm.clb_amort_max_deductibil.text_simplu1.ReadOnly) + ;
' valoare=[' + TRANSFORM(ofrm.clb_amort_max_deductibil.text_simplu1.Value) + ']'
IF m.llToggleOk
DO PrLogLocal WITH 'PASS: activarea bifei face campul editabil cu valoare 0'
ELSE
DO PrLogLocal WITH 'FAIL: activarea bifei nu a activat campul corect'
m.llOk = .F.
ENDIF
*-- 3) dezactivez bifa -> NULL din nou, camp read-only
ofrm.chk_amort_max_deductibil.Value = .F.
ofrm.chk_amort_max_deductibil.Valid()
LOCAL llDezOk
llDezOk = (ofrm.clb_amort_max_deductibil.text_simplu1.ReadOnly = .T.) ;
AND ISNULL(ofrm.clb_amort_max_deductibil.text_simplu1.Value)
DO PrLogLocal WITH 'dupa dezactivare bifa: readonly=' + TRANSFORM(ofrm.clb_amort_max_deductibil.text_simplu1.ReadOnly) + ;
' valoare=[' + TRANSFORM(ofrm.clb_amort_max_deductibil.text_simplu1.Value) + ']'
IF m.llDezOk
DO PrLogLocal WITH 'PASS: dezactivarea bifei revine la NULL + read-only'
ELSE
DO PrLogLocal WITH 'FAIL: dezactivarea bifei nu a revenit la NULL'
m.llOk = .F.
ENDIF
*-- 4) expresia de salvare pcAmortMaxDeductibil
LOCAL pcAmortMaxDeductibil, pnAmortMaxDeductibil, lcSaveNull, lcSaveVal
ofrm.chk_amort_max_deductibil.Value = .F.
ofrm.chk_amort_max_deductibil.Valid()
pnAmortMaxDeductibil = ofrm.clb_amort_max_deductibil.text_simplu1.Value
pcAmortMaxDeductibil = IIF(ISNULL(m.pnAmortMaxDeductibil), 'NULL', ALLTRIM(STR(m.pnAmortMaxDeductibil, 14, gnPC)))
lcSaveNull = m.pcAmortMaxDeductibil
DO PrLogLocal WITH 'pcAmortMaxDeductibil (debifat) = [' + lcSaveNull + ']'
ofrm.chk_amort_max_deductibil.Value = .T.
ofrm.chk_amort_max_deductibil.Valid()
ofrm.clb_amort_max_deductibil.text_simplu1.Value = 1500
pnAmortMaxDeductibil = ofrm.clb_amort_max_deductibil.text_simplu1.Value
pcAmortMaxDeductibil = IIF(ISNULL(m.pnAmortMaxDeductibil), 'NULL', ALLTRIM(STR(m.pnAmortMaxDeductibil, 14, gnPC)))
lcSaveVal = m.pcAmortMaxDeductibil
DO PrLogLocal WITH 'pcAmortMaxDeductibil (bifat=1500) = [' + lcSaveVal + ']'
LOCAL llSaveOk
llSaveOk = (m.lcSaveNull == 'NULL') AND (VAL(m.lcSaveVal) = 1500)
IF m.llSaveOk
DO PrLogLocal WITH 'PASS: pcAmortMaxDeductibil corect (NULL la debifat, valoare la bifat)'
ELSE
DO PrLogLocal WITH 'FAIL: pcAmortMaxDeductibil incorect (debifat=[' + m.lcSaveNull + '] bifat=[' + m.lcSaveVal + '])'
m.llOk = .F.
ENDIF
DO PrLogLocal WITH 'VERDICT: ' + IIF(m.llOk, 'PASS', 'FAIL')
DO PrLogLocal WITH 'GATA'
CATCH TO loExcMain
DO PrLogLocal WITH 'CATCH ErrorNo=' + TRANSFORM(loExcMain.ErrorNo) + ' Message=' + loExcMain.Message + ;
' Proc=' + loExcMain.Procedure + ' Line=' + TRANSFORM(loExcMain.LineNo) + ' [' + loExcMain.LineContents + ']'
ENDTRY
QUIT
PROCEDURE PrErrLocal
LPARAMETERS tnErr, tcMsg, tcProg, tnLine
DO PrLogLocal WITH 'ON ERROR ' + TRANSFORM(tnErr) + ' [' + tcProg + ':' + TRANSFORM(tnLine) + '] ' + tcMsg
ENDPROC
PROCEDURE PrLogLocal
LPARAMETERS tcMsg
SET SAFETY OFF
LOCAL lcL
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
STRTOFILE(lcL + tcMsg + CHR(13)+CHR(10), gcUILog)
ENDPROC
* DEFINE CLASS la finalul fisierului (capcana: DEFINE CLASS nu poate sta la mijloc)
DEFINE CLASS stub_generator AS custom
PROCEDURE aloca_numar
LPARAMETERS tnTipDoc, tnTip
RETURN 1
ENDPROC
PROCEDURE ResetAll
ENDPROC
ENDDEFINE
DEFINE CLASS frm_intro_test AS frm_introducere
PROCEDURE Load
* suprascriu Load-ul parinte (_frm_base), care ar deschide o fereastra de atentionare
* daca cselect/ccursor sunt goale
ENDPROC
ENDDEFINE