383 lines
18 KiB
Plaintext
383 lines
18 KiB
Plaintext
* probe_12b_s8_calea_2.prg
|
|
* Plan 12b, S8-4a: proba headless a caii 2 (do_adauga_articol_cautat) din frm_facturare_articole2
|
|
* (COMUN\clase\ofacturare.vc2) pentru verificarea prietenoasa D10 a contului de venit (S8-3/S8-4a).
|
|
*
|
|
* PAS 0 (dovada): pe aceasta cale, obiectul toArticol vine dintr-un Scatter Name pe crsCodmat/
|
|
* crsDenumire. Analiza statica din raportul S8-3 a citat proprietatile design-time csourcesql/
|
|
* csourcewhere de pe combosql_cautare (:17528/:17564, doar 7 coloane, fara id_pol) - dar acelea NU
|
|
* sunt folosite la rulare: refreshdata/selectdata (ofacturare.vc2:463-529) ignora total csourcesql
|
|
* si cheama This.cursor_preturi_call() (:446-461), adica {call pack_facturare.cursor_preturi(...)}
|
|
* (sau cursor_gestiune pentru tip=41) - acelasi mecanism ca la crsarticole (calea 1). Structura reala
|
|
* a cursorului (creeaza_cursor_gol :426-444, reordoneaza :498-512) INCLUDE id_pol. Asadar in cazul
|
|
* normal Type('toArticol.Id_Pol')='N' e adevarat, iar linia scrisa in crsfactura (Gather la
|
|
* ofacturare.vc2:19018) primeste chiar politica reala rezolvata de cursor_preturi pentru articolul
|
|
* respectiv - nu politica de stoc.
|
|
*
|
|
* Fix S8-4a (ofacturare.vc2:18968-18972): confirmat empiric (probe separat, Gather Name cu
|
|
* proprietate lipsa NU arunca eroare si LASA campul destinatie neschimbat, adica linia ar fi ramas
|
|
* cu Id_Pol vechi/implicit daca toArticol nu are proprietatea) ca fallback-ul gnId_pol_pret_stoc
|
|
* calculat pentru verificare (lnIdPolLinie) nu ajungea niciodata in linia scrisa cand proprietatea
|
|
* lipsea din toArticol - AddProperty(toArticol,'Id_Pol',lnIdPolLinie) inchide acest gol; e no-op
|
|
* cand Type('toArticol.Id_Pol')='N' (cazul normal, politica reala).
|
|
*
|
|
* Cazuri (fara mock goExecutor, politica de stoc cu ID_NOTA NULL in tranzactie, ROLLBACK la final):
|
|
* (a) toArticol FARA proprietatea Id_Pol, articol fara cont dedus -> do_adauga_articol_cautat = .F.,
|
|
* Reccount(crsfactura) neschimbat, spion amessagebox: mesaj continand denumirea articolului.
|
|
* (b) toArticol FARA proprietatea Id_Pol, articol CU cont dedus -> linia se adauga (Reccount+1),
|
|
* spion 0 apeluri, iar crsfactura.Id_Pol al liniei noi == gnId_pol_pret_stoc (fallback aplicat).
|
|
* (c) toArticol CU Id_Pol = o politica reala (<> politica de stoc, cu nota proprie valida) -> linia
|
|
* se adauga, crsfactura.Id_Pol al liniei noi == acea politica reala (Type='N', fix no-op,
|
|
* politica ramane cea reala, nu cea de stoc).
|
|
*
|
|
* Rulare: vfp9.exe -A -T "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\probe_12b_s8_calea_2.prg"
|
|
* Log: D:\ROA\ROAFACTURARE\docs\loguri_12b\s8_calea_2.log
|
|
|
|
SET SAFETY OFF
|
|
SET TALK OFF
|
|
SET NOTIFY OFF
|
|
SET DELETED ON
|
|
SET EXACT ON
|
|
SET CENTURY ON
|
|
SET DATE DMY
|
|
SET DECIMALS TO 4
|
|
SET NULLDISPLAY TO ''
|
|
CLOSE DATABASES
|
|
|
|
PUBLIC gcLog, gcCaz, gnPass, gnFail, gnTransOriginal
|
|
PUBLIC gcSpionMesaje, gnSpionCount
|
|
gcLog = "D:\ROA\ROAFACTURARE\docs\loguri_12b\s8_calea_2.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
|
|
gcSpionMesaje = ""
|
|
gnSpionCount = 0
|
|
ON ERROR DO AfErr WITH ERROR(), MESSAGE(), PROGRAM(), LINENO()
|
|
ON SHUTDOWN QUIT
|
|
|
|
*-- spion amessagebox: se incarca PRIMUL (inaintea aplicatiei), ca sa castige la nume duplicat
|
|
LOCAL lcProcExistent, lcCmdProc
|
|
lcProcExistent = SET("PROCEDURE")
|
|
lcCmdProc = [SET PROCEDURE TO "D:\ROA\ROAFACTURARE\COMUN\utile\Teste\facturare_unificat\probe_12b_s8_calea_2.prg"]
|
|
IF !EMPTY(lcProcExistent)
|
|
lcCmdProc = lcCmdProc + ", " + lcProcExistent
|
|
ENDIF
|
|
&lcCmdProc
|
|
|
|
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)
|
|
|
|
IF !actualizeaza_optiuni_program()
|
|
DO AfLog WITH "FAIL: actualizeaza_optiuni_program()"
|
|
DO Final
|
|
ENDIF
|
|
DO AfLog WITH "actualizeaza_optiuni_program OK, gnScadereStoc=" + TRANSFORM(NVL(gnScadereStoc, -1))
|
|
|
|
SET PATH TO "D:\ROA\ROAFACTURARE\COMUN\utile\gridextras" ADDITIVE
|
|
SET CLASSLIB TO "D:\ROA\ROAFACTURARE\COMUN\utile\gridextras\gridextras.vcx" ADDITIVE
|
|
SET CLASSLIB TO "D:\ROA\ROAFACTURARE\COMUN\clase\_cb_base.vcx" ADDITIVE
|
|
DO AfLog WITH "SET CLASSLIB suplimentar OK"
|
|
|
|
update_jtva_coloane([JV], [jtva_coloane_temp])
|
|
|
|
*==========================================================================================
|
|
* alegere date: politica de stoc curenta + articol OK (cont dedus) + articol problema (fara cont)
|
|
* + o politica reala cu nota proprie valida (caz c) - acelasi tipar ca probe_12b_s8_cai_1_3.prg /
|
|
* probe_12b_s8_verifica_linie.prg
|
|
*==========================================================================================
|
|
LOCAL lnOk, lnIdPolStoc, lnIdArtOk, lnIdArtProblema, lcDenOk, lcDenProblema, lnIdPolReal, lnIdArtReal
|
|
LOCAL llGasitOk, llGasitProblema, llGasitPolReal, llGasitArtReal
|
|
|
|
gcCaz = "[setup] "
|
|
lnOk = SQLEXEC(gnHandle, "select varvalue from optiuni where program='ROAFACTURARE' and varname='ID_POL_PRET_STOC'", "crsopt")
|
|
lnIdPolStoc = IIF(lnOk > 0 AND USED('crsopt') AND !ISNULL(crsopt.varvalue), VAL(ALLTRIM(crsopt.varvalue)), 0)
|
|
IF USED('crsopt')
|
|
USE IN crsopt
|
|
ENDIF
|
|
DO Verdict WITH lnIdPolStoc > 0, "politica de stoc citita din OPTIUNI, id_pol=" + TRANSFORM(lnIdPolStoc)
|
|
IF lnIdPolStoc <= 0
|
|
DO Final
|
|
ENDIF
|
|
PUBLIC gnId_pol_pret_stoc
|
|
gnId_pol_pret_stoc = lnIdPolStoc
|
|
|
|
* articol OK: rand al politicii de stoc, ID_NOTA propriu NULL, cont_venit_articol_stoc rezolvat
|
|
lnOk = SQLEXEC(gnHandle, ;
|
|
"select a.id_articol from crm_politici_pret_art a " + ;
|
|
"where a.id_pol = " + TRANSFORM(lnIdPolStoc) + " and a.id_nota is null " + ;
|
|
"and pack_facturare.cont_venit_articol_stoc(a.id_articol) is not null and rownum = 1", "crsok")
|
|
llGasitOk = lnOk > 0 AND USED('crsok') AND RECCOUNT('crsok') = 1
|
|
lnIdArtOk = IIF(llGasitOk, crsok.id_articol, 0)
|
|
IF USED('crsok')
|
|
USE IN crsok
|
|
ENDIF
|
|
DO AfLog WITH "articol OK ales: id_articol=" + TRANSFORM(lnIdArtOk)
|
|
|
|
* articol problema: alt rand al politicii de stoc, ID_NOTA propriu NULL, fara cont dedus
|
|
lnOk = SQLEXEC(gnHandle, ;
|
|
"select a.id_articol from crm_politici_pret_art a " + ;
|
|
"where a.id_pol = " + TRANSFORM(lnIdPolStoc) + " and a.id_nota is null " + ;
|
|
"and a.id_articol <> " + TRANSFORM(lnIdArtOk) + " " + ;
|
|
"and pack_facturare.cont_venit_articol_stoc(a.id_articol) is null and rownum = 1", "crsprob")
|
|
llGasitProblema = lnOk > 0 AND USED('crsprob') AND RECCOUNT('crsprob') = 1
|
|
lnIdArtProblema = IIF(llGasitProblema, crsprob.id_articol, 0)
|
|
IF USED('crsprob')
|
|
USE IN crsprob
|
|
ENDIF
|
|
DO AfLog WITH "articol PROBLEMA ales: id_articol=" + TRANSFORM(lnIdArtProblema)
|
|
|
|
* caz (c): o politica reala (<> politica de stoc) cu nota proprie valida (scc nenul) + un articol activ
|
|
lnOk = SQLEXEC(gnHandle, ;
|
|
"select p.id_pol from crm_politici_preturi p " + ;
|
|
"join crm_note_vanzari v on v.id_nota = p.id_nota " + ;
|
|
"join note_contabile n on n.id_set = v.id_set and n.scc is not null " + ;
|
|
"where p.id_pol <> " + TRANSFORM(lnIdPolStoc) + " and rownum = 1", "crspolreal")
|
|
llGasitPolReal = lnOk > 0 AND USED('crspolreal') AND RECCOUNT('crspolreal') = 1
|
|
lnIdPolReal = IIF(llGasitPolReal, crspolreal.id_pol, 0)
|
|
IF USED('crspolreal')
|
|
USE IN crspolreal
|
|
ENDIF
|
|
lnOk = SQLEXEC(gnHandle, "select id_articol from nom_articole where sters = 0 and rownum = 1", "crsartreal")
|
|
llGasitArtReal = lnOk > 0 AND USED('crsartreal') AND RECCOUNT('crsartreal') = 1
|
|
lnIdArtReal = IIF(llGasitArtReal, crsartreal.id_articol, 0)
|
|
IF USED('crsartreal')
|
|
USE IN crsartreal
|
|
ENDIF
|
|
DO AfLog WITH "CAZ(c) ales: id_pol_real=" + TRANSFORM(lnIdPolReal) + " id_articol=" + TRANSFORM(lnIdArtReal)
|
|
|
|
IF !llGasitOk OR !llGasitProblema OR !llGasitPolReal OR !llGasitArtReal
|
|
DO AfLog WITH "FAIL: date insuficiente in baza vie, opresc proba"
|
|
gnFail = gnFail + 1
|
|
DO Final
|
|
ENDIF
|
|
|
|
lnOk = SQLEXEC(gnHandle, "select denumire from nom_articole where id_articol = " + TRANSFORM(lnIdArtOk), "crsden1")
|
|
lcDenOk = IIF(lnOk > 0 AND USED('crsden1') AND RECCOUNT('crsden1') = 1, ALLTRIM(NVL(crsden1.denumire, [])), [<necunoscut>])
|
|
IF USED('crsden1')
|
|
USE IN crsden1
|
|
ENDIF
|
|
lnOk = SQLEXEC(gnHandle, "select denumire from nom_articole where id_articol = " + TRANSFORM(lnIdArtProblema), "crsden2")
|
|
lcDenProblema = IIF(lnOk > 0 AND USED('crsden2') AND RECCOUNT('crsden2') = 1, ALLTRIM(NVL(crsden2.denumire, [])), [<necunoscut>])
|
|
IF USED('crsden2')
|
|
USE IN crsden2
|
|
ENDIF
|
|
DO AfLog WITH "denumiri: OK=[" + lcDenOk + "] PROBLEMA=[" + lcDenProblema + "]"
|
|
|
|
* politica de stoc cu ID_NOTA NULL (tranzactie, ROLLBACK la final) - fortez ramura "fara cont dedus"
|
|
gcCaz = "[setup] "
|
|
lnOk = SQLEXEC(gnHandle, "UPDATE crm_politici_preturi SET id_nota = NULL WHERE id_pol = " + TRANSFORM(lnIdPolStoc))
|
|
DO Verdict WITH lnOk > 0, "UPDATE politica de stoc ID_NOTA=NULL (tranzactie, ROLLBACK la final) - lnOk=" + TRANSFORM(lnOk)
|
|
|
|
*==========================================================================================
|
|
* mediu formular: poDate, jtva_coloane, crsfactura gol, Createobject
|
|
*==========================================================================================
|
|
PRIVATE poDate, poGeneratorNumere
|
|
LOCAL lnIdSet
|
|
lnIdSet = 25000 + 30 - 1 + NVL(gnScadereStoc, 0) * 10
|
|
poDate = CREATEOBJECT("oDateFactura", lnIdSet, 30)
|
|
poDate.dataireg = DATE(gnAn, gnLuna, 10)
|
|
poDate.dataact = poDate.dataireg
|
|
poDate.zi_curs = poDate.dataireg
|
|
poDate.id_client = 1
|
|
poDate.nIdTipDoc = 6
|
|
poGeneratorNumere = NULL
|
|
DO AfLog WITH "poDate OK, tip=" + TRANSFORM(poDate.tip) + " id_pol=" + TRANSFORM(NVL(poDate.id_pol,-1)) + " in_valuta=" + TRANSFORM(poDate.in_valuta)
|
|
|
|
IF USED('jtva_coloane')
|
|
USE IN jtva_coloane
|
|
ENDIF
|
|
IF NVL(poDate.tva_incasare, 0) = 0
|
|
SELECT * FROM jtva_coloane_temp WHERE ISNULL(id_jtva_ex) AND !'RORTC'$UPPER(coloana_jv) INTO CURSOR jtva_coloane
|
|
ELSE
|
|
SELECT * FROM jtva_coloane_temp WHERE ISNULL(id_jtva_neex) AND !'RORTC'$UPPER(coloana_jv) INTO CURSOR jtva_coloane
|
|
ENDIF
|
|
DO AfLog WITH "jtva_coloane Reccount=" + TRANSFORM(RECCOUNT('jtva_coloane'))
|
|
|
|
DO PregatesteFacturaGoala
|
|
|
|
LOCAL loForm
|
|
loForm = CREATEOBJECT('frm_facturare_articole2')
|
|
DO Verdict WITH VARTYPE(loForm) = 'O', "Createobject frm_facturare_articole2"
|
|
IF VARTYPE(loForm) <> 'O'
|
|
DO Final
|
|
ENDIF
|
|
DO AfLog WITH "formular creat, nu afisat (fara Show())"
|
|
|
|
*==========================================================================================
|
|
* CAZ (a): toArticol fara Id_Pol, articol fara cont dedus -> refuz
|
|
*==========================================================================================
|
|
gcCaz = "[a-calea2-refuz] "
|
|
LOCAL loArticol, lnReccountInainte
|
|
|
|
loArticol = PregatesteToArticol(lnIdArtProblema, lcDenProblema, .F., 0)
|
|
lnReccountInainte = RECCOUNT('crsfactura')
|
|
gnSpionCount = 0
|
|
gcSpionMesaje = ""
|
|
|
|
LOCAL llRezA
|
|
llRezA = loForm.do_adauga_articol_cautat(loArticol, loArticol.cantitate)
|
|
|
|
DO Verdict WITH llRezA = .F., "do_adauga_articol_cautat = .F. (obtinut " + TRANSFORM(llRezA) + ")"
|
|
DO Verdict WITH RECCOUNT('crsfactura') == lnReccountInainte, ;
|
|
"Reccount(crsfactura) neschimbat (" + TRANSFORM(RECCOUNT('crsfactura')) + ", era " + TRANSFORM(lnReccountInainte) + ")"
|
|
DO Verdict WITH gnSpionCount >= 1, "spion: cel putin 1 mesaj (obtinut " + TRANSFORM(gnSpionCount) + ")"
|
|
DO Verdict WITH lcDenProblema $ gcSpionMesaje, "mesajul contine denumirea articolului [" + lcDenProblema + "] - mesaj: [" + gcSpionMesaje + "]"
|
|
|
|
*==========================================================================================
|
|
* CAZ (b): toArticol fara Id_Pol, articol CU cont dedus -> linia se adauga cu Id_Pol = politica de stoc
|
|
*==========================================================================================
|
|
gcCaz = "[b-calea2-cont-dedus] "
|
|
loArticol = PregatesteToArticol(lnIdArtOk, lcDenOk, .F., 0)
|
|
DO Verdict WITH TYPE('loArticol.Id_Pol') = 'U', "toArticol FARA proprietatea Id_Pol (Type=" + TYPE('loArticol.Id_Pol') + ")"
|
|
|
|
SELECT crsfactura
|
|
APPEND BLANK
|
|
lnReccountInainte = RECCOUNT('crsfactura')
|
|
gnSpionCount = 0
|
|
gcSpionMesaje = ""
|
|
|
|
LOCAL llRezB
|
|
llRezB = loForm.do_adauga_articol_cautat(loArticol, loArticol.cantitate)
|
|
|
|
DO Verdict WITH llRezB = .T., "do_adauga_articol_cautat = .T. (obtinut " + TRANSFORM(llRezB) + ")"
|
|
DO Verdict WITH gnSpionCount == 0, "spion: 0 mesaje (obtinut " + TRANSFORM(gnSpionCount) + ") - " + gcSpionMesaje
|
|
DO Verdict WITH VARTYPE(crsfactura.Id_Pol) = 'N' AND crsfactura.Id_Pol == gnId_pol_pret_stoc, ;
|
|
"linia noua primeste Id_Pol = politica de stoc (" + TRANSFORM(gnId_pol_pret_stoc) + ", obtinut " + TRANSFORM(NVL(crsfactura.Id_Pol,-999)) + ")"
|
|
|
|
*==========================================================================================
|
|
* CAZ (c): toArticol CU Id_Pol = politica reala (<> politica de stoc) -> linia pastreaza politica reala
|
|
*==========================================================================================
|
|
gcCaz = "[c-calea2-politica-reala] "
|
|
loArticol = PregatesteToArticol(lnIdArtReal, "articol-real", .T., lnIdPolReal)
|
|
DO Verdict WITH TYPE('loArticol.Id_Pol') = 'N' AND loArticol.Id_Pol == lnIdPolReal, ;
|
|
"toArticol.Id_Pol = politica reala aleasa (" + TRANSFORM(lnIdPolReal) + ", obtinut " + TRANSFORM(NVL(loArticol.Id_Pol,-999)) + ")"
|
|
|
|
SELECT crsfactura
|
|
APPEND BLANK
|
|
gnSpionCount = 0
|
|
gcSpionMesaje = ""
|
|
|
|
LOCAL llRezC
|
|
llRezC = loForm.do_adauga_articol_cautat(loArticol, loArticol.cantitate)
|
|
|
|
DO Verdict WITH llRezC = .T., "do_adauga_articol_cautat = .T. (obtinut " + TRANSFORM(llRezC) + ")"
|
|
DO Verdict WITH gnSpionCount == 0, "spion: 0 mesaje (obtinut " + TRANSFORM(gnSpionCount) + ") - " + gcSpionMesaje
|
|
DO Verdict WITH VARTYPE(crsfactura.Id_Pol) = 'N' AND crsfactura.Id_Pol == lnIdPolReal, ;
|
|
"linia noua pastreaza Id_Pol = politica reala (" + TRANSFORM(lnIdPolReal) + ", obtinut " + TRANSFORM(NVL(crsfactura.Id_Pol,-999)) + "), nu politica de stoc"
|
|
|
|
IF VARTYPE(loForm) = 'O' AND !ISNULL(loForm)
|
|
loForm.Release()
|
|
ENDIF
|
|
loForm = NULL
|
|
|
|
DO Final
|
|
|
|
*==================================================================================================
|
|
*-- spion amessagebox - contor + texte, incarcat PRIMUL (vezi SET PROCEDURE la inceput)
|
|
FUNCTION amessagebox
|
|
LPARAMETERS tcMessage, tnDialogBoxType, tcTitle, tcFont, tnTimeOut, tnTimeoutValue
|
|
gnSpionCount = gnSpionCount + 1
|
|
gcSpionMesaje = gcSpionMesaje + "[" + TRANSFORM(tcMessage) + "]" + CHR(13) + CHR(10)
|
|
DO AfLog WITH " [spion amessagebox] " + TRANSFORM(tcMessage)
|
|
RETURN 6
|
|
ENDFUNC
|
|
|
|
*-- crsfactura gol, cu campul 'gestiune' suplimentar cerut de grd_factura.cGestiune (ca in
|
|
*-- probe_12b_s8_cai_1_3.prg) - obligatoriu inainte de Createobject (legare ControlSource)
|
|
PROCEDURE PregatesteFacturaGoala
|
|
IF USED('crsfactura')
|
|
USE IN crsfactura
|
|
ENDIF
|
|
creeaza_facturacrs([crsfactura])
|
|
SELECT *, CAST(NULL AS C(100)) AS gestiune FROM crsfactura INTO CURSOR crsfact_tmp READWRITE
|
|
USE IN crsfactura
|
|
SELECT * FROM crsfact_tmp INTO CURSOR crsfactura READWRITE
|
|
USE IN crsfact_tmp
|
|
ENDPROC
|
|
|
|
*-- toArticol: obiect echivalent unui Scatter Name pe crsCodmat/crsDenumire (structura reala,
|
|
*-- creeaza_cursor_gol/reordoneaza din ofacturare.vc2, 20 coloane), fara/cu id_pol dupa caz
|
|
FUNCTION PregatesteToArticol
|
|
LPARAMETERS tnIdArticol, tcDenumire, tlCuIdPol, tnIdPol
|
|
LOCAL lcCursor, loObj
|
|
IF USED('crstoart')
|
|
USE IN crstoart
|
|
ENDIF
|
|
IF m.tlCuIdPol
|
|
CREATE CURSOR crstoart (codmat C(100), denumire C(100), um C(10), pret N(20,4), ;
|
|
nume_val C(20), nume_lista_preturi C(100), proc_tvav N(20,4), codbare C(50), id_articol N(20), ;
|
|
id_pol N(20), gestionabil N(1), preturi_cu_tva N(1), tip_valuta N(1), curs N(20,4), ;
|
|
multiplicator N(10), id_valuta N(10), discount_unitar N(20,4), discount_unitar_val N(20,4), ;
|
|
cantitate N(20,4), pret_val N(20,4))
|
|
INSERT INTO crstoart (codmat, denumire, um, pret, nume_val, nume_lista_preturi, proc_tvav, codbare, ;
|
|
id_articol, id_pol, gestionabil, preturi_cu_tva, tip_valuta, curs, multiplicator, id_valuta, ;
|
|
discount_unitar, discount_unitar_val, cantitate, pret_val) ;
|
|
VALUES ([S8-4A], tcDenumire, [BUC], 100, [RON], [S8-4a], 1.19, [], tnIdArticol, ;
|
|
tnIdPol, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0)
|
|
ELSE
|
|
CREATE CURSOR crstoart (codmat C(100), denumire C(100), um C(10), pret N(20,4), ;
|
|
nume_val C(20), nume_lista_preturi C(100), proc_tvav N(20,4), codbare C(50), id_articol N(20), ;
|
|
gestionabil N(1), preturi_cu_tva N(1), tip_valuta N(1), curs N(20,4), ;
|
|
multiplicator N(10), id_valuta N(10), discount_unitar N(20,4), discount_unitar_val N(20,4), ;
|
|
cantitate N(20,4), pret_val N(20,4))
|
|
INSERT INTO crstoart (codmat, denumire, um, pret, nume_val, nume_lista_preturi, proc_tvav, codbare, ;
|
|
id_articol, gestionabil, preturi_cu_tva, tip_valuta, curs, multiplicator, id_valuta, ;
|
|
discount_unitar, discount_unitar_val, cantitate, pret_val) ;
|
|
VALUES ([S8-4A], tcDenumire, [BUC], 100, [RON], [S8-4a], 1.19, [], tnIdArticol, ;
|
|
0, 0, 0, 1, 1, 1, 0, 0, 1, 0)
|
|
ENDIF
|
|
SELECT crstoart
|
|
GO TOP
|
|
SCATTER NAME loObj MEMO
|
|
RETURN loObj
|
|
ENDFUNC
|
|
|
|
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
|
|
gnFail = gnFail + 1
|
|
ENDPROC
|
|
|
|
PROCEDURE Final
|
|
LOCAL lnOk
|
|
gcCaz = "[final] "
|
|
IF TYPE('gnHandle') = 'N' AND gnHandle > 0
|
|
lnOk = SQLEXEC(gnHandle, "ROLLBACK")
|
|
DO AfLog WITH "ROLLBACK lnOk=" + TRANSFORM(lnOk)
|
|
IF TYPE('gnTransOriginal') = 'N'
|
|
SQLSETPROP(gnHandle, "Transactions", gnTransOriginal)
|
|
ENDIF
|
|
ENDIF
|
|
DO AfLog WITH "TOTAL PASS=" + TRANSFORM(gnPass) + " FAIL=" + TRANSFORM(gnFail)
|
|
DO AfLog WITH "END " + TTOC(DATETIME())
|
|
QUIT
|
|
ENDPROC
|