Borderoul tine per factura ce mai are de completat si daca are articole de gestiune (camp gest, coloana si filtru), coada contabilizeaza in serie facturile bifate si incheie cu un rezumat, iar contul de furnizor/client se alege din planul de conturi. Cheia normalizata de articol, rezolvarea automata a partenerului si anularea in bloc intra tot aici. Pozitia in lista se pastreaza peste reaplicarea filtrului. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Aroafxp4z8bmM5oVECZRXY
390 lines
22 KiB
Plaintext
390 lines
22 KiB
Plaintext
* test_coada_contabilizare_ef.prg
|
|
* Teste CoadaContabilizareEF (COMUN\programe\coada_contabilizare_ef.prg), fara Oracle si fara UI:
|
|
* EligibilRand, Ruta, AntetProgres, CreeazaRaport/AdaugaRaport, nPlafon, MesajPlafon,
|
|
* MesajConfirmare, MesajOprire.
|
|
*
|
|
* Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\test_coada_contabilizare_ef.prg"
|
|
* Iesire in D:\ROA\ROACONT\COMUN\utile\Teste\test_coada_contabilizare_ef_log.txt
|
|
|
|
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\ROACONT\COMUN\utile\Teste\test_coada_contabilizare_ef_log.txt"
|
|
STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog)
|
|
|
|
ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
TRY
|
|
SET PROCEDURE TO "D:\ROA\ROACONT\COMUN\programe\coada_contabilizare_ef.prg" ADDITIVE
|
|
LOCAL loCoada
|
|
loCoada = CREATEOBJECT('CoadaContabilizareEF')
|
|
DO PrLogLocal WITH 'obiect creat'
|
|
|
|
DO PrLogLocal WITH '=== EligibilRand ==='
|
|
DO PrVerificaMotiv WITH loCoada, 'luna inchisa', 0, '1234567', 1, 0, .T., 'F1', 'luna este inchisa'
|
|
DO PrVerificaMotiv WITH loCoada, 'id_fact completat', 55, '1234567', 1, 0, .F., 'F1', 'factura este deja importata in contabilitate'
|
|
DO PrVerificaMotiv WITH loCoada, 'cod fiscal gol', 0, '', 1, 0, .F., 'F1', 'eFactura nu are cod fiscal, nu se poate identifica partenerul'
|
|
DO PrVerificaMotiv WITH loCoada, 'CIF ambiguu', 0, '1234567', 2, 0, .F., 'F1', 'CIF ambiguu in ROA, alegeti partenerul manual'
|
|
DO PrVerificaMotiv WITH loCoada, 'numar fara cifre', 0, '1234567', 1, 0, .F., 'FACTURA', 'numarul documentului nu se poate deduce din FACTURA, completati-l manual'
|
|
DO PrVerificaMotiv WITH loCoada, 'eligibil', 0, '1234567', 1, 0, .F., 'ZZT-A1-C', ''
|
|
|
|
DO PrLogLocal WITH '=== Ruta ==='
|
|
IF USED('crsRutaTest')
|
|
USE IN crsRutaTest
|
|
ENDIF
|
|
CREATE CURSOR crsRutaTest (in_stoc N(1))
|
|
INSERT INTO crsRutaTest (in_stoc) VALUES (0)
|
|
INSERT INTO crsRutaTest (in_stoc) VALUES (0)
|
|
DO PrVerificaRuta WITH loCoada, 'fara linii in_stoc=1', 'crsRutaTest', 1
|
|
INSERT INTO crsRutaTest (in_stoc) VALUES (1)
|
|
DO PrVerificaRuta WITH loCoada, 'cu o linie in_stoc=1', 'crsRutaTest', 2
|
|
SELECT crsRutaTest
|
|
GO 2
|
|
loCoada.Ruta('crsRutaTest')
|
|
DO PrLogLocal WITH ' Ruta nu muta pozitia: RECNO=' + TRANSFORM(RECNO('crsRutaTest')) + ' EOF=' + TRANSFORM(EOF('crsRutaTest')) + ' asteptat RECNO=2 EOF=.F. ' + ;
|
|
IIF(RECNO('crsRutaTest') = 2 AND !EOF('crsRutaTest'), 'OK', 'FAIL')
|
|
USE IN crsRutaTest
|
|
|
|
DO PrLogLocal WITH '=== AntetProgres ==='
|
|
LOCAL lcAntet, lcAsteptat
|
|
lcAntet = loCoada.AntetProgres(3, 10, 'FURNIZOR TEST SRL', 'FF 123/2026', 1234.5)
|
|
lcAsteptat = 'Factura 3 din 10 - FURNIZOR TEST SRL - FF 123/2026 - 1,234.50 lei (ESC opreste coada dupa documentul curent)'
|
|
DO PrLogLocal WITH ' obtinut =[' + m.lcAntet + ']'
|
|
DO PrLogLocal WITH ' asteptat=[' + m.lcAsteptat + '] ' + IIF(m.lcAntet == m.lcAsteptat, 'OK', 'FAIL')
|
|
|
|
DO PrLogLocal WITH '=== nPlafon (implicit) ==='
|
|
DO PrLogLocal WITH ' nPlafon=' + TRANSFORM(loCoada.nPlafon) + ' asteptat=50 ' + IIF(loCoada.nPlafon = 50, 'OK', 'FAIL')
|
|
|
|
DO PrLogLocal WITH '=== MesajPlafon ==='
|
|
LOCAL lcMesaj
|
|
lcMesaj = loCoada.MesajPlafon(75)
|
|
DO PrLogLocal WITH ' obtinut=[' + m.lcMesaj + ']'
|
|
DO PrLogLocal WITH ' contine "75" ' + IIF('75' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' contine plafonul "50" ' + IIF('50' $ m.lcMesaj, 'OK', 'FAIL')
|
|
|
|
DO PrLogLocal WITH '=== MesajConfirmare ==='
|
|
lcMesaj = loCoada.MesajConfirmare(12)
|
|
DO PrLogLocal WITH ' obtinut=[' + m.lcMesaj + ']'
|
|
DO PrLogLocal WITH ' contine "12" ' + IIF('12' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' contine "ESC" ' + IIF('ESC' $ m.lcMesaj, 'OK', 'FAIL')
|
|
|
|
DO PrLogLocal WITH '=== MesajOprire ==='
|
|
lcMesaj = loCoada.MesajOprire(7)
|
|
DO PrLogLocal WITH ' obtinut=[' + m.lcMesaj + ']'
|
|
DO PrLogLocal WITH ' contine "7" ' + IIF('7' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' contine "ESC" ' + IIF('ESC' $ m.lcMesaj, 'OK', 'FAIL')
|
|
|
|
DO PrLogLocal WITH '=== MesajOprire cu cauza ==='
|
|
lcMesaj = loCoada.MesajOprire(4, 'dupa un document nereusit')
|
|
DO PrLogLocal WITH ' obtinut=[' + m.lcMesaj + ']'
|
|
DO PrLogLocal WITH ' contine cauza ' + IIF('dupa un document nereusit' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' nu mai spune ESC ' + IIF(!('ESC' $ m.lcMesaj), 'OK', 'FAIL')
|
|
|
|
DO PrLogLocal WITH '=== MesajContinuare ==='
|
|
lcMesaj = loCoada.MesajContinuare('numar document lipsa', 4)
|
|
DO PrLogLocal WITH ' obtinut=[' + m.lcMesaj + ']'
|
|
DO PrLogLocal WITH ' contine motivul ' + IIF('numar document lipsa' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' contine cate raman ' + IIF('4' $ m.lcMesaj, 'OK', 'FAIL')
|
|
|
|
DO PrLogLocal WITH '=== decizie plafon (sub/peste prag) ==='
|
|
DO PrLogLocal WITH ' 49 <= nPlafon(50) ' + IIF(49 <= loCoada.nPlafon, 'OK (nu se refuza)', 'FAIL')
|
|
DO PrLogLocal WITH ' 50 <= nPlafon(50) ' + IIF(50 <= loCoada.nPlafon, 'OK (nu se refuza, plafon inclusiv)', 'FAIL')
|
|
DO PrLogLocal WITH ' 51 > nPlafon(50) ' + IIF(51 > loCoada.nPlafon, 'OK (se refuza)', 'FAIL')
|
|
|
|
DO PrLogLocal WITH '=== CreeazaRaport / AdaugaRaport ==='
|
|
loCoada.CreeazaRaport()
|
|
DO PrLogLocal WITH ' dupa CreeazaRaport: used=' + TRANSFORM(USED('crsCoadaRaport')) + ' reccount=' + TRANSFORM(RECCOUNT('crsCoadaRaport'))
|
|
loCoada.AdaugaRaport(101, 'FF 001', 'FURNIZOR UNU', 'OK', '')
|
|
loCoada.AdaugaRaport(102, 'FF 002', 'FURNIZOR DOI', 'EROARE', 'motiv test')
|
|
DO PrLogLocal WITH ' dupa 2x AdaugaRaport: reccount=' + TRANSFORM(RECCOUNT('crsCoadaRaport')) + ;
|
|
' asteptat=2 ' + IIF(RECCOUNT('crsCoadaRaport') = 2, 'OK', 'FAIL')
|
|
SELECT crsCoadaRaport
|
|
GO 1
|
|
DO PrLogLocal WITH ' rand1: id_efactura=' + TRANSFORM(id_efactura) + ' numar_act=[' + TRANSFORM(numar_act) + ']' + ;
|
|
' furnizor=[' + TRANSFORM(furnizor) + '] stare=[' + TRANSFORM(stare) + '] motiv=[' + TRANSFORM(motiv) + ']'
|
|
DO PrLogLocal WITH ' rand1 ' + IIF(id_efactura = 101 AND ALLTRIM(numar_act) == 'FF 001' AND ALLTRIM(stare) == 'OK', 'OK', 'FAIL')
|
|
GO 2
|
|
DO PrLogLocal WITH ' rand2: id_efactura=' + TRANSFORM(id_efactura) + ' numar_act=[' + TRANSFORM(numar_act) + ']' + ;
|
|
' furnizor=[' + TRANSFORM(furnizor) + '] stare=[' + TRANSFORM(stare) + '] motiv=[' + TRANSFORM(motiv) + ']'
|
|
DO PrLogLocal WITH ' rand2 ' + IIF(id_efactura = 102 AND ALLTRIM(numar_act) == 'FF 002' AND ALLTRIM(stare) == 'EROARE' AND ALLTRIM(motiv) == 'motiv test', 'OK', 'FAIL')
|
|
USE IN crsCoadaRaport
|
|
|
|
DO PrLogLocal WITH '=== TextDeCompletat (cont/gestiune/analitic) ==='
|
|
DO PrVerificaText WITH loCoada, 'toate trei', 2, 1, 3, '2 cont 1 gest. 3 analitic'
|
|
DO PrVerificaText WITH loCoada, 'doar analitic', 0, 0, 5, '5 analitic'
|
|
DO PrVerificaText WITH loCoada, 'cont + analitic, fara gestiune', 1, 0, 2, '1 cont 2 analitic'
|
|
DO PrVerificaText WITH loCoada, 'niciuna', 0, 0, 0, ''
|
|
|
|
DO PrLogLocal WITH '=== AplicaLipsuriLista + ContorBifate (nGata/nTotal) ==='
|
|
DO TestAplicaLipsuriLista WITH loCoada
|
|
DO TestContorGata WITH loCoada
|
|
|
|
DO PrLogLocal WITH '=== MesajRaport ==='
|
|
DO TestMesajRaport WITH loCoada
|
|
|
|
DO PrLogLocal WITH 'TOTAL: test terminat fara exceptie'
|
|
CATCH TO loEx
|
|
DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ') ' + loEx.Procedure
|
|
ENDTRY
|
|
|
|
QUIT
|
|
|
|
**********************************************************
|
|
PROCEDURE PrVerificaMotiv
|
|
LPARAMETERS toCoada, tcEticheta, tnIdFact, tcCodFiscal, tnActivi, tnInactivi, tlLunaInchisa, tcNumarAct, tcAsteptat
|
|
LOCAL lcMotiv
|
|
lcMotiv = toCoada.EligibilRand(m.tnIdFact, m.tcCodFiscal, m.tnActivi, m.tnInactivi, m.tlLunaInchisa, m.tcNumarAct)
|
|
DO PrLogLocal WITH ' ' + tcEticheta + ': obtinut=[' + m.lcMotiv + '] asteptat=[' + m.tcAsteptat + '] ' + ;
|
|
IIF(m.lcMotiv == m.tcAsteptat, 'OK', 'FAIL')
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrVerificaText
|
|
LPARAMETERS toCoada, tcEticheta, tnArticole, tnGestiuni, tnAnalitic, tcAsteptat
|
|
LOCAL lcText
|
|
lcText = toCoada.TextDeCompletat(m.tnArticole, m.tnGestiuni, m.tnAnalitic)
|
|
DO PrLogLocal WITH ' ' + tcEticheta + ': obtinut=[' + m.lcText + '] asteptat=[' + m.tcAsteptat + '] ' + ;
|
|
IIF(m.lcText == m.tcAsteptat, 'OK', 'FAIL')
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrVerificaRuta
|
|
LPARAMETERS toCoada, tcEticheta, tcAliasDetalii, tnAsteptat
|
|
LOCAL lnRuta
|
|
lnRuta = toCoada.Ruta(m.tcAliasDetalii)
|
|
DO PrLogLocal WITH ' ' + tcEticheta + ': obtinut=' + TRANSFORM(m.lnRuta) + ' asteptat=' + TRANSFORM(m.tnAsteptat) + ' ' + ;
|
|
IIF(m.lnRuta = m.tnAsteptat, 'OK', 'FAIL')
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
* AplicaLipsuriLista: cont implicit / gestiune implicita / optiuni de completare stinse / rand
|
|
* deja blocat de MarcheazaEligibilitate (motiv nu se suprascrie) - fiecare caz pe cursorul lui,
|
|
* cu propriul set de parametri (AplicaLipsuriLista ruleaza cu un singur set de optiuni per apel)
|
|
PROCEDURE TestAplicaLipsuriLista
|
|
LPARAMETERS toCoada
|
|
|
|
IF USED('crsAF')
|
|
USE IN crsAF
|
|
ENDIF
|
|
IF USED('crsAL')
|
|
USE IN crsAL
|
|
ENDIF
|
|
|
|
* A: cont implicit configurat - lnArticole devine 0 indiferent de tlCompleteazaCont; fara_analitic
|
|
* se aplica neconditionat (nu e zerouit de tcContImplicit)
|
|
CREATE CURSOR crsAF (id N(20), ales N(1), eligibil_lot N(1), motiv_lot V(120), de_completat V(200), gest C(1))
|
|
INSERT INTO crsAF (id, ales, eligibil_lot, motiv_lot, de_completat, gest) VALUES (1, 1, 1, '', '', '')
|
|
CREATE CURSOR crsAL (id_efactura N(20), fara_cont_catalog N(6), fara_cont_orice N(6), stoc_fara_gestiune N(6), stoc_total N(6), fara_analitic N(6))
|
|
INSERT INTO crsAL (id_efactura, fara_cont_catalog, fara_cont_orice, stoc_fara_gestiune, stoc_total, fara_analitic) VALUES (1, 3, 1, 0, 2, 4)
|
|
SELECT crsAL
|
|
INDEX ON id_efactura TAG idefact
|
|
toCoada.AplicaLipsuriLista('crsAF', 'crsAL', '401', 0, .F., .F.)
|
|
SELECT crsAF
|
|
LOCATE FOR id = 1
|
|
DO PrLogLocal WITH ' A cont implicit: de_completat=[' + ALLTRIM(de_completat) + '] asteptat=[2 gest. 4 analitic] ' + ;
|
|
IIF(ALLTRIM(de_completat) == '2 gest. 4 analitic' AND eligibil_lot = 0 AND ales = 0, 'OK', 'FAIL')
|
|
USE IN crsAF
|
|
USE IN crsAL
|
|
|
|
* B: gestiune implicita configurata - lnGestiuni devine 0 indiferent de tlCompleteazaGestiune;
|
|
* fara_analitic 0 - textul ramane gol
|
|
CREATE CURSOR crsAF (id N(20), ales N(1), eligibil_lot N(1), motiv_lot V(120), de_completat V(200), gest C(1))
|
|
INSERT INTO crsAF (id, ales, eligibil_lot, motiv_lot, de_completat, gest) VALUES (2, 0, 1, '', '', '')
|
|
CREATE CURSOR crsAL (id_efactura N(20), fara_cont_catalog N(6), fara_cont_orice N(6), stoc_fara_gestiune N(6), stoc_total N(6), fara_analitic N(6))
|
|
INSERT INTO crsAL (id_efactura, fara_cont_catalog, fara_cont_orice, stoc_fara_gestiune, stoc_total, fara_analitic) VALUES (2, 1, 0, 4, 6, 0)
|
|
SELECT crsAL
|
|
INDEX ON id_efactura TAG idefact
|
|
toCoada.AplicaLipsuriLista('crsAF', 'crsAL', '', 55, .T., .T.)
|
|
SELECT crsAF
|
|
LOCATE FOR id = 2
|
|
DO PrLogLocal WITH ' B gestiune implicita: de_completat=[' + ALLTRIM(de_completat) + '] asteptat=[] ' + ;
|
|
IIF(EMPTY(ALLTRIM(de_completat)) AND eligibil_lot = 1, 'OK', 'FAIL')
|
|
USE IN crsAF
|
|
USE IN crsAL
|
|
|
|
* C: optiunile de completare stinse, fara implicite - conturi=fara_cont_catalog, gestiuni=stoc_total,
|
|
* analitic=fara_analitic, toate trei in text
|
|
CREATE CURSOR crsAF (id N(20), ales N(1), eligibil_lot N(1), motiv_lot V(120), de_completat V(200), gest C(1))
|
|
INSERT INTO crsAF (id, ales, eligibil_lot, motiv_lot, de_completat, gest) VALUES (3, 1, 1, '', '', '')
|
|
CREATE CURSOR crsAL (id_efactura N(20), fara_cont_catalog N(6), fara_cont_orice N(6), stoc_fara_gestiune N(6), stoc_total N(6), fara_analitic N(6))
|
|
INSERT INTO crsAL (id_efactura, fara_cont_catalog, fara_cont_orice, stoc_fara_gestiune, stoc_total, fara_analitic) VALUES (3, 2, 0, 1, 5, 7)
|
|
SELECT crsAL
|
|
INDEX ON id_efactura TAG idefact
|
|
toCoada.AplicaLipsuriLista('crsAF', 'crsAL', '', 0, .F., .F.)
|
|
SELECT crsAF
|
|
LOCATE FOR id = 3
|
|
DO PrLogLocal WITH ' C optiuni stinse: de_completat=[' + ALLTRIM(de_completat) + '] asteptat=[2 cont 5 gest. 7 analitic] ' + ;
|
|
IIF(ALLTRIM(de_completat) == '2 cont 5 gest. 7 analitic' AND eligibil_lot = 0, 'OK', 'FAIL')
|
|
USE IN crsAF
|
|
USE IN crsAL
|
|
|
|
* D: rand deja blocat de MarcheazaEligibilitate (CIF ambiguu) - motiv nu se suprascrie, chiar cu
|
|
* lipsuri nevide; rand blocat DIN lipsuri se redeschide cand lipsurile dispar; factura fara linii
|
|
* (fara rand in crsAL) nu are nimic de completat
|
|
CREATE CURSOR crsAF (id N(20), ales N(1), eligibil_lot N(1), motiv_lot V(120), de_completat V(200), gest C(1))
|
|
INSERT INTO crsAF (id, ales, eligibil_lot, motiv_lot, de_completat, gest) VALUES (4, 0, 0, 'CIF ambiguu in ROA, alegeti partenerul manual', '', '')
|
|
INSERT INTO crsAF (id, ales, eligibil_lot, motiv_lot, de_completat, gest) VALUES (5, 0, 0, 'de completat: 1 cont', '', '')
|
|
INSERT INTO crsAF (id, ales, eligibil_lot, motiv_lot, de_completat, gest) VALUES (6, 1, 1, '', '', '')
|
|
CREATE CURSOR crsAL (id_efactura N(20), fara_cont_catalog N(6), fara_cont_orice N(6), stoc_fara_gestiune N(6), stoc_total N(6), fara_analitic N(6))
|
|
INSERT INTO crsAL (id_efactura, fara_cont_catalog, fara_cont_orice, stoc_fara_gestiune, stoc_total, fara_analitic) VALUES (4, 1, 1, 0, 0, 0)
|
|
INSERT INTO crsAL (id_efactura, fara_cont_catalog, fara_cont_orice, stoc_fara_gestiune, stoc_total, fara_analitic) VALUES (5, 0, 0, 0, 0, 0)
|
|
SELECT crsAL
|
|
INDEX ON id_efactura TAG idefact
|
|
toCoada.AplicaLipsuriLista('crsAF', 'crsAL', '', 0, .T., .T.)
|
|
SELECT crsAF
|
|
LOCATE FOR id = 4
|
|
DO PrLogLocal WITH ' D CIF ambiguu, lipsuri nevide: motiv_lot=[' + ALLTRIM(motiv_lot) + '] de_completat=[' + ALLTRIM(de_completat) + '] ' + ;
|
|
IIF(ALLTRIM(motiv_lot) == 'CIF ambiguu in ROA, alegeti partenerul manual' AND eligibil_lot = 0 AND !EMPTY(ALLTRIM(de_completat)), 'OK - motiv pastrat', 'FAIL')
|
|
LOCATE FOR id = 5
|
|
DO PrLogLocal WITH ' D redeschidere, lipsuri disparute: eligibil_lot=' + TRANSFORM(eligibil_lot) + ' motiv_lot=[' + ALLTRIM(motiv_lot) + '] ' + ;
|
|
IIF(eligibil_lot = 1 AND EMPTY(ALLTRIM(motiv_lot)), 'OK', 'FAIL')
|
|
LOCATE FOR id = 6
|
|
DO PrLogLocal WITH ' D factura fara linii (fara rand in crsAL): de_completat=[' + ALLTRIM(de_completat) + '] ' + ;
|
|
IIF(EMPTY(ALLTRIM(de_completat)) AND eligibil_lot = 1, 'OK', 'FAIL')
|
|
USE IN crsAF
|
|
USE IN crsAL
|
|
|
|
* E: populare gest - 'G' cand stoc_total > 0 in crsAL, '' cand stoc_total = 0, '' cand factura
|
|
* nu e gasita in crsAL
|
|
CREATE CURSOR crsAF (id N(20), ales N(1), eligibil_lot N(1), motiv_lot V(120), de_completat V(200), gest C(1))
|
|
INSERT INTO crsAF (id, ales, eligibil_lot, motiv_lot, de_completat, gest) VALUES (7, 1, 1, '', '', '')
|
|
INSERT INTO crsAF (id, ales, eligibil_lot, motiv_lot, de_completat, gest) VALUES (8, 1, 1, '', '', '')
|
|
INSERT INTO crsAF (id, ales, eligibil_lot, motiv_lot, de_completat, gest) VALUES (9, 1, 1, '', '', '')
|
|
CREATE CURSOR crsAL (id_efactura N(20), fara_cont_catalog N(6), fara_cont_orice N(6), stoc_fara_gestiune N(6), stoc_total N(6), fara_analitic N(6))
|
|
INSERT INTO crsAL (id_efactura, fara_cont_catalog, fara_cont_orice, stoc_fara_gestiune, stoc_total, fara_analitic) VALUES (7, 0, 0, 0, 3, 0)
|
|
INSERT INTO crsAL (id_efactura, fara_cont_catalog, fara_cont_orice, stoc_fara_gestiune, stoc_total, fara_analitic) VALUES (8, 0, 0, 0, 0, 0)
|
|
SELECT crsAL
|
|
INDEX ON id_efactura TAG idefact
|
|
toCoada.AplicaLipsuriLista('crsAF', 'crsAL', '', 0, .F., .F.)
|
|
SELECT crsAF
|
|
LOCATE FOR id = 7
|
|
DO PrLogLocal WITH ' E gest cu stoc_total>0: gest=[' + ALLTRIM(gest) + '] ' + IIF(ALLTRIM(gest) == 'G', 'OK', 'FAIL')
|
|
LOCATE FOR id = 8
|
|
DO PrLogLocal WITH ' E gest cu stoc_total=0: gest=[' + ALLTRIM(gest) + '] ' + IIF(EMPTY(ALLTRIM(gest)), 'OK', 'FAIL')
|
|
LOCATE FOR id = 9
|
|
DO PrLogLocal WITH ' E gest factura fara rand in crsAL: gest=[' + ALLTRIM(gest) + '] ' + IIF(EMPTY(ALLTRIM(gest)), 'OK', 'FAIL')
|
|
USE IN crsAF
|
|
USE IN crsAL
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
* ContorBifate: nGata (eligibile si neimportate) / nTotal (tot cursorul), indiferent de bifa;
|
|
* nGestiune numara randurile cu gest nevid
|
|
PROCEDURE TestContorGata
|
|
LPARAMETERS toCoada
|
|
|
|
IF USED('crsCG')
|
|
USE IN crsCG
|
|
ENDIF
|
|
CREATE CURSOR crsCG (id N(20), ales N(1), eligibil_lot N(1), id_fact N(20), total_cu_tva N(16,2), gest C(1))
|
|
INSERT INTO crsCG (id, ales, eligibil_lot, id_fact, total_cu_tva, gest) VALUES (1, 0, 1, 0, 100, '')
|
|
INSERT INTO crsCG (id, ales, eligibil_lot, id_fact, total_cu_tva, gest) VALUES (2, 1, 1, 0, 200, '')
|
|
INSERT INTO crsCG (id, ales, eligibil_lot, id_fact, total_cu_tva, gest) VALUES (3, 0, 0, 0, 300, '')
|
|
INSERT INTO crsCG (id, ales, eligibil_lot, id_fact, total_cu_tva, gest) VALUES (4, 1, 1, 100, 400, '')
|
|
INSERT INTO crsCG (id, ales, eligibil_lot, id_fact, total_cu_tva, gest) VALUES (5, 1, 0, 0, 500, '')
|
|
LOCAL loContor
|
|
loContor = toCoada.ContorBifate('crsCG')
|
|
DO PrLogLocal WITH ' nTotal=' + TRANSFORM(loContor.nTotal) + ' asteptat=5 ' + IIF(loContor.nTotal = 5, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' nGata=' + TRANSFORM(loContor.nGata) + ' asteptat=2 ' + IIF(loContor.nGata = 2, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' nBifate=' + TRANSFORM(loContor.nBifate) + ' asteptat=3 ' + IIF(loContor.nBifate = 3, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' nGestiune (gest gol)=' + TRANSFORM(loContor.nGestiune) + ' asteptat=0 ' + IIF(loContor.nGestiune = 0, 'OK', 'FAIL')
|
|
USE IN crsCG
|
|
|
|
IF USED('crsCG2')
|
|
USE IN crsCG2
|
|
ENDIF
|
|
CREATE CURSOR crsCG2 (id N(20), ales N(1), eligibil_lot N(1), id_fact N(20), total_cu_tva N(16,2), gest C(1))
|
|
INSERT INTO crsCG2 (id, ales, eligibil_lot, id_fact, total_cu_tva, gest) VALUES (1, 0, 1, 0, 100, 'G')
|
|
INSERT INTO crsCG2 (id, ales, eligibil_lot, id_fact, total_cu_tva, gest) VALUES (2, 1, 1, 0, 200, '')
|
|
INSERT INTO crsCG2 (id, ales, eligibil_lot, id_fact, total_cu_tva, gest) VALUES (3, 0, 0, 0, 300, 'G')
|
|
loContor = toCoada.ContorBifate('crsCG2')
|
|
DO PrLogLocal WITH ' nGestiune (cu coloana gest)=' + TRANSFORM(loContor.nGestiune) + ' asteptat=2 ' + IIF(loContor.nGestiune = 2, 'OK', 'FAIL')
|
|
USE IN crsCG2
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
* MesajRaport: cursor gol, toate OK, combinatie OK/SARIT/ESEC, plafon de 15 documente listate,
|
|
* rand OPRIT
|
|
PROCEDURE TestMesajRaport
|
|
LPARAMETERS toCoada
|
|
|
|
LOCAL lcMesaj, lnI
|
|
|
|
toCoada.CreeazaRaport()
|
|
lcMesaj = toCoada.MesajRaport()
|
|
DO PrLogLocal WITH ' gol: obtinut=[' + m.lcMesaj + ']'
|
|
DO PrLogLocal WITH ' gol: "0 facturi" ' + IIF('0 facturi' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' gol: fara bloc probleme ' + IIF(!('Nu s-au contabilizat' $ m.lcMesaj), 'OK', 'FAIL')
|
|
USE IN crsCoadaRaport
|
|
|
|
toCoada.CreeazaRaport()
|
|
toCoada.AdaugaRaport(1, 'FF 1', 'ALFA SRL', 'OK', '')
|
|
toCoada.AdaugaRaport(2, 'FF 2', 'BETA SRL', 'OK', '')
|
|
toCoada.AdaugaRaport(3, 'FF 3', 'GAMA SRL', 'OK', '')
|
|
lcMesaj = toCoada.MesajRaport()
|
|
DO PrLogLocal WITH ' toate OK: obtinut=[' + m.lcMesaj + ']'
|
|
DO PrLogLocal WITH ' toate OK: "3 facturi" ' + IIF('3 facturi' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' toate OK: "Contabilizate : 3" ' + IIF('Contabilizate : 3' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' toate OK: fara bloc probleme ' + IIF(!('Nu s-au contabilizat' $ m.lcMesaj), 'OK', 'FAIL')
|
|
USE IN crsCoadaRaport
|
|
|
|
toCoada.CreeazaRaport()
|
|
toCoada.AdaugaRaport(1234, 'FDI 1234', 'ALFA SRL', 'OK', '')
|
|
toCoada.AdaugaRaport(4455, '4455', 'BETA SRL', 'SARIT', 'CIF ambiguu in ROA')
|
|
toCoada.AdaugaRaport(77, 'FF 77', 'GAMA SRL', 'ESEC', 'eroare: contul 628.01 nu exista')
|
|
lcMesaj = toCoada.MesajRaport()
|
|
DO PrLogLocal WITH ' combinatie: obtinut=[' + m.lcMesaj + ']'
|
|
DO PrLogLocal WITH ' combinatie: "3 facturi" ' + IIF('3 facturi' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' combinatie: "Contabilizate : 1" ' + IIF('Contabilizate : 1' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' combinatie: "Sarite : 1" ' + IIF('Sarite : 1' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' combinatie: "Nereusite : 1" ' + IIF('Nereusite : 1' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' combinatie: linia BETA ' + IIF('4455 / BETA SRL' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' combinatie: motiv BETA ' + IIF('CIF ambiguu in ROA' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' combinatie: motiv GAMA ' + IIF('eroare: contul 628.01 nu exista' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' combinatie: fara ALFA in bloc probleme ' + IIF(!('FDI 1234' $ m.lcMesaj), 'OK', 'FAIL')
|
|
USE IN crsCoadaRaport
|
|
|
|
toCoada.CreeazaRaport()
|
|
FOR lnI = 1 TO 20
|
|
toCoada.AdaugaRaport(m.lnI, 'FF ' + TRANSFORM(m.lnI), 'FURNIZOR ' + TRANSFORM(m.lnI), 'SARIT', 'de completat: 1 cont')
|
|
ENDFOR
|
|
lcMesaj = toCoada.MesajRaport()
|
|
DO PrLogLocal WITH ' plafon: "si inca 5" ' + IIF('si inca 5.' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' plafon: contine FF 15 ' + IIF('FF 15' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' plafon: nu contine FF 16 ' + IIF(!('FF 16 ' $ m.lcMesaj), 'OK', 'FAIL')
|
|
USE IN crsCoadaRaport
|
|
|
|
toCoada.CreeazaRaport()
|
|
toCoada.AdaugaRaport(1, 'FF 1', 'ALFA SRL', 'OK', '')
|
|
toCoada.AdaugaRaport(2, 'FF 2', 'BETA SRL', 'SARIT', 'de completat: 1 cont')
|
|
toCoada.AdaugaRaport(0, '', '', 'OPRIT', 'operatorul a oprit coada cu ESC - 3 facturi bifate raman neprocesate')
|
|
lcMesaj = toCoada.MesajRaport()
|
|
DO PrLogLocal WITH ' oprit: obtinut=[' + m.lcMesaj + ']'
|
|
DO PrLogLocal WITH ' oprit: "2 facturi" (fara randul OPRIT) ' + IIF('2 facturi' $ m.lcMesaj, 'OK', 'FAIL')
|
|
DO PrLogLocal WITH ' oprit: motivul apare ' + IIF('operatorul a oprit coada cu ESC - 3 facturi bifate raman neprocesate' $ m.lcMesaj, 'OK', 'FAIL')
|
|
USE IN crsCoadaRaport
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrLogLocal
|
|
LPARAMETERS tcMsg
|
|
LOCAL lcL
|
|
SET SAFETY OFF
|
|
lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '')
|
|
STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcUILog)
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE PrErrLocal
|
|
LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo
|
|
DO PrLogLocal WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo)
|
|
ENDPROC
|