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
78 lines
2.8 KiB
Plaintext
78 lines
2.8 KiB
Plaintext
* optiuni_test.prg
|
|
* Salvarea si restaurarea randurilor din OPTIUNI atinse de teste. Testele scriu si sterg optiuni
|
|
* reale pe schema de test; fara restaurare, schema ramane fara ele si aplicatia porneste dupa
|
|
* comportamentul implicit.
|
|
* SalveazaOptiuni('A,B') la inceputul testului, RestaureazaOptiuni() la final: optiunile care
|
|
* existau isi recapata valoarea, tipul si descrierea; cele create de test se sterg.
|
|
|
|
PROCEDURE SalveazaOptiuni
|
|
LPARAMETERS tcListaVarname
|
|
|
|
IF TYPE('gcOptiuniTestIn') <> 'C'
|
|
PUBLIC gcOptiuniTestIn
|
|
ENDIF
|
|
gcOptiuniTestIn = "'" + STRTRAN(STRTRAN(UPPER(ALLTRIM(m.tcListaVarname)), ' ', ''), ',', "','") + "'"
|
|
|
|
IF USED('crsOptTestSalvate')
|
|
USE IN (SELECT('crsOptTestSalvate'))
|
|
ENDIF
|
|
goExecutor.oExecuta("select varname, vartype, program, varvalue, vardesc from optiuni" + ;
|
|
" where varname in (" + m.gcOptiuniTestIn + ")", 'crsOptTestBrut')
|
|
IF !USED('crsOptTestBrut')
|
|
RETURN
|
|
ENDIF
|
|
SELECT * FROM crsOptTestBrut INTO CURSOR crsOptTestSalvate READWRITE
|
|
USE IN (SELECT('crsOptTestBrut'))
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
PROCEDURE RestaureazaOptiuni
|
|
LOCAL lnSel, lcNume, lcExistente, lnCount
|
|
|
|
IF TYPE('gcOptiuniTestIn') <> 'C' OR !USED('crsOptTestSalvate')
|
|
RETURN
|
|
ENDIF
|
|
|
|
lnSel = SELECT()
|
|
lcExistente = ''
|
|
SELECT crsOptTestSalvate
|
|
SCAN
|
|
lcNume = UPPER(ALLTRIM(NVL(crsOptTestSalvate.varname, '')))
|
|
IF EMPTY(m.lcNume)
|
|
LOOP
|
|
ENDIF
|
|
lcExistente = m.lcExistente + IIF(EMPTY(m.lcExistente), '', ',') + "'" + m.lcNume + "'"
|
|
lnCount = 0
|
|
goExecutor.oSelecteaza2Value("select count(*) from optiuni where varname = '" + m.lcNume + "'", @lnCount)
|
|
IF NVL(m.lnCount, 0) > 0
|
|
goExecutor.oExecuta("update optiuni set vartype = " + SqlLit(crsOptTestSalvate.vartype) + ;
|
|
", program = " + SqlLit(crsOptTestSalvate.program) + ;
|
|
", varvalue = " + SqlLit(crsOptTestSalvate.varvalue) + ;
|
|
", vardesc = " + SqlLit(crsOptTestSalvate.vardesc) + ;
|
|
" where varname = '" + m.lcNume + "'")
|
|
ELSE
|
|
goExecutor.oExecuta("insert into optiuni (varname, vartype, program, varvalue, vardesc) values ('" + ;
|
|
m.lcNume + "', " + SqlLit(crsOptTestSalvate.vartype) + ", " + SqlLit(crsOptTestSalvate.program) + ;
|
|
", " + SqlLit(crsOptTestSalvate.varvalue) + ", " + SqlLit(crsOptTestSalvate.vardesc) + ")")
|
|
ENDIF
|
|
ENDSCAN
|
|
|
|
* optiunile cerute care lipseau inainte de test au fost create de el
|
|
goExecutor.oExecuta("delete from optiuni where varname in (" + m.gcOptiuniTestIn + ")" + ;
|
|
IIF(EMPTY(m.lcExistente), '', " and varname not in (" + m.lcExistente + ")"))
|
|
goExecutor.oExecuta('COMMIT')
|
|
|
|
SELECT (m.lnSel)
|
|
actualizeaza_optiuni()
|
|
ENDPROC
|
|
|
|
**********************************************************
|
|
FUNCTION SqlLit
|
|
LPARAMETERS tuValoare
|
|
|
|
IF ISNULL(m.tuValoare) OR EMPTY(NVL(m.tuValoare, ''))
|
|
RETURN 'null'
|
|
ENDIF
|
|
RETURN "'" + STRTRAN(ALLTRIM(m.tuValoare), "'", "''") + "'"
|
|
ENDFUNC
|