634 lines
20 KiB
Plaintext
634 lines
20 KiB
Plaintext
*!* 12.04.2011
|
|
*!* marius.mtuu
|
|
*!* viz_flux
|
|
*!* salvez si refolosesc lista id act incasari/plati tip compensari de care trebuie sa se tina cont la flux
|
|
|
|
*!* lcComentariu = FormulaFlux2Comentariu([substr(scd,1,3) in ('758','759', '760')],'D',1,"",0,"")
|
|
*!* MessageBox(lcComentariu)
|
|
|
|
*!* 24.06.2011
|
|
*!* marius.mutu
|
|
*!* viz_flux - se creeaza si coloanele defalcate pe luni pentru perioada precedenta
|
|
*!* dadea eroare cand se calcula defalcat pe luni + perioada precedenta
|
|
|
|
PROCEDURE viz_flux
|
|
PARAMETERS tnLunaI, tnAnulI, tnLunaF, tnAnulF, tnModel, tlCompensari, tlPrecedent, tlDefalcat
|
|
&& tnModel 1 = FORMULE FLUX MAI VECHI; 2 = FORMULE FLUX CONTAFIN CONPRESS
|
|
&& tlCompensari daca se afiseaza compensarile din registrul jurnal pentru luarea in considerare in calcul
|
|
&& tlDefalcat 1 = daca se creeaza cate o coloana pentru fiecare luna sau se cumuleaza lunile intr-o singura coloana
|
|
IF EMPTY(tnModel)
|
|
tnModel = 2
|
|
ENDIF
|
|
LOCAL i, j, lcPrecedent, lcCurent
|
|
|
|
PRIVATE pnLuna, pnAnul, pnLI, pnAI, pnLF, pnAF, pnSI, pnSF, pnModel, pnNuCalculeazaTotaluri, pcIdsAct
|
|
STORE 0 TO pnLuna, pnAnul, pnLI, pnAI, pnLF, pnAF, pnSI, pnSF
|
|
|
|
LOCAL lcMesaje, lnDifSoldFPrecedent, lnDifSoldFCurent
|
|
lcMesaje = ""
|
|
lnDifSoldFPrecedent = 0
|
|
lnDifSoldFCurent = 0
|
|
|
|
pnModel = tnModel
|
|
pnNuCalculeazaTotaluri = 0
|
|
pcIdsAct = ''
|
|
llDefalcat = IIF(PCOUNT() = 8, tlDefalcat, .F.)
|
|
llPrecedent = tlPrecedent AND !m.llDefalcat && daca se defalca pe luni, nu mai am perioada precedenta, doar curenta
|
|
|
|
IF !initializeaza_sucursala() && oinit_optiuni.prg
|
|
RETURN
|
|
ENDIF
|
|
|
|
lcPrecedent = []
|
|
lcCurent = PADL(INT(tnLunaI), 2, '0') + '/' + PADL(INT(tnAnulI), 4, '0') + ' - ' + PADL(INT(tnLunaF), 2, '0') + '/' + PADL(INT(tnAnulF), 4, '0') && pentru listare - precedent
|
|
|
|
lnParcurgeri = 1
|
|
IF m.llPrecedent
|
|
lnParcurgeri = 2
|
|
lcPrecedent = PADL(INT(tnLunaI), 2, '0') + '/' + PADL(INT(tnAnulI) - 1, 4, '0') + ' - ' + PADL(INT(tnLunaF), 2, '0') + '/' + PADL(INT(tnAnulF) - 1, 4, '0') && pentru listare - precedent
|
|
ENDIF
|
|
|
|
*!* 03.05.2011
|
|
lcCursorFlux = [Select Rand, denumire, Cast(0 As N(14,2)) As precedent, Cast(0 As N(14,2)) As curent, ] + ;
|
|
[suma, formula, Total, tip, si, sf ]
|
|
|
|
|
|
FOR iLunaFlux = tnAnulI * 12 + tnLunaI TO tnAnulF * 12 + tnLunaF
|
|
lnLunaFlux = INT(MOD(m.iLunaFlux, 12))
|
|
lnAnFlux = INT(FLOOR(iLunaFlux / 12))
|
|
|
|
IF m.lnLunaFlux = 0
|
|
m.lnLunaFlux = 12
|
|
m.lnAnFlux = m.lnAnFlux - 1
|
|
ENDIF
|
|
|
|
lcCursorFlux = m.lcCursorFlux + [, CAST(0 as N(14,2)) as l] + PADL(m.lnLunaFlux, 2, "0") + [_] + ALLTRIM(STR(m.lnAnFlux))
|
|
*!* 24.06.2011
|
|
IF m.llPrecedent
|
|
lnLunaFluxPrec = lnLunaFlux
|
|
lnAnFluxPrec = lnAnFlux - 1
|
|
lcCursorFlux = m.lcCursorFlux + [, CAST(0 as N(14,2)) as l] + PADL(m.lnLunaFluxPrec, 2, "0") + [_] + ALLTRIM(STR(m.lnAnFluxPrec))
|
|
ENDIF
|
|
*!* 24.06.2011 ^
|
|
ENDFOR
|
|
lcCursorFlux = m.lcCursorFlux + [ From cIntermediar Into Cursor cFlux Readwrite]
|
|
*!* 03.05.2011 ^
|
|
FOR j = 1 TO lnParcurgeri && 1 = precedent/curent 2 = curent/nimic
|
|
lnAnulI = tnAnulI
|
|
lnLunaI = tnLunaI
|
|
lnAnulF = tnAnulF
|
|
lnLunaF = tnLunaF
|
|
|
|
IF j = 1 AND m.llPrecedent
|
|
lnAnulI = (lnAnulI - 1)
|
|
lnAnulF = (lnAnulF - 1)
|
|
ENDIF
|
|
|
|
|
|
pnLI = lnLunaI
|
|
pnAI = lnAnulI
|
|
pnLF = lnLunaF
|
|
pnAF = lnAnulF
|
|
pnSI = 0
|
|
pnSF = 0
|
|
|
|
FOR i = lnAnulI * 12 + lnLunaI TO lnAnulF * 12 + lnLunaF
|
|
pnLuna = INT(MOD(i, 12))
|
|
pnAnul = INT(FLOOR(i / 12))
|
|
|
|
IF pnLuna = 0
|
|
pnLuna = 12
|
|
pnAnul = pnAnul - 1
|
|
ENDIF
|
|
*!* 03.05.2011
|
|
lcColoanaLuna = "l" + PADL(m.pnLuna, 2, "0") + [_] + ALLTRIM(STR(m.pnAnul))
|
|
*!* 03.05.2011 ^
|
|
WAIT WINDOW 'Luna ' + PADL(ALLTRIM(STR(pnLuna)), 2, '0') + ' ' + ALLTRIM(STR(pnAnul)) NOWAIT
|
|
pcIdsAct = ''
|
|
*!* 12.04.2011
|
|
lnSucces = goExecutor.oFunction2Value([pack_mg_flux.GetIdsActCompensari(] + ALLTRIM(STR(pnLuna)) + [, ] + ALLTRIM(STR(pnAnul)) + [)], @pcIdsAct)
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
|
|
RETURN
|
|
ELSE
|
|
pcIdsAct = NVL(pcIdsAct, '')
|
|
ENDIF
|
|
*!* 12.04.2011 ^
|
|
|
|
IF tlCompensari
|
|
lcSql = [{call PACK_MG_FLUX.GetCompensari(] + ALLTRIM(STR(pnLuna)) + [, ] + ALLTRIM(STR(pnAnul)) + [)}]
|
|
lnSucces = goExecutor.oExecute(lcSql, 'crsCompensariTemp')
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
|
|
RETURN
|
|
ELSE
|
|
IF RECCOUNT('crsCompensariTemp') > 0
|
|
*!* 12.04.2011
|
|
SELECT *, ALLTRIM(STR(id_act)) + ',' $ pcIdsAct + ',' AS ales FROM crsCompensariTemp INTO CURSOR crsCompensari READWRITE
|
|
*!* 12.04.2011 ^
|
|
loFrmCompensari = CREATEOBJECT("frm_compensari")
|
|
loFrmCompensari.lb_titlu_alb_b121.CAPTION = 'Compensari ' + PADL(ALLTRIM(STR(pnLuna)), 2, '0') + ' ' + ALLTRIM(STR(pnAnul))
|
|
loFrmCompensari.SHOW(1)
|
|
|
|
pcIdsAct = ''
|
|
SELECT crsCompensari
|
|
SET FILTER TO
|
|
SCAN FOR ales
|
|
pcIdsAct = pcIdsAct + ',' + ALLTRIM(STR(id_act))
|
|
ENDSCAN
|
|
IF !EMPTY(pcIdsAct)
|
|
pcIdsAct = SUBSTR(pcIdsAct, 2)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
USE IN (SELECT('crsCompensariTemp'))
|
|
USE IN (SELECT('crsCompensari'))
|
|
ENDIF
|
|
ENDIF && tlCompensari
|
|
|
|
lcSql = [begin PACK_MG_FLUX.calc_flux(] + ALLTRIM(STR(pnLuna)) + [, ] + ALLTRIM(STR(pnAnul)) + [, ] + ALLTRIM(STR(pnNuCalculeazaTotaluri)) + [, ] + ALLTRIM(STR(pnModel)) + [, '] + ALLTRIM(pcIdsAct) + ['); end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
|
|
RETURN
|
|
ENDIF
|
|
|
|
|
|
|
|
* Set Textmerge On To Memvar lcMesaje Noshow
|
|
|
|
lcSql = [select * from mg_flux_trezorerie where rand = 0 ]
|
|
lcCursor = 'cNerepartizate'
|
|
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
|
|
ENDIF
|
|
|
|
SELECT COUNT(*) AS CNT FROM cNerepartizate INTO CURSOR cNr
|
|
SELECT cNr
|
|
lnNr = CNT
|
|
|
|
IF USED('cNr')
|
|
USE IN cNr
|
|
ENDIF
|
|
|
|
SET TEXTMERGE ON TO MEMVAR lcMesaje ADDITIVE NOSHOW
|
|
|
|
|
|
IF lnNr > 0
|
|
\*** Luna <<Padl(Alltrim(Str(pnLuna)),2,'0')>>/<<Alltrim(Str(pnAnul))>>, urmatoarele inregistrari nu au fost repartizate: <<CHR(13)+CHR(10)>>
|
|
\ nract debit=credit suma
|
|
SELECT cNerepartizate
|
|
SCAN
|
|
\ <<PADR(nract,14," ")>> <<PADR(scd,4," ")>>=<<PADR(scc,4," ")>> <<PADL(ALLTRIM(TRANSFORM(suma,get_mask(20,gnPA))),20," ")>> <<CHR(13)>>
|
|
SELECT cNerepartizate
|
|
ENDSCAN
|
|
\<<CHR(13)+CHR(10)>>
|
|
ENDIF
|
|
USE IN cNerepartizate
|
|
|
|
SET TEXTMERGE TO
|
|
***--------------------
|
|
|
|
|
|
lcSql = [select * FROM mg_flux order by rand]
|
|
lcCursor = 'cIntermediar'
|
|
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
|
|
LOOP
|
|
ENDIF
|
|
|
|
IF (i = lnAnulI * 12 + lnLunaI) AND (j = 1) && in prima luna creez cursorul cFLux
|
|
&lcCursorFlux
|
|
|
|
|
|
&& completez sumele pe coloana precedent/curent cumulat
|
|
IF j = 1 AND m.llPrecedent
|
|
REPLACE ALL precedent WITH suma IN cFlux
|
|
ELSE
|
|
REPLACE ALL curent WITH suma IN cFlux
|
|
ENDIF
|
|
|
|
&& completez sumele defalcat pentru luna curenta
|
|
REPLACE ALL &lcColoanaLuna WITH suma IN cFlux
|
|
ELSE
|
|
&& scanez si insumez
|
|
lnsuma = 0
|
|
SELECT cFlux
|
|
SCAN
|
|
lcRand = RAND
|
|
SELECT cIntermediar
|
|
LOCATE FOR RAND = lcRand
|
|
IF FOUND()
|
|
lnsuma = suma
|
|
SELECT cFlux
|
|
IF j = 1 AND m.llPrecedent
|
|
REPLACE precedent WITH precedent + m.lnsuma
|
|
ELSE
|
|
REPLACE curent WITH curent + m.lnsuma
|
|
ENDIF
|
|
*!* 03.05.2011
|
|
REPLACE &lcColoanaLuna WITH m.lnsuma
|
|
*!* 03.05.2011 ^
|
|
ENDIF
|
|
SELECT cFlux
|
|
ENDSCAN
|
|
ENDIF && (i = lnAnulI*12 + lnLunaI) And (j = 1) && in prima luna creez cursorul cFLux
|
|
|
|
USE IN (SELECT('cIntermediar'))
|
|
|
|
*** solduri initiale, finale luna curenta
|
|
pnSI = 0
|
|
pnSF = 0
|
|
lcSql = [begin PACK_MG_FLUX.get_SI_balanta(?pnLuna, ?pnAnul, ?@pnSI); end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
|
|
RETURN
|
|
ENDIF
|
|
|
|
lcSql = [begin PACK_MG_FLUX.get_SF_balanta(?pnLuna, ?pnAnul, ?@pnSF); end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
|
|
RETURN
|
|
ENDIF
|
|
|
|
lnDifSoldF = 0
|
|
|
|
SELECT cFlux
|
|
REPLACE &lcColoanaLuna WITH pnSI FOR si = 1
|
|
IF pnNuCalculeazaTotaluri = 0 && daca se calculeaza totalurile in baza de date compar soldul final calculat cu cel din balanta
|
|
LOCATE FOR sf = 1
|
|
IF FOUND()
|
|
IF &lcColoanaLuna <> m.pnSF
|
|
lnDifSoldF = m.pnSF - (&lcColoanaLuna + m.pnSI) && soldul initial nu era inclus in randul calculat
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
REPLACE &lcColoanaLuna WITH m.pnSF FOR sf = 1
|
|
|
|
*!* Set Textmerge On To Memvar lcMesaje Additive Noshow
|
|
IF lnDifSoldF <> 0
|
|
lcMesaje = lcMesaje + CHR(13) + CHR(10) + STRTRAN(SUBSTR(lcColoanaLuna, 2), "_", " ") + ' DIFERENTA INTRE SOLD FINAL TREZORERIE CALCULAT SI SOLD FINAL DIN BALANTA DE VERIFICARE: ' + ALLTRIM(TRANSFORM(lnDifSoldF, '999 999 999 999.99'))
|
|
ENDIF
|
|
*** solduri initiale, finale luna curenta ^
|
|
ENDFOR && i = lnAnulI*12 + lnLunaI To lnAnulF*12 + lnLunaF
|
|
|
|
*** solduri initiale, finale cumulat precedent/curent
|
|
lcSql = [begin PACK_MG_FLUX.get_SI_balanta(?pnLI, ?pnAI, ?@pnSI); end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
|
|
RETURN
|
|
ENDIF
|
|
|
|
lcSql = [begin PACK_MG_FLUX.get_SF_balanta(?pnLF, ?pnAF, ?@pnSF); end;]
|
|
lnSucces = goExecutor.oExecute(lcSql)
|
|
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(goExecutor.cEroare, 0 + 16, "Eroare")
|
|
RETURN
|
|
ENDIF
|
|
|
|
lcDifSoldFPrecedent = 0
|
|
lcDifSoldFCurent = 0
|
|
|
|
SELECT cFlux
|
|
IF j = 1 AND m.llPrecedent
|
|
REPLACE precedent WITH pnSI FOR si = 1
|
|
IF pnNuCalculeazaTotaluri = 0 && daca se calculeaza totalurile in baza de date compar soldul final calculat cu cel din balanta
|
|
LOCATE FOR sf = 1
|
|
IF FOUND()
|
|
IF precedent <> pnSF
|
|
lnDifSoldFPrecedent = pnSF - (precedent + pnSI)
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
REPLACE precedent WITH pnSF FOR sf = 1
|
|
ELSE
|
|
REPLACE curent WITH pnSI FOR si = 1
|
|
IF pnNuCalculeazaTotaluri = 0 && daca se calculeaza totalurile in baza de date compar soldul final calculat cu cel din balanta
|
|
LOCATE FOR sf = 1
|
|
IF FOUND()
|
|
IF curent <> pnSF
|
|
lnDifSoldFCurent = pnSF - (curent + pnSI) && soldul initial nu era inclus in randul calculat
|
|
ENDIF
|
|
ENDIF
|
|
ENDIF
|
|
REPLACE curent WITH pnSF FOR sf = 1
|
|
ENDIF
|
|
*!* Set Textmerge On To Memvar lcMesaje Additive Noshow
|
|
IF lnDifSoldFPrecedent <> 0
|
|
lcMesaje = lcMesaje + CHR(13) + CHR(10) + 'DIFERENTA INTRE SOLD FINAL TREZORERIE CALCULAT SI SOLD FINAL DIN BALANTA DE VERIFICARE: ' + ALLTRIM(TRANSFORM(lnDifSoldFPrecedent, '999 999 999 999.99'))
|
|
ENDIF
|
|
IF lnDifSoldFCurent <> 0
|
|
lcMesaje = lcMesaje + CHR(13) + CHR(10) + 'DIFERENTA INTRE SOLD FINAL TREZORERIE CALCULAT SI SOLD FINAL DIN BALANTA DE VERIFICARE: ' + ALLTRIM(TRANSFORM(lnDifSoldFCurent, '999 999 999 999.99'))
|
|
ENDIF
|
|
*** solduri initiale, finale cumulat precedent/curent ^
|
|
ENDFOR && j
|
|
|
|
lcFisier = gcTempPath + "mesaje.txt"
|
|
STRTOFILE(lcMesaje, lcFisier)
|
|
|
|
IF !EMPTY(lcMesaje)
|
|
MODIFY FILE (lcFisier)
|
|
ENDIF
|
|
***------------------------------------------------
|
|
|
|
SELECT cFlux
|
|
GO TOP
|
|
|
|
SELECT cFlux
|
|
lovf = CREATEOBJECT('frm_flux', m.llPrecedent, lcPrecedent, lcCurent)
|
|
lovf.ADDPROPERTY("lDefalcat", tlDefalcat)
|
|
*!* 03.05.2011
|
|
*** adaug coloane in grid pentru luni defalcat
|
|
IF m.llDefalcat
|
|
lnColumnOffset = lovf._grdrow1.COLUMNCOUNT
|
|
lovf._grdrow1.COLUMNCOUNT = m.lnColumnOffset + (tnAnulF * 12 + tnLunaF) - (tnAnulI * 12 + tnLunaI) + 1
|
|
i = 0
|
|
FOR iLunaFlux = tnAnulI * 12 + tnLunaI TO tnAnulF * 12 + tnLunaF
|
|
lnLunaFlux = INT(MOD(m.iLunaFlux, 12))
|
|
lnAnFlux = INT(FLOOR(iLunaFlux / 12))
|
|
i = i + 1
|
|
IF m.lnLunaFlux = 0
|
|
m.lnLunaFlux = 12
|
|
m.lnAnFlux = m.lnAnFlux - 1
|
|
ENDIF
|
|
lcColoanaLuna = "l" + PADL(m.lnLunaFlux, 2, "0") + [_] + ALLTRIM(STR(m.lnAnFlux))
|
|
lnCurentColumnIndex = m.lnColumnOffset + i
|
|
WITH lovf._grdrow1
|
|
.COLUMNS(m.lnCurentColumnIndex).NAME = lcColoanaLuna
|
|
.&lcColoanaLuna..CONTROLSOURCE = "cFlux." + m.lcColoanaLuna
|
|
.&lcColoanaLuna..FORMAT = "RK"
|
|
.&lcColoanaLuna..INPUTMASK = get_mask(14, gnPA)
|
|
.&lcColoanaLuna..Header1.CAPTION = STRTRAN(SUBSTR(m.lcColoanaLuna, 2), "_", "/")
|
|
.&lcColoanaLuna..Header1.ALIGNMENT = 2
|
|
ENDWITH
|
|
ENDFOR && iLunaFlux = lnAnulI*12 + lnLunaI To lnAnulF*12 + lnLunaF
|
|
|
|
lovf._grdrow1.cPrecedent.VISIBLE = .F.
|
|
lovf._grdrow1.cCurent.VISIBLE = .F.
|
|
*!* lovf._grdrow1.cCurent.Header1.Caption = PADL(INT(tnLunaI), 2, '0') + "/" + ALLTRIM(STR(INT(tnAnulI))) + " - " + PADL(INT(tnLunaF), 2, '0') + "/" + ALLTRIM(STR(INT(tnAnulF)))
|
|
ENDIF && m.llDefalcat
|
|
lovf.grid_column_bind()
|
|
*!* 03.05.2011 ^
|
|
lovf.SHOW(1)
|
|
|
|
IF USED('cFlux')
|
|
USE IN cFlux
|
|
ENDIF
|
|
|
|
|
|
ENDPROC && viz_flux
|
|
***-------------------------------------------------------------------------------------
|
|
PROCEDURE lanseaza_excel_flux
|
|
PARAMETERS tcalias, tlTip, toGridObject
|
|
|
|
|
|
LOCAL loExcelXML AS "ExcelXml" OF "ExcelXml.prg"
|
|
LOCAL x AS "XL_flux" OF "EXCELX"
|
|
LOCAL lcFile, lcexcel
|
|
*:Global OLEAPP
|
|
LOCAL llEsteExcel
|
|
llEsteExcel = isComobject("Excel.Application")
|
|
|
|
IF !m.llEsteExcel
|
|
*CopyToExcelSimple("flux_trezorerie.xls", "", m.tcalias, "", "*", ".T.")
|
|
|
|
loExcelXML = NEWOBJECT("ExcelXml", "ExcelXml.prg")
|
|
|
|
WITH loExcelXML
|
|
.GridObject = toGridObject
|
|
.HasFilter = .F.
|
|
.LockHeader = .F.
|
|
.SheetName = "Flux Trezorerie"
|
|
.OpenAfterSaving = .T.
|
|
lcFile = PUTFILE("Flux trezorerie", "flux_trezorerie", "xls")
|
|
IF .SAVE(m.lcFile)
|
|
AMESSAGEBOX("Fisierul s-a salvat!", 64)
|
|
ELSE
|
|
AMESSAGEBOX("Fisierul nu s-a salvat!", 48)
|
|
ENDIF
|
|
ENDWITH
|
|
|
|
RETURN
|
|
ENDIF
|
|
|
|
|
|
PRIVATE lcTabel
|
|
|
|
*!* llEsteExcel = isComobject("Excel.Application")
|
|
*!* If !llEsteExcel
|
|
*!* Do mesaj With "Instalati Microsoft Excel",""
|
|
*!* Return
|
|
*!* Endif
|
|
|
|
lcTabel = ALLTRIM(tcalias)
|
|
|
|
*!* lcNumeDirExcel = Addbs(Strtran(CALEFIRMA,"\\","\"))+"Excel\"
|
|
*!* If !Directory(lcNumeDirExcel)
|
|
*!* Md (lcNumeDirExcel)
|
|
*!* ENDIF
|
|
*!* lcexcel = lcNumeDirExcel +"Flux de trezorerie_"+Sys(2)+".XLS"
|
|
|
|
lcexcel = ADDBS(STRTRAN(gcTempPath, "\\", "\")) + "Flux de trezorerie_" + SYS(2) + ".XLS"
|
|
|
|
x = NEWOBJECT("XL_flux", "EXCELX") && alternatively you can drop this class on a VFP form
|
|
x.SAVEAS = lcexcel && PART.XLS to be created in your TEMP folder
|
|
|
|
SELECT (lcTabel)
|
|
|
|
DIMENSION x.oWorkSheet[1] && need four pages
|
|
x.oWorkSheet[1] = "Flux"
|
|
ADDPROPERTY(x, "lTip", tlTip)
|
|
x.GO() && remember this calls .populate_pages().
|
|
RELEASE x
|
|
|
|
**************************8
|
|
|
|
OLEAPP = GETOBJECT("", "Excel.Application")
|
|
IF TYPE('OLEAPP')!= 'O'
|
|
OLEAPP = CREATEOBJECT("Excel.Application")
|
|
ENDIF
|
|
OLEAPP.WorkBooks.OPEN(lcexcel)
|
|
OLEAPP.VISIBLE = 1
|
|
|
|
RETURN
|
|
ENDPROC &&lanseaza_excel_flux
|
|
***------------------------------------------------------------------------------------
|
|
PROCEDURE viz_formule_flux
|
|
LPARAMETERS tnModel
|
|
|
|
LOCAL lcSql, lnSucces, lcCursor
|
|
PRIVATE pcDataOra, pnModel
|
|
lcCursor = 'cFormule'
|
|
|
|
pcDataOra = Get_Ora(2)
|
|
&& tnModel 1 = FORMULE FLUX MAI VECHI; 2 = FORMULE FLUX CONTAFIN CONPRESS
|
|
IF EMPTY(tnModel)
|
|
pnModel = 2
|
|
ELSE
|
|
pnModel = tnModel
|
|
ENDIF
|
|
|
|
|
|
lcSql = [select * from mg_flux_formule where model = ?pnModel order by rand]
|
|
lnSucces = goExecutor.oExecute(lcSql, lcCursor)
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(lcSql, 0 + 32, 'Eroare')
|
|
RETURN
|
|
ENDIF
|
|
|
|
SELECT cFormule
|
|
REPLACE ALL comentariu WITH FormulaFlux2Comentariu(debit, 'D', tip, CONT, TOTAL, ftotal) + IIF(!EMPTY(credit), " " + FormulaFlux2Comentariu(credit, 'C', tip, CONT, 0, ""), "")
|
|
|
|
SELECT DISTINCT RAND, denumire FROM cFormule INTO CURSOR cFluxParinte READWRITE
|
|
SELECT * FROM cFormule INTO CURSOR cFluxCopil READWRITE
|
|
|
|
SELECT cFluxCopil
|
|
INDEX ON RAND TAG RAND
|
|
|
|
SELECT cFluxParinte
|
|
SET RELATION TO RAND INTO cFluxCopil ADDITIVE
|
|
|
|
poff = CREATEOBJECT("frm_formule")
|
|
poff.SHOW(1)
|
|
|
|
|
|
USE IN (SELECT('cFluxCopil'))
|
|
USE IN (SELECT('cFluxParinte'))
|
|
USE IN (SELECT('cFormule'))
|
|
|
|
|
|
ENDPROC && viz_formule_flux
|
|
|
|
***---------------------------------------------------------------------------------------------
|
|
PROCEDURE viz_conturi_flux
|
|
lcSql = [select cont from mg_flux_conturi order by cont]
|
|
lnSucces = goExecutor.oExecute(lcSql, "cConturiFlux")
|
|
IF lnSucces < 0
|
|
AMESSAGEBOX(lcSql, 0 + 32, 'Eroare')
|
|
RETURN
|
|
ENDIF
|
|
|
|
loFrmConturi = CREATEOBJECT("frm_conturi_flux")
|
|
loFrmConturi.SHOW(1)
|
|
USE IN (SELECT('cConturiFlux'))
|
|
ENDPROC && viz_conturi_flux
|
|
|
|
***---------------------------------------------------------------------------------------------
|
|
PROCEDURE FormulaFlux2Comentariu
|
|
LPARAMETERS tcFormula, tcDebit_credit, tnTip, tcContTip2, tnTotal, tcFTotal
|
|
|
|
&& cFormuleFlux.debit,'D',cFormuleFlux.tip,cFormuleFlux.cont,cFormuleFlux.total,cFormuleFlux.ftotal
|
|
|
|
LOCAL lcFormula, lcDebit_credit, lcCautInc, lcListaConturi, lcListaContAfis, lnTip, lcContTip2, llTotal, lcFTotal
|
|
|
|
IF !EMPTY(NVL(tcDebit_credit, ''))
|
|
lcDebit_credit = ALLTRIM(UPPER(NVL(tcDebit_credit, '')))
|
|
ELSE
|
|
lcDebit_credit = ''
|
|
ENDIF
|
|
IF !EMPTY(NVL(tcFormula, ''))
|
|
lcFormula = ALLTRIM(NVL(tcFormula, ''))
|
|
ELSE
|
|
lcFormula = ''
|
|
ENDIF
|
|
IF !EMPTY(NVL(tnTip, 0))
|
|
lnTip = tnTip
|
|
ELSE
|
|
lnTip = 0
|
|
ENDIF
|
|
IF !EMPTY(NVL(tcContTip2, ''))
|
|
lcContTip2 = ALLTRIM(NVL(tcContTip2, ''))
|
|
ELSE
|
|
lcContTip2 = ''
|
|
ENDIF
|
|
STORE '' TO lcListaConturi, lcListaContAfis
|
|
llTotal = NVL(tnTotal, 0) = 1
|
|
|
|
IF !EMPTY(NVL(tcFTotal, ''))
|
|
lcFTotal = ALLTRIM(NVL(tcFTotal, ''))
|
|
ENDIF
|
|
|
|
IF EMPTY(lcFormula) AND EMPTY(lcFTotal)
|
|
RETURN ''
|
|
ENDIF
|
|
|
|
IF !llTotal
|
|
DO CASE
|
|
CASE lcDebit_credit = 'D'
|
|
lcCautInc = [substr(scd,1,3) in (] && [inlist(left(scd,3)]
|
|
CASE lcDebit_credit = 'C'
|
|
lcCautInc = [substr(scc,1,3) in (] && [inlist(left(scc,3)]
|
|
ENDCASE
|
|
|
|
lnInc = AT(lcCautInc, lcFormula)
|
|
IF lnInc > 0
|
|
lcCautSf = [')]
|
|
lnSF = AT(lcCautSf, lcFormula)
|
|
ENDIF
|
|
|
|
lnLen = LEN(lcFormula) - LEN(lcCautInc) && 19
|
|
lcListaConturi = SUBSTR(lcFormula, LEN(lcCautInc) + 1, lnLen - 1)
|
|
lcListaConturi = STRTRAN(lcListaConturi, ['], [])
|
|
|
|
lnConturi = GETWORDCOUNT(lcListaConturi, [,])
|
|
IF lnConturi = 1
|
|
lcCont = GETWORDNUM(lcListaConturi, 1, [,])
|
|
lcListaContAfis = lcListaContAfis + lcCont
|
|
ELSE
|
|
FOR i = 1 TO lnConturi
|
|
lcCont = GETWORDNUM(lcListaConturi, i, [,])
|
|
DO CASE
|
|
CASE i = 1
|
|
lcListaContAfis = lcListaContAfis + lcCont + [ ]
|
|
CASE i = 2
|
|
lcListaContAfis = lcListaContAfis + [ (] + lcCont + [, ]
|
|
OTHERWISE
|
|
lcListaContAfis = lcListaContAfis + lcCont + [, ]
|
|
ENDCASE
|
|
ENDFOR
|
|
lcListaContAfis = SUBSTR(lcListaContAfis, 1, LEN(lcListaContAfis) - 2)
|
|
lcListaContAfis = lcListaContAfis + [)]
|
|
ENDIF
|
|
|
|
DO CASE
|
|
CASE lnTip = 1
|
|
DO CASE
|
|
CASE lcDebit_credit = 'D'
|
|
lcTraducere = [Platile din perioada selectata de tipul ] + lcListaContAfis + [ = 5xxx.]
|
|
CASE lcDebit_credit = 'C'
|
|
lcTraducere = [Incasarile din perioada selectata de tipul 5xxx = ] + lcListaContAfis + [.]
|
|
ENDCASE
|
|
CASE lnTip = 2
|
|
DO CASE
|
|
CASE lcDebit_credit = 'D'
|
|
lcTraducere = [Platile din perioada selectata de tipul ] + lcContTip2 + [ = 5xxx, ]
|
|
lcTraducere = lcTraducere + [pentru care s-au gasit inregistrari de tipul ] + lcListaContAfis + [ = ] + lcContTip2 + [ in Registrul Jurnal Total.]
|
|
|
|
CASE lcDebit_credit = 'C'
|
|
lcTraducere = [Incasarile din perioada selectata de tipul 5xxx = ] + lcContTip2 + [, ]
|
|
lcTraducere = lcTraducere + [pentru care s-au gasit inregistrari de tipul ] + lcContTip2 + [ = ] + lcListaContAfis + [ in Registrul Jurnal Total.]
|
|
ENDCASE
|
|
OTHERWISE
|
|
lcTraducere = ''
|
|
ENDCASE
|
|
ENDIF
|
|
|
|
IF llTotal
|
|
lcTraducere = [Suma randurilor ] + STRTRAN(lcFTotal, 'R', '')
|
|
*lcTraducere = STRTRAN(lcTraducere, '0', ' ')
|
|
ENDIF
|
|
|
|
RETURN lcTraducere
|
|
|
|
ENDPROC && FormulaFlux2Comentariu
|