frm_modific2024, pgfArticole.PAGE3 - editare in memorie, fara scriere in Oracle (aceea ramane S5). - sub-blocul A: cantitate/pret/pret_cu_tva editabile inline, marcaj lmodificat pe linie, coloana valoare pe linie - sub-blocul B: stergere logica de linii (sters/DynamicForeColor gri) si adaugare de linii prin frm_articol_factura, cu alegerea articolului prin caut_articol() - sub-blocul C: bara de totaluri sub grid (total linii convertit RON la cursul documentului, discount de antet editabil, total net), ascunsa pe transfer/custodie; verdict de corelatie ACT/RUL informativ, cu 3 stari - suma ACT: sold net debit-credit, cont pe tip de document (4111 / 418 / 461, iar pe rate/contract 4111, 411 sau 461) - suma RUL: doar ID_TIP_RULAJ = 0, adica miscarile reale; perechile ID_TIP_RULAJ = 3 sunt virtuale (tin locul procesului verbal de schimbare de pret) si nu intra in suma. Corectie cu liniile nestocate, marcata "ajustat" - adaugarea de linii pe document in valuta: dialogul primeste tip_valuta si cursul documentului de pe tvanz, deci pretul se introduce direct in valuta; ofacturare.vc2 ramane neatins - cei 5 apelanti frm_modific2024 (afisjurcom, anaf_efactura, cele doua .sc2 de import) pregatesc cursorul de articole inainte de Createobject, gardat pe SET PROCEDURE - registrul jurnal din ROACONT/ROAGEST ramane neschimbat Teste headless pe MARIUSM_AUTO, suite care isi descopera singure documentele: test_page3_articole 14/2 (cele 2 = artefact de grid nematerializat headless, acoperit pe ecran), test_incarca_vanzare_din_nota 5/0, test_adauga_linie_articol 20/0, test_adauga_linie_valuta 16/0, test_ui_sterge_linie 8/0, test_verdict_act_rul 26/0. docs/todos.txt: punctele 13 si 20, scrise de Marius. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SN8snvkk94KuhWwoXUUey3
366 lines
16 KiB
Plaintext
366 lines
16 KiB
Plaintext
* test_verdict_act_rul.prg
|
|
* Verifica ActualizeazaVerdictActRul (omodificari.vc2, S4/#6 sub-blocul C partea 2): calculul
|
|
* Total ACT (sold net debit-credit pe cont, functie de tipul documentului), calculul Total RUL
|
|
* (SUM((cant+cante)*pretvtva) WHERE id_tip_rulaj=0, corectat cu liniile nestocate), alegerea
|
|
* contului pe grupa de tip (4111/461/418, respectiv 4111/411/461 pe rate/contract),
|
|
* ascunderea pe tipurile fara suma comparabila si tratamentul special tip=51 (verdict fortat
|
|
* "nu se aplica").
|
|
* Cifrele sunt recalculate INDEPENDENT (SCAN, nu SUM) pe acelasi document, ca sa valideze formula
|
|
* implementata, nu doar sa repete acelasi cod. Documentul e descoperit prin proprietate
|
|
* (descopera_caz_test.prg), nu ancorat pe cod. Nu scrie in Oracle - doar SELECT-uri si cursoare
|
|
* in memorie. QUIT la final.
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
|
|
PUBLIC gcErrLog
|
|
gcErrLog = 'D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\test_verdict_act_rul_log.txt'
|
|
STRTOFILE('start' + CHR(13) + CHR(10), gcErrLog)
|
|
|
|
ON ERROR DO test_error_handler WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
|
|
DO ('D:\ROA\ROAFACTURARE\COMUN\utile\Teste\test_init_env_auto.prg') WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT'
|
|
IF gnHandle <= 0
|
|
STRTOFILE('EROARE: conectare esuata' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
QUIT
|
|
ENDIF
|
|
|
|
SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\programe\ofacturare_editare.prg ADDITIVE
|
|
SET PROCEDURE TO D:\ROA\ROAFACTURARE\COMUN\utile\Teste\editare_factura\descopera_caz_test.prg ADDITIVE
|
|
|
|
*!* test_init_env_auto incarca clasa omodificari din working copy-ul ROACONT (alt SET PATH) -
|
|
*!* o eliberam si o reincarcam pe cea de sub test, cu cale completa
|
|
RELEASE CLASSLIB omodificari
|
|
SET CLASSLIB TO D:\ROA\ROAFACTURARE\COMUN\clase\omodificari.vcx ADDITIVE
|
|
|
|
PUBLIC gnPass, gnFail
|
|
gnPass = 0
|
|
gnFail = 0
|
|
|
|
LOCAL llCazA
|
|
llCazA = DescoperaCazTest('FACTURA_ARTICOLE', 'crscaz_a')
|
|
IF !llCazA
|
|
STRTOFILE('EROARE: cazul FACTURA_ARTICOLE nu a fost gasit' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
QUIT
|
|
ENDIF
|
|
STRTOFILE('caz A: cod=' + TRANSFORM(crscaz_a.cod) + ' an=' + TRANSFORM(crscaz_a.an) + ' luna=' + TRANSFORM(crscaz_a.luna) + ;
|
|
' id_vanzare=' + TRANSFORM(crscaz_a.id_vanzare) + ' tip=' + TRANSFORM(crscaz_a.tip) + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
LOCAL llOk, lnIdSet, loForm
|
|
LOCAL lnActManual, lnRulManual, lnCorectieManual, lnRulCuCorectieManual
|
|
|
|
llOk = IncarcaCursoareModificareNota(crscaz_a.cod, crscaz_a.an, crscaz_a.luna, .F.)
|
|
IF !llOk OR !Used('tact') OR Reccount('tact') = 0
|
|
STRTOFILE('EROARE: IncarcaCursoareModificareNota a esuat pe caz A' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
QUIT
|
|
ENDIF
|
|
|
|
Select a.*, Iif(Nvl(id_jtva_coloana,0)=0,0,1) As cu_Tva From tact a Into Cursor tact Readwrite
|
|
Go Top In tact
|
|
lnIdSet = tact.id_set
|
|
|
|
IF !Used('crsJtvaTemp')
|
|
update_jtva_coloane("", "crsJtvaTemp", 6)
|
|
ENDIF
|
|
|
|
Select tact
|
|
loForm = Createobject([frm_modific2024], lnIdSet)
|
|
loForm.WindowType = 0
|
|
loForm.Show()
|
|
|
|
DO asserteaza WITH 'formularul are articole (lAreArticoleVanzari)', loForm.lAreArticoleVanzari, TRANSFORM(loForm.lAreArticoleVanzari)
|
|
DO asserteaza WITH 'tip=1 (factura normala) - cont asteptat 4111, bara ACT/RUL vizibila', loForm.pgfArticole.PAGE3.lblTotalActArt.Visible, TRANSFORM(loForm.pgfArticole.PAGE3.lblTotalActArt.Visible)
|
|
|
|
*!* --- calcul independent (SCAN, nu SUM) al Total ACT pe contul 4111, ca sa valideze formula fara
|
|
*!* sa repete acelasi cod din ActualizeazaVerdictActRul ---
|
|
lnActManual = 0
|
|
SELECT tact
|
|
SCAN FOR Nvl(sters,0) = 0
|
|
IF Alltrim(Nvl(scd,'')) == '4111'
|
|
lnActManual = lnActManual + Nvl(suma,0)
|
|
ELSE
|
|
IF Alltrim(Nvl(scc,'')) == '4111' AND !INLIST(Alltrim(Nvl(scd,'')), '5311','5314','5121','5125','5126')
|
|
lnActManual = lnActManual - Nvl(suma,0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDSCAN
|
|
lnActManual = Round(lnActManual, 2)
|
|
|
|
DO asserteaza WITH 'Total ACT calculat de forma corespunde calculului independent (SCAN)', loForm.nTotalActRon == m.lnActManual, TRANSFORM(loForm.nTotalActRon) + ' vs manual ' + TRANSFORM(m.lnActManual)
|
|
|
|
*!* --- calcul independent al Total RUL (doar randurile cu id_tip_rulaj=0, decizia 36 - perechile
|
|
*!* id_tip_rulaj=3 sunt miscari virtuale de diferenta de pret, nu intra in suma), plus corectia
|
|
*!* liniilor nestocate ---
|
|
lnRulManual = 0
|
|
IF Used('trul')
|
|
SELECT trul
|
|
SCAN FOR Nvl(sters,0) = 0 AND Nvl(id_tip_rulaj,0) = 0
|
|
lnRulManual = lnRulManual + (Nvl(cant,0) + Nvl(cante,0)) * Nvl(pretvtva,0)
|
|
ENDSCAN
|
|
ENDIF
|
|
|
|
lnCorectieManual = 0
|
|
SELECT tvd
|
|
SCAN FOR Nvl(sters,0) <> 1 AND Nvl(in_stoc,1) = 0
|
|
lnCorectieManual = lnCorectieManual + Nvl(valoare,0)
|
|
ENDSCAN
|
|
lnRulCuCorectieManual = Round(m.lnRulManual + m.lnCorectieManual * Nvl(tvanz.curs,1) / Iif(Nvl(tvanz.multiplicator,1)=0,1,Nvl(tvanz.multiplicator,1)), 2)
|
|
|
|
DO asserteaza WITH 'Total RUL calculat de forma corespunde calculului independent (SCAN, formula + corectie nestocate)', loForm.nTotalRulRon == m.lnRulCuCorectieManual, TRANSFORM(loForm.nTotalRulRon) + ' vs manual ' + TRANSFORM(m.lnRulCuCorectieManual)
|
|
DO asserteaza WITH 'lRulAjustat reflecta exact daca exista linii nestocate (corectie <> 0)', loForm.lRulAjustat == (Round(m.lnCorectieManual,2) <> 0), 'lRulAjustat=' + TRANSFORM(loForm.lRulAjustat) + ' corectie=' + TRANSFORM(m.lnCorectieManual)
|
|
|
|
LOCAL lcCaptionRul, lcVerdictText
|
|
lcCaptionRul = loForm.pgfArticole.PAGE3.lblTotalRulArt.Caption
|
|
lcVerdictText = loForm.pgfArticole.PAGE3.lblVerdictArt.Caption
|
|
DO asserteaza WITH 'eticheta Total RUL marcheaza corect "(ajustat)" cand corectia s-a aplicat', ;
|
|
IIF(loForm.lRulAjustat, '(ajustat)' $ m.lcCaptionRul, NOT '(ajustat)' $ m.lcCaptionRul), m.lcCaptionRul
|
|
DO asserteaza WITH 'verdictul e informativ (contine "informativ", nu se prezinta ca eroare de sine statatoare)', ;
|
|
'informativ' $ Lower(m.lcVerdictText) AND NOT 'eroare:' $ Lower(m.lcVerdictText), m.lcVerdictText
|
|
|
|
IF Abs(loForm.nTotalActRon - loForm.nTotalRulRon) <= 0.02
|
|
DO asserteaza WITH 'verdict text = sincronizat, cand ACT si RUL coincid', 'sincronizat' $ Lower(m.lcVerdictText), m.lcVerdictText
|
|
ELSE
|
|
DO asserteaza WITH 'verdict text = divergent (informativ), cand ACT si RUL nu coincid', 'divergent' $ Lower(m.lcVerdictText), m.lcVerdictText
|
|
ENDIF
|
|
|
|
*!* --- documentul de test (cod=1140895): dupa decizia 36, perechile id_tip_rulaj=3 nu mai intra
|
|
*!* in Total RUL, deci ACT si RUL coincid exact la 1924.59 - verificare explicita a cifrei, nu
|
|
*!* doar a egalitatii celor doua totaluri (un bug care ar pune ambele pe zero ar trece testul de mai sus) ---
|
|
IF crscaz_a.cod = 1140895
|
|
DO asserteaza WITH 'documentul de test cod=1140895: Total ACT = 1924.59', loForm.nTotalActRon == 1924.59, TRANSFORM(loForm.nTotalActRon)
|
|
DO asserteaza WITH 'documentul de test cod=1140895: Total RUL = 1924.59 (decizia 36)', loForm.nTotalRulRon == 1924.59, TRANSFORM(loForm.nTotalRulRon)
|
|
DO asserteaza WITH 'documentul de test cod=1140895: verdict sincronizat', 'sincronizat' $ Lower(m.lcVerdictText), m.lcVerdictText
|
|
ENDIF
|
|
|
|
*!* --- tip=51 (ROAACNPRO): verdict fortat "nu se aplica", indiferent de cifre (decizia D din rec_suma_act.md) ---
|
|
loForm.nTipVanzare = 51
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
DO asserteaza WITH 'tip=51: cifrele raman vizibile (informativ)', loForm.pgfArticole.PAGE3.lblTotalActArt.Visible, TRANSFORM(loForm.pgfArticole.PAGE3.lblTotalActArt.Visible)
|
|
DO asserteaza WITH 'tip=51: verdictul e fortat "nu se aplica", nu sincronizat/divergent', 'nu se aplica' $ Lower(loForm.pgfArticole.PAGE3.lblVerdictArt.Caption), loForm.pgfArticole.PAGE3.lblVerdictArt.Caption
|
|
|
|
*!* --- transfer intre subunitati (tip=23, decizia 22): bara ACT/RUL se ascunde odata cu restul barei ---
|
|
loForm.nTipVanzare = 23
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
DO asserteaza WITH 'tip=23 (transfer): Total ACT ascuns', !loForm.pgfArticole.PAGE3.lblTotalActArt.Visible, TRANSFORM(loForm.pgfArticole.PAGE3.lblTotalActArt.Visible)
|
|
DO asserteaza WITH 'tip=23 (transfer): Total RUL ascuns', !loForm.pgfArticole.PAGE3.txtTotalRulArt.Visible, TRANSFORM(loForm.pgfArticole.PAGE3.txtTotalRulArt.Visible)
|
|
DO asserteaza WITH 'tip=23 (transfer): indicatorul de verdict ascuns', !loForm.pgfArticole.PAGE3.lblVerdictArt.Visible, TRANSFORM(loForm.pgfArticole.PAGE3.lblVerdictArt.Visible)
|
|
|
|
*!* --- custodie (tip=42, decizia 22): la fel, fara suma comparabila ---
|
|
loForm.nTipVanzare = 42
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
DO asserteaza WITH 'tip=42 (custodie): Total ACT ascuns', !loForm.pgfArticole.PAGE3.lblTotalActArt.Visible, TRANSFORM(loForm.pgfArticole.PAGE3.lblTotalActArt.Visible)
|
|
|
|
*!* --- alegerea contului pe grupa de tip: avize catre clienti debitori (28,29) -> 461 ---
|
|
loForm.nTipVanzare = 28
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
LOCAL lnAct461
|
|
lnAct461 = 0
|
|
SELECT tact
|
|
SCAN FOR Nvl(sters,0) = 0
|
|
IF Alltrim(Nvl(scd,'')) == '461'
|
|
lnAct461 = lnAct461 + Nvl(suma,0)
|
|
ELSE
|
|
IF Alltrim(Nvl(scc,'')) == '461' AND !INLIST(Alltrim(Nvl(scd,'')), '5311','5314','5121','5125','5126')
|
|
lnAct461 = lnAct461 - Nvl(suma,0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDSCAN
|
|
DO asserteaza WITH 'tip=28 (aviz client debitor): contul de referinta e 461', loForm.nTotalActRon == Round(m.lnAct461,2), TRANSFORM(loForm.nTotalActRon) + ' vs manual(461) ' + TRANSFORM(Round(m.lnAct461,2))
|
|
|
|
*!* --- restul avizelor (21,22,24,26) -> 418 ---
|
|
loForm.nTipVanzare = 21
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
LOCAL lnAct418
|
|
lnAct418 = 0
|
|
SELECT tact
|
|
SCAN FOR Nvl(sters,0) = 0
|
|
IF Alltrim(Nvl(scd,'')) == '418'
|
|
lnAct418 = lnAct418 + Nvl(suma,0)
|
|
ELSE
|
|
IF Alltrim(Nvl(scc,'')) == '418' AND !INLIST(Alltrim(Nvl(scd,'')), '5311','5314','5121','5125','5126')
|
|
lnAct418 = lnAct418 - Nvl(suma,0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDSCAN
|
|
DO asserteaza WITH 'tip=21 (aviz obisnuit): contul de referinta e 418', loForm.nTotalActRon == Round(m.lnAct418,2), TRANSFORM(loForm.nTotalActRon) + ' vs manual(418) ' + TRANSFORM(Round(m.lnAct418,2))
|
|
|
|
*!* --- restaurare tip original si verificare corectie sintetica pe linii nestocate ---
|
|
loForm.nTipVanzare = crscaz_a.tip
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
LOCAL lnRulInainte, lnRulDupa, lnValoareLinie, lnCursDoc, lnMultDoc
|
|
lnRulInainte = loForm.nTotalRulRon
|
|
|
|
SELECT tvd
|
|
GO TOP
|
|
lnValoareLinie = Nvl(valoare,0)
|
|
REPLACE in_stoc WITH 0
|
|
lnCursDoc = Nvl(tvanz.curs,1)
|
|
lnMultDoc = Iif(Nvl(tvanz.multiplicator,1)=0,1,Nvl(tvanz.multiplicator,1))
|
|
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
lnRulDupa = loForm.nTotalRulRon
|
|
|
|
DO asserteaza WITH 'fortarea in_stoc=0 pe o linie activeaza corectia (lRulAjustat=.T.)', loForm.lRulAjustat, TRANSFORM(loForm.lRulAjustat)
|
|
DO asserteaza WITH 'corectia liniei nestocate creste Total RUL exact cu valoarea liniei convertita in RON', ;
|
|
Round(lnRulDupa - lnRulInainte, 2) == Round(m.lnValoareLinie * m.lnCursDoc / m.lnMultDoc, 2), ;
|
|
TRANSFORM(m.lnRulDupa) + ' - ' + TRANSFORM(m.lnRulInainte) + ' vs asteptat ' + TRANSFORM(Round(m.lnValoareLinie * m.lnCursDoc / m.lnMultDoc, 2))
|
|
|
|
*!* --- decizia 36: un rand id_tip_rulaj=3 nu intra in Total RUL, un rand id_tip_rulaj=0 intra ---
|
|
LOCAL lnRulRef, lnDeltaRulaj, lnRecnoRulTest, lnPretvtvaTest
|
|
lnRulRef = loForm.nTotalRulRon
|
|
IF Used('trul')
|
|
SELECT trul
|
|
LOCATE FOR Nvl(id_tip_rulaj,0) = 3 AND Nvl(sters,0) = 0
|
|
IF FOUND()
|
|
lnRecnoRulTest = Recno()
|
|
REPLACE cante WITH Nvl(cante,0) + 1000
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
DO asserteaza WITH 'un rand id_tip_rulaj=3 nu modifica Total RUL (miscare virtuala, decizia 36)', loForm.nTotalRulRon == m.lnRulRef, TRANSFORM(loForm.nTotalRulRon) + ' vs referinta ' + TRANSFORM(m.lnRulRef)
|
|
SELECT trul
|
|
GO (m.lnRecnoRulTest)
|
|
REPLACE cante WITH Nvl(cante,0) - 1000
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
ELSE
|
|
STRTOFILE('AVERTISMENT: nu s-a gasit rand trul cu id_tip_rulaj=3, testul de excludere sarit' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDIF
|
|
|
|
SELECT trul
|
|
LOCATE FOR Nvl(id_tip_rulaj,0) = 0 AND Nvl(sters,0) = 0
|
|
IF FOUND()
|
|
lnRecnoRulTest = Recno()
|
|
lnPretvtvaTest = Nvl(trul.pretvtva,0)
|
|
lnRulRef = loForm.nTotalRulRon
|
|
lnDeltaRulaj = Iif(Nvl(trul.cant,0) <> 0, 1, 0)
|
|
REPLACE cant WITH Nvl(cant,0) + m.lnDeltaRulaj, cante WITH Nvl(cante,0) + (1 - m.lnDeltaRulaj)
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
DO asserteaza WITH 'un rand id_tip_rulaj=0 modifica Total RUL cu exact pretvtva (decizia 36)', ;
|
|
Round(loForm.nTotalRulRon - m.lnRulRef, 2) == Round(m.lnPretvtvaTest, 2), TRANSFORM(loForm.nTotalRulRon) + ' vs referinta ' + TRANSFORM(m.lnRulRef) + ' + pretvtva ' + TRANSFORM(m.lnPretvtvaTest)
|
|
SELECT trul
|
|
GO (m.lnRecnoRulTest)
|
|
REPLACE cant WITH Nvl(cant,0) - m.lnDeltaRulaj, cante WITH Nvl(cante,0) - (1 - m.lnDeltaRulaj)
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
ELSE
|
|
STRTOFILE('AVERTISMENT: nu s-a gasit rand trul cu id_tip_rulaj=0, testul de includere sarit' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
*!* --- decizia 37: cont de referinta pe rate/contract (tip 2,6,52) accepta 4111/411/461, nu doar 4111 ---
|
|
SELECT tact
|
|
LOCATE FOR Alltrim(Nvl(scd,'')) == '4111' AND Nvl(sters,0) = 0
|
|
IF FOUND()
|
|
LOCAL lnRecnoContTest, lcScdOriginal, lnActMulti
|
|
lnRecnoContTest = Recno()
|
|
lcScdOriginal = scd
|
|
|
|
REPLACE scd WITH '411'
|
|
loForm.nTipVanzare = 2
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
lnActMulti = 0
|
|
SELECT tact
|
|
SCAN FOR Nvl(sters,0) = 0
|
|
IF INLIST(Alltrim(Nvl(scd,'')), '4111', '411', '461')
|
|
lnActMulti = lnActMulti + Nvl(suma,0)
|
|
ELSE
|
|
IF INLIST(Alltrim(Nvl(scc,'')), '4111', '411', '461') AND !INLIST(Alltrim(Nvl(scd,'')), '5311','5314','5121','5125','5126')
|
|
lnActMulti = lnActMulti - Nvl(suma,0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDSCAN
|
|
DO asserteaza WITH 'tip=2 (rata/contract): contul 411 e acceptat alaturi de 4111/461 (decizia 37)', loForm.nTotalActRon == Round(m.lnActMulti,2), TRANSFORM(loForm.nTotalActRon) + ' vs manual ' + TRANSFORM(Round(m.lnActMulti,2))
|
|
|
|
SELECT tact
|
|
GO (m.lnRecnoContTest)
|
|
REPLACE scd WITH '461'
|
|
loForm.nTipVanzare = 6
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
lnActMulti = 0
|
|
SELECT tact
|
|
SCAN FOR Nvl(sters,0) = 0
|
|
IF INLIST(Alltrim(Nvl(scd,'')), '4111', '411', '461')
|
|
lnActMulti = lnActMulti + Nvl(suma,0)
|
|
ELSE
|
|
IF INLIST(Alltrim(Nvl(scc,'')), '4111', '411', '461') AND !INLIST(Alltrim(Nvl(scd,'')), '5311','5314','5121','5125','5126')
|
|
lnActMulti = lnActMulti - Nvl(suma,0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDSCAN
|
|
DO asserteaza WITH 'tip=6 (rata/contract): contul 461 e acceptat alaturi de 4111/411 (decizia 37)', loForm.nTotalActRon == Round(m.lnActMulti,2), TRANSFORM(loForm.nTotalActRon) + ' vs manual ' + TRANSFORM(Round(m.lnActMulti,2))
|
|
|
|
*!* pe un tip fara rata, contul ramane strict 4111 - randul mutat pe 461 nu mai intra in suma
|
|
SELECT tact
|
|
GO (m.lnRecnoContTest)
|
|
loForm.nTipVanzare = 1
|
|
loForm.ActualizeazaBaraTotaluri()
|
|
lnActMulti = 0
|
|
SELECT tact
|
|
SCAN FOR Nvl(sters,0) = 0
|
|
IF Alltrim(Nvl(scd,'')) == '4111'
|
|
lnActMulti = lnActMulti + Nvl(suma,0)
|
|
ELSE
|
|
IF Alltrim(Nvl(scc,'')) == '4111' AND !INLIST(Alltrim(Nvl(scd,'')), '5311','5314','5121','5125','5126')
|
|
lnActMulti = lnActMulti - Nvl(suma,0)
|
|
ENDIF
|
|
ENDIF
|
|
ENDSCAN
|
|
DO asserteaza WITH 'tip=1 (factura obisnuita): contul ramane strict 4111, randul mutat pe 461 nu mai intra in suma', loForm.nTotalActRon == Round(m.lnActMulti,2), TRANSFORM(loForm.nTotalActRon) + ' vs manual ' + TRANSFORM(Round(m.lnActMulti,2))
|
|
|
|
SELECT tact
|
|
GO (m.lnRecnoContTest)
|
|
REPLACE scd WITH m.lcScdOriginal
|
|
ELSE
|
|
STRTOFILE('AVERTISMENT: nu s-a gasit rand ACT cu scd=4111, testul decizia 37 sarit' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDIF
|
|
|
|
STRTOFILE('REZULTAT: ' + TRANSFORM(gnPass) + ' PASS / ' + TRANSFORM(gnFail) + ' FAIL' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
|
|
loForm.Release()
|
|
|
|
IF Used('actactan')
|
|
Use In actactan
|
|
ENDIF
|
|
IF Used('tact')
|
|
Use In tact
|
|
ENDIF
|
|
IF Used('rul_temp')
|
|
Use In rul_temp
|
|
ENDIF
|
|
IF Used('trul')
|
|
Use In trul
|
|
ENDIF
|
|
IF Used('rul_temp_obinv')
|
|
Use In rul_temp_obinv
|
|
ENDIF
|
|
IF Used('trul_obinv')
|
|
Use In trul_obinv
|
|
ENDIF
|
|
IF Used('tvanz')
|
|
Use In tvanz
|
|
ENDIF
|
|
IF Used('tvd')
|
|
Use In tvd
|
|
ENDIF
|
|
|
|
QUIT
|
|
|
|
|
|
PROCEDURE asserteaza
|
|
LPARAMETERS tcNume, tlConditie, tcValoare
|
|
|
|
IF m.tlConditie
|
|
gnPass = gnPass + 1
|
|
STRTOFILE('PASS ' + m.tcNume + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ELSE
|
|
gnFail = gnFail + 1
|
|
STRTOFILE('FAIL ' + m.tcNume + ' (valoare: ' + m.tcValoare + ')' + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDIF
|
|
ENDPROC
|
|
|
|
|
|
PROCEDURE test_error_handler
|
|
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
|
|
|
STRTOFILE('EROARE ' + TRANSFORM(tnError) + ' [' + tcProgram + ':' + TRANSFORM(tnLineNo) + '] ' + tcMessage + CHR(13) + CHR(10), gcErrLog, 1)
|
|
ENDPROC
|