603 lines
25 KiB
Plaintext
603 lines
25 KiB
Plaintext
*!* 04.08.2011
|
|
*!* marius.mutu
|
|
*!* PrepareRptSitOp
|
|
*!* soldul initial se ia din max(luna de initializare, luna de inceput) in loc de luna de inceput care putea sa nu aiba sume
|
|
*!* #3086
|
|
|
|
*!* 10.11.2011
|
|
*!* marius.mutu
|
|
*!* PrepareRptSitOp
|
|
*!* luna de initializare este (precdeb <> 0 sau preccred <> 0) sau (debit <> 0 sau credit <> 0)
|
|
*!* nu detecta corect luna de initializare pentru clienti cu sume in luna
|
|
|
|
*!* 02.07.2019
|
|
*!* marius.mutu
|
|
*!* PrepareRptSitOp - corectie grupare la !"defalcare dupa documente pereche"
|
|
|
|
|
|
**********************************************************************************
|
|
PROCEDURE PrepareRptBalantaFC
|
|
LPARAMETERS tcCont,tcTitlu,tcNumeRaport,tleActiv
|
|
|
|
** daca nu este precizat contul => va fi cerut
|
|
|
|
|
|
STORE "" TO lctitlu,lcNumeRaport,lcCont
|
|
STORE .F. TO eActiv
|
|
|
|
lcNumeRaport = tcNumeRaport
|
|
eActiv = tleActiv
|
|
|
|
IF EMPTY(tcTitlu)
|
|
lctitlu = "Jurnal"
|
|
ELSE
|
|
lctitlu = tcTitlu
|
|
ENDIF
|
|
|
|
IF EMPTY(tcCont) && cere cont, titlu
|
|
DO Alege_Cont_Titlu WITH lcCont,eActiv,lctitlu
|
|
ELSE
|
|
lcCont = tcCont
|
|
** cere & propune [doar] titlu raport:
|
|
DO ceretitlu_raport_v2 WITH 'Titlul Raportului','lcTitlu'
|
|
ENDIF
|
|
|
|
**preluare ora de pe oracle server:
|
|
*!* STORE 0 TO pnsucces
|
|
*!* pcexec = [select to_char(SYSdate,'dd/mm/yyyy hh24:mi:ss') as dataora from dual]
|
|
*!* pcCursor = [dataora_cursor]
|
|
*!* pnsucces = goExecutor.oExecute(pcexec,pcCursor)
|
|
*!* IF (pnsucces != 0)
|
|
*!* SELECT dataora_cursor
|
|
*!* pcdataora = dataora_cursor.dataora
|
|
*!* USE IN dataora_cursor
|
|
*!* ENDIF
|
|
*!* pcDataOra = get_ora(2)
|
|
If glEMama
|
|
pcexec = [select sum(precdeb1) as precdeb1,sum(preccred1) as preccred1,] + ;
|
|
[sum(precdeb) as precdeb,sum(preccred) as preccred,] + ;
|
|
[sum(debit) as debit,sum(credit) as credit,] + ;
|
|
[sum(totdeb) as totdeb,sum(totcred) as totcred,] + ;
|
|
[sum(solddeb) as solddeb,sum(soldcred) as soldcred,] + ;
|
|
[sum(precvaldeb1) as precvaldeb1,sum(precvalcred1) as precvalcred1,] + ;
|
|
[sum(precvaldeb) as precvaldeb,sum(precvalcred) as precvalcred,] + ;
|
|
[sum(valdebit) as valdebit,sum(valcredit) as valcredit,] + ;
|
|
[sum(totvaldeb) as totvaldeb,sum(totvalcred) as totvalcred,] + ;
|
|
[sum(soldvaldeb) as soldvaldeb,sum(soldvalcred) as soldvalcred,] + ;
|
|
[id_part,nume,cod_fiscal,cont,acont,an,luna,id_valuta,] + ;
|
|
[nume_val,moneda_nationala ] + ;
|
|
[from ] + gcS + [.vbalanta_parteneri ] + ;
|
|
[WHERE cont = ] + Alltrim(lcCont) + [ and luna = ] + Alltrim(Str(gnluna)) + ;
|
|
[ and an = ] + Alltrim(Str(gnan)) + ;
|
|
[ group by id_part,nume,cod_fiscal,cont,acont,an,luna,] + ;
|
|
[id_valuta,nume_val,moneda_nationala order by nume]
|
|
Else
|
|
pcexec = [SELECT * from ] + gcS + [.vbalanta_parteneri ] + ;
|
|
[WHERE cont = ] + Alltrim(lcCont) + [ and luna = ] + Alltrim(Str(gnluna)) + ;
|
|
[ and an = ] + Alltrim(Str(gnan)) + gcCondSucursala + [ order by nume]
|
|
Endif
|
|
pcCursor = [curent_bal_cursor]
|
|
pnsucces = goExecutor.oExecute(pcexec,pcCursor)
|
|
If (pnsucces != 0)
|
|
*!* If reccount(pcCursor) > 0
|
|
*!* Select (pcCursor)
|
|
*!* Report Format &lcNumeRaport To Printer Prompt Noconsole Preview
|
|
*!* Use In (pcCursor)
|
|
*!* Else
|
|
*!* amessagebox("Nu exista inregistrari pentru listare!",48,"Atentie")
|
|
*!* Endif
|
|
goExport.export2frx(pcCursor,lcNumeRaport)
|
|
Endif
|
|
Endproc
|
|
****************************************************************************************
|
|
********************************************************************************************
|
|
|
|
PROCEDURE Alege_Cont
|
|
LPARAMETERS tcCont,tleActiv
|
|
|
|
PRIVATE polista,pcschema1,pcselect1,pcfiltru1,pcorder1
|
|
STORE "" TO polista
|
|
pcschema1=['cont c(4),acont c(4),explicatie c(50)']
|
|
pcselect1=['select distinct cont,rpad(CHR(32),4,CHR(32)) as acont,explicatie from ]+gcS+[.vcoresp_tip_cont where 1=2']
|
|
pcfiltru1=[2=2]
|
|
pcorder1=[cont]
|
|
llAfisare=.F.
|
|
gencursor('polista','clista',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfisare)
|
|
polista.ca_baza1.afisare()
|
|
|
|
|
|
SELECT clista
|
|
loCont=myscatter('blank')
|
|
|
|
PRIVATE eActiv
|
|
STORE .T. TO eActiv
|
|
|
|
Ol=CREATEOBJECT("frm_cere_cont")
|
|
WITH Ol
|
|
.titlufrumos1.CAPTION= 'Selectati contul'
|
|
IF EMPTY(.cboCont.ROWSOURCE)
|
|
.cboCont.ROWSOURCE="clista.cont,acont"
|
|
ENDIF
|
|
.ocont=loCont
|
|
IF EMPTY(.cAlias)
|
|
.cAlias=LEFT(.cboCont.ROWSOURCE,AT(".",.cboCont.ROWSOURCE)-1)
|
|
ENDIF
|
|
.HEIGHT = 190
|
|
ENDWITH
|
|
Ol.SHOW(1)
|
|
|
|
IF buton = 2
|
|
USE IN clista
|
|
RETURN
|
|
ENDIF
|
|
|
|
tcCont = loCont.CONT
|
|
tleActiv = eActiv
|
|
ENDPROC
|
|
|
|
********************************************************************************************
|
|
|
|
PROCEDURE ceretitlu_raport_v2
|
|
PARAMETERS pc_tit,pc_var
|
|
obj1=CREATEOBJECT("frm_cere_titlu")
|
|
obj1.clb_tx_simplu1.lb_simplu1.CAPTION = pc_tit
|
|
obj1.clb_tx_simplu1.text_simplu1.CONTROLSOURCE = pc_var
|
|
obj1.SHOW(1)
|
|
|
|
********************************************************************************************
|
|
|
|
PROCEDURE Alege_Cont_Titlu
|
|
LPARAMETERS tcCont,tleActiv,tcTitlu
|
|
|
|
PRIVATE polista,pcschema1,pcselect1,pcfiltru1,pcorder1
|
|
STORE "" TO polista
|
|
pcschema1=['cont c(4),acont c(4),explicatie c(50)']
|
|
pcselect1=['select distinct cont,rpad(CHR(32),4,CHR(32)) as acont,explicatie from ]+gcS+[.vcoresp_tip_cont where 1=2']
|
|
pcfiltru1=[2=2]
|
|
pcorder1=[cont]
|
|
llAfisare=.F.
|
|
gencursor('polista','clista',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfisare)
|
|
polista.ca_baza1.afisare()
|
|
|
|
|
|
SELECT clista
|
|
loCont=myscatter('blank')
|
|
|
|
PRIVATE eActiv
|
|
STORE .T. TO eActiv
|
|
|
|
Ol=CREATEOBJECT("frm_cere_cont_titlu")
|
|
WITH Ol
|
|
.titlufrumos1.CAPTION= 'Selectati contul'
|
|
IF EMPTY(.cboCont.ROWSOURCE)
|
|
.cboCont.ROWSOURCE="clista.cont,acont"
|
|
ENDIF
|
|
.ocont=loCont
|
|
IF EMPTY(.cAlias)
|
|
.cAlias=LEFT(.cboCont.ROWSOURCE,AT(".",.cboCont.ROWSOURCE)-1)
|
|
ENDIF
|
|
.HEIGHT = 190
|
|
ENDWITH
|
|
Ol.SHOW(1)
|
|
|
|
IF buton = 2
|
|
tcCont = "0"
|
|
USE IN clista
|
|
RETURN
|
|
ELSE
|
|
tcCont = loCont.CONT
|
|
tleActiv = eActiv
|
|
ENDIF
|
|
|
|
ENDPROC
|
|
|
|
********************************************************************************************
|
|
|
|
****************************************************************************************
|
|
** daca NU primeste cont si activ => va alege utilizatoru pt. ce cont vrea situatia,
|
|
** altfel va fi blocat pe contul primit ca parametru
|
|
** daca primeste cont si activ => trebuie sa primeasca si ceilalti parametrii:tlCauta_alfa_Cu_Toti,tlPerioada_Blocata,tcRaport_sau_Vizualizare,tc_NumeForma
|
|
**altfel nu este nevoie de ei
|
|
PROCEDURE PrepareRptSitOp
|
|
LPARAMETERS tcCont,tlActiv,tcTitlu,tlCauta_alfa_Cu_Toti,tlPerioada_Blocata,tcRaport_sau_Vizualizare,tc_NumeForma, tcLuna_sau_Perioada
|
|
**rol parametrii:
|
|
**___________________
|
|
**tcCont : contul
|
|
**tlActiv : e true daca contu e activ, false dac e pasiv
|
|
**tcTitlu : titlul raportului
|
|
**tlCauta_alfa_Cu_Toti: true <=> sa apara "<Toti>" in cauta_alfa, false <=> sa nu apara
|
|
**tlPerioada_Blocata : true <=> utilizatorul are blocata perioada, este predefinita, false <=> utilizatorul poate selecta o perioada
|
|
**tcRaport_sau_Vizualizare: "Vizualizare" <=> e vizulaizare, lasat gol (sau lipsa) <=>direct raport
|
|
**tc_NumeForma : numele clasei dupa care va fi facuta forma de vizualizare (cum e aceeasi in toate cazurile, ar putea lipsi...)
|
|
Private plDefalcatDocumentPereche, pnSemn, pnId_part, pcCont, pcPerioada, pcAnalitic, plActiv
|
|
Private lctitlu,lcPerioada,lcEntitateAleasa,lnId_part,lnFel_raport, llFormRelease, lcluna1, lcluna2, lclunaAn1, lclunaAn2, lcAn1, lcAn2
|
|
PRIVATE lnSold_Final_Total, lnSold_Initial_Total
|
|
|
|
Local lnNrLuni1, lnNrLuni2, lcConditieAnaliticCredit, lcConditieAnaliticDebit, lcRaport, lcSelect, lcSql
|
|
Local lnId_part_curent, lnSoldInit, lnSucces, j
|
|
|
|
plDefalcatDocumentPereche = .T. && daca documentele de incasare/plata se defalca dupa documentele pereche
|
|
|
|
STORE "" TO lctitlu,lcPerioada,lcEntitateAleasa, pcAnalitic
|
|
STORE 0 TO lnId_part,lnFel_raport
|
|
STORE .F. TO plActiv
|
|
|
|
STORE .F. TO llFormRelease
|
|
|
|
pcCont = IIF(EMPTY(tcCont),[],tcCont)
|
|
|
|
DECLARE laId_part(1,1) && stocare id-uri parteneri
|
|
laId_part[1,1] = 0
|
|
|
|
IF EMPTY(tcRaport_sau_Vizualizare)
|
|
tcRaport_sau_Vizualizare = "Raport"
|
|
ENDIF
|
|
|
|
IF EMPTY(tcTitlu)
|
|
lctitlu = "Situatii Operative "+pcCont && titlu default
|
|
ELSE
|
|
lctitlu = tcTitlu
|
|
ENDIF
|
|
|
|
** daca primeste parametrii de restrictie => creaza forma de introducere cont si partener cu acesti parametrii:
|
|
**daca NU => o creaza cu totul selectabil:
|
|
IF !EMPTY(tcCont)
|
|
OsitOp = CREATEOBJECT('frm_lans_sit_op',tcCont,tlActiv,tlCauta_alfa_Cu_Toti,tlPerioada_Blocata,tcLuna_sau_Perioada)
|
|
ELSE && elsu asta deocamdata nu-l face deloc...
|
|
*!* lctitlu = "Situatie Operativa Entitati"
|
|
*!* DO ceretitlu_raport_v2 WITH 'Titlul Raportului','lcTitlu'
|
|
OsitOp = CREATEOBJECT('frm_lans_sit_op')
|
|
ENDIF
|
|
OsitOp.SHOW(1)
|
|
|
|
IF !llFormRelease
|
|
RETURN
|
|
ENDIF
|
|
|
|
IF (AT("-",lcPerioada)!=0)
|
|
lclunaAn1 = SUBSTR(lcPerioada,1,7)
|
|
lclunaAn2 = SUBSTR(lcPerioada,9)
|
|
lcluna1=SUBSTR(lclunaAn1,1,2)
|
|
lcAn1 = SUBSTR(lclunaAn1,4)
|
|
lcluna2=SUBSTR(lclunaAn2,1,2)
|
|
lcAn2 = SUBSTR(lclunaAn2,4)
|
|
ELSE
|
|
lcluna1=SUBSTR(PADL(lcPerioada,7,"0"),1,2)
|
|
lcAn1 = SUBSTR(PADL(lcPerioada,7,"0"),4)
|
|
lcluna2 = lcluna1
|
|
lcAn2 = lcAn1
|
|
ENDIF
|
|
|
|
IF lcEntitateAleasa = "<TOATE INREGISTRARILE>"
|
|
lcEntitateAleasa = "Toate Entitatile"
|
|
ENDIF
|
|
|
|
|
|
pnSemn = IIF(plActiv = .T., 1, -1)
|
|
pnId_part = lnId_part
|
|
*!* modificare v 2.0.85
|
|
*!* pcCont = tcCont
|
|
*!* modificare v 2.0.85 ^
|
|
pcPerioada = lcPerioada
|
|
|
|
pcAnalitic=ALLTRIM(pcAnalitic)
|
|
*MESSAGEBOX(pcAnalitic)
|
|
** restrictii:
|
|
** totzi partenerii => doar luna curenta, (simplu=NEgrupat sau grupat)
|
|
** singur partener => raport simplu=NEgrupat (pe o luna sau pe un interval de luni)
|
|
|
|
*** creare structura cursor:
|
|
|
|
|
|
CREATE CURSOR cursor_raport (nrord c(50) NULL, contract c(30) NULL, fel_document c(30) NULL, PART c(100) NULL, partX c(100) NULL, serie_act C(10) NULL, nract N(20), dataact d NULL,datascad d NULL, ;
|
|
debit N(20,4), credit N(20,4), soldi N(20,4), soldf N(20,4), dataireg d NULL, id_lucrare N(10), id_fdoc N(10), an N(4), luna N(2), ;
|
|
id_part N(10), id_partX N(10), id_fact N(10), id_factX N(10), perecheX N(14), contX c(4))
|
|
|
|
*** sold initial:
|
|
*** luna pentru soldurile initiale = max(luna de initializare solduri, luna de inceput)
|
|
*!* 04.08.2011
|
|
LOCAL lnAnLunaInitializare, lnAnInitializare, lnLunaInitializare
|
|
lnAnLunaInitializare = 0
|
|
lnLunaInitializare = VAL(m.lcLuna1)
|
|
lnAnInitializare = VAL(m.lcAn1)
|
|
lnNrLuni1 = VAL(m.lcAn1)*12 + VAL(m.lcLuna1)
|
|
lnNrLuni2 = VAL(m.lcAn2)*12 + VAL(m.lcLuna2)
|
|
|
|
lcSql = [SELECT MIN(an*12 + luna) as luna_initializare FROM balanta_parteneri WHERE cont = ?pcCont and (precdeb <> 0 OR preccred <> 0 or debit <> 0 or credit <> 0) and an*12+luna BETWEEN ] + ;
|
|
ALLTRIM(STR(lnNrLuni1)) + [ and ] + ALLTRIM(STR(lnNrLuni2)) + IIF(pnId_part <> 0,[ and id_part = ?pnId_part],[])
|
|
lnSucces = goExecutor.oSelect2Value(lcSql, @lnAnLunaInitializare)
|
|
IF lnSucces < 0
|
|
aMESSAGEBOX(goExecutor.cEroare, 0+48, _screen.Caption)
|
|
ENDIF
|
|
lnAnLunaInitializare = MAX(NVL(m.lnAnLunaInitializare,0), lnAnInitializare * 12 + lnLunaInitializare )
|
|
|
|
NrLuni2AnLuna(lnAnLunaInitializare, @lnAnInitializare, @lnLunaInitializare)
|
|
lcAn1 = ALLTRIM(STR(INT(lnAnInitializare)))
|
|
lcLuna1 = PADL(INT(lnLunaInitializare), 2, '0')
|
|
*!* 04.08.2011 ^
|
|
|
|
*!* IF (lnId_part != 0) && simplu=NEgrupat <=> un singur partener
|
|
pcexec = [SELECT ?pnSemn*sum(precdeb-preccred) as sold_init from ] + ;
|
|
gcS + [.balanta_parteneri WHERE ] + IIF(pnId_part <> 0,[id_part =?pnId_part],[1=1]) + ;
|
|
[ and luna=] + ALLTRIM(STR(lnLunaInitializare)) + [ and an=] + ALLTRIM(STR(lnAnInitializare)) + [ and cont = ?pcCont] +IIF(EMPTY(pcAnalitic),[],[ and acont=?pcAnalitic ])+ gcCondSucursala
|
|
*!* ELSE
|
|
*!* pcexec = [SELECT ?pnSemn*(precdeb-preccred) as sold_init from ] + gcS + [.bal WHERE luna = ] + ALLTRIM(lcluna1) + [ and an=] + ALLTRIM(lcAn1) + [ and cont=] + ALLTRIM(lcCont)
|
|
*!* ENDIF
|
|
|
|
pcCursor = [sold_cursor]
|
|
pnsucces = goExecutor.oExecute(pcexec,pcCursor)
|
|
SELECT sold_cursor
|
|
GO TOP
|
|
IF ISNULL(sold_init)
|
|
lnSoldInit = 0
|
|
ELSE
|
|
lnSoldInit = sold_init
|
|
ENDIF
|
|
USE IN sold_cursor
|
|
|
|
*** inserare prima linie cu sold initial:
|
|
SELECT cursor_raport
|
|
IF (pnSemn = 1) && activ
|
|
INSERT INTO cursor_raport(nrord,debit,an,luna) VALUES("SOLD INITIAL "+lcluna1+"/"+lcAn1,lnSoldInit,VAL(lcAn1),VAL(lcluna1))
|
|
ELSE
|
|
INSERT INTO cursor_raport(nrord,credit,an,luna) VALUES("SOLD INITIAL "+lcluna1+"/"+lcAn1,lnSoldInit,VAL(lcAn1),VAL(lcluna1))
|
|
ENDIF
|
|
|
|
*** umplere cursor_raport cu datele din act:
|
|
If pcAnalitic #""
|
|
lcConditieAnaliticDebit=[ and ascd = ?pcAnalitic]
|
|
lcConditieAnaliticCredit=[ and ascc = ?pcAnalitic]
|
|
Else
|
|
lcConditieAnaliticDebit=[]
|
|
lcConditieAnaliticCredit=[]
|
|
EndIf
|
|
|
|
|
|
IF (lnId_part != 0) && simplu=NEgrupat <=> un singur partener
|
|
pcexec = [select l.nrord, c.contract, f.fel_document, p.nume as part, px.nume as partX,a.serie_act,a.nract,a.dataact,a.datascad, ] +;
|
|
[SUM(a.debit) as debit, SUM(a.credit) as credit,a.dataireg,a.id_lucrare,a.id_ctr, a.id_fdoc,a.an,a.luna,a.id_part,a.id_partX, a.id_fact, a.id_factX, a.perecheX, MAX(a.contX) as contX from ] +;
|
|
[(select (case when scd = ?pcCont then id_partd when scc = ?pcCont then id_partc else 00000000000000000 end) as id_part,]+;
|
|
[(case when scd = ?pcCont then id_partc when scc = ?pcCont then id_partd else 00000000000000000 end) as id_partX,]+;
|
|
Iif(!plDefalcatDocumentPereche, ;
|
|
[00000000000000000 as perecheX,], ;
|
|
[(case when scd = ?pcCont then perecheD when scc = ?pcCont then perecheC else 00000000000000000 end) as perecheX,]) + ;
|
|
Iif(!plDefalcatDocumentPereche, ;
|
|
[00000000000000000 as id_factX,], ;
|
|
[(case when scd = ?pcCont then id_factD when scc = ?pcCont then id_factC else 00000000000000000 end) as id_factX,]) + ;
|
|
[(case when scd = ?pcCont and ?pnSemn = -1 then scc when scc = ?pcCont and ?pnSemn = 1 then scd else ' ' end) as contX,]+;
|
|
[(case when (scd = ?pcCont and NVL(e.exceptie,0)=0) or (scc = ?pcCont and ?pnSemn=1 and NVL(e.exceptie,0)=1) then CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN -SUMA ELSE SUMA END else 0.0000 end) as debit,]+;
|
|
[(case when (scc = ?pcCont and NVL(e.exceptie,0)=0 ) or (scd = ?pcCont and ?pnSemn=-1 and NVL(e.exceptie,0)=1) then CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN -SUMA ELSE SUMA END else 0.0000 end) as credit,]+;
|
|
[id_fact, serie_act, nract, dataact,datascad, dataireg, id_lucrare, id_ctr, id_fdoc, an, luna ] +;
|
|
[ from act ] +;
|
|
[LEFT JOIN (SELECT DISTINCT 1 AS EXCEPTIE,]+;
|
|
[DECODE(DEBIT, 1, CONT_C, CONT) AS SCDe,]+;
|
|
[DECODE(DEBIT, 1, CONT, CONT_C) AS SCCe ]+;
|
|
[FROM EXCEPTII_IREG ]+;
|
|
[WHERE INVERS = 1 ]+;
|
|
[AND CONT = ']+pcCont+[') E ON Act.SCD = E.SCDe ]+;
|
|
[AND Act.SCC = E.SCCe ]+;
|
|
[where sters = 0 and ((scd = ?pcCont and id_partd = ?pnId_part]+lcConditieAnaliticDebit+[) or (scc = ?pcCont and id_partc = ?pnId_part]+lcConditieAnaliticCredit+[))] + ;
|
|
gcCondSucursala + ;
|
|
[ and an*12+luna between ] + ALLTRIM(lcAn1) + [*12+] + ALLTRIM(lcluna1) + [ and ] + ALLTRIM(lcAn2) + [*12+] + ALLTRIM(lcluna2) + [) a ] +;
|
|
[left join vnom_lucrari l on a.id_lucrare = l.id_lucrare ] +;
|
|
[left join vcontracte c on a.id_ctr = c.id_ctr ] +;
|
|
[left join nom_fdoc f on a.id_fdoc = f.id_fdoc ] +;
|
|
[left join nom_parteneri p on a.id_part = p.id_part ] +;
|
|
[left join nom_parteneri px on a.id_partX = px.id_part ] +;
|
|
[group by l.nrord, c.contract, f.fel_document, p.nume, px.nume,a.serie_act, a.nract,a.dataact,a.datascad,a.dataireg,a.id_lucrare,a.id_ctr,a.id_fdoc,a.an,a.luna,a.id_part,a.id_partX, a.id_fact ] + ;
|
|
[,a.id_factX, a.perecheX ] + ;
|
|
[order by a.dataact, a.nract]
|
|
ELSE
|
|
pcexec = [select l.nrord, c.contract, f.fel_document, p.nume as part, px.nume as partX,a.serie_act,a.nract,a.dataact,a.datascad, ] +;
|
|
[SUM(a.debit) as debit, SUM(a.credit) as credit,a.dataireg,a.id_lucrare,a.id_ctr,a.id_fdoc,a.an,a.luna,a.id_part,a.id_partX, a.id_fact, a.id_factX, a.perecheX, MAX(a.contX) from ] +;
|
|
[(select (case when scd = ?pcCont then id_partd when scc = ?pcCont then id_partc else 00000000000000000 end) as id_part,]+;
|
|
[(case when scd = ?pcCont then id_partc when scc = ?pcCont then id_partd else 00000000000000000 end) as id_partX,]+;
|
|
Iif(!plDefalcatDocumentPereche, [00000000000000000 as perecheX,], ;
|
|
[(case when scd = ?pcCont then perecheD when scc = ?pcCont then perecheC else 00000000000000000 end) as perecheX,]) + ;
|
|
Iif(!plDefalcatDocumentPereche, [00000000000000000 as id_factX,], ;
|
|
[(case when scd = ?pcCont then id_factD when scc = ?pcCont then id_factC else 00000000000000000 end) as id_factX,]) + ;
|
|
[(case when scd = ?pcCont and ?pnSemn = -1 then scc when scc = ?pcCont and ?pnSemn = 1 then scd else ' ' end) as contX,]+;
|
|
[(case when (scd = ?pcCont and NVL(e.exceptie,0)=0) or (scc = ?pcCont and ?pnSemn=1 and NVL(e.exceptie,0)=1) then CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN -SUMA ELSE SUMA END else 0.0000 end) as debit,]+;
|
|
[(case when (scc = ?pcCont and NVL(e.exceptie,0)=0) or (scd = ?pcCont and ?pnSemn=-1 and NVL(e.exceptie,0)=1) then CASE WHEN NVL(E.EXCEPTIE,0) = 1 THEN -SUMA ELSE SUMA END else 0.0000 end) as credit,]+;
|
|
[id_fact, serie_act, nract, dataact,datascad, dataireg, id_lucrare, id_ctr,id_fdoc, an, luna ]+;
|
|
[ from act ] +;
|
|
[LEFT JOIN (SELECT DISTINCT 1 AS EXCEPTIE,]+;
|
|
[DECODE(DEBIT, 1, CONT_C, CONT) AS SCDe,]+;
|
|
[DECODE(DEBIT, 1, CONT, CONT_C) AS SCCe ]+;
|
|
[FROM EXCEPTII_IREG ]+;
|
|
[WHERE INVERS = 1 ]+;
|
|
[AND CONT = ']+pcCont+[') E ON Act.SCD = E.SCDe ]+;
|
|
[AND Act.SCC = E.SCCe ]+;
|
|
[where sters = 0 and ((scd = ?pcCont]+lcConditieAnaliticDebit+[) or (scc = ?pcCont ]+lcConditieAnaliticCredit+[))] + ;
|
|
gcCondSucursala + ;
|
|
[ and an*12+luna between ] + ALLTRIM(lcAn1) + [*12+] + ALLTRIM(lcluna1) + [ and ] + ALLTRIM(lcAn2) + [*12+] + ALLTRIM(lcluna2) + [) a ] +;
|
|
[left join vnom_lucrari l on a.id_lucrare = l.id_lucrare ] +;
|
|
[left join vcontracte c on a.id_ctr = c.id_ctr ] +;
|
|
[left join nom_fdoc f on a.id_fdoc = f.id_fdoc ] +;
|
|
[left join nom_parteneri p on a.id_part = p.id_part ] +;
|
|
[left join nom_parteneri px on a.id_partX = px.id_part ] +;
|
|
[group by l.nrord, c.contract, f.fel_document, p.nume, px.nume,a.serie_act,a.nract,a.dataact,a.datascad,a.dataireg,a.id_lucrare,a.id_ctr,a.id_fdoc,a.an,a.luna,a.id_part,a.id_partX, a.id_fact ] + ;
|
|
[,a.id_factX, a.perecheX ] + ;
|
|
[order by ] + IIF(lnFel_raport = 1,[p.nume,a.id_part,],[]) + [a.dataact, a.nract]
|
|
ENDIF
|
|
|
|
pcCursor = [cursor_act]
|
|
pnsucces = goExecutor.oExecute(pcexec,pcCursor)
|
|
IF pnsucces < 0
|
|
AMESSAGEBOX('Eroare la cursor_act : ' + goExecutor.cEroare)
|
|
RETURN
|
|
ENDIF
|
|
|
|
SELECT cursor_raport
|
|
APPEND FROM DBF('cursor_act')
|
|
** calculare si inserare sold cumulat:
|
|
**[prinde in calcul si soldul initial, acesta fiind trecut pe coloana debit sau credit, pe prima linie]
|
|
|
|
*---------------- UN FEL DE DENOMINARE daca data in care am intrat este mai mare decat 7/2005
|
|
IF (gnan*12 + gnluna >= gnAnRon*12 + gnLunaRon) AND (VAL(lcluna1) + VAL(lcAn1)*12 < gnAnRon*12 + gnLunaRon)
|
|
SELECT cursor_raport
|
|
REPLACE ALL debit WITH debit/10000 FOR an *12 + luna < gnAnRon*12 + gnLunaRon
|
|
REPLACE ALL credit WITH credit/10000 FOR an *12 + luna < gnAnRon*12 + gnLunaRon
|
|
ENDIF
|
|
*---------------- END UN FEL DE DENOMINARE
|
|
|
|
IF !(lnFel_raport = 1) && NEgrupat
|
|
STORE 0 TO lnSold_Initial_Total
|
|
STORE 0 TO lnSold_Final_Total
|
|
STORE 0 TO sold_cumulat
|
|
|
|
SELECT cursor_raport
|
|
LOCATE
|
|
lnSold_Initial_Total = lnSold_Initial_Total + pnSemn*(debit - credit)
|
|
SCAN
|
|
sold_cumulat = sold_cumulat + pnSemn*(debit - credit)
|
|
REPLACE soldf WITH sold_cumulat
|
|
ENDSCAN
|
|
lnSold_Final_Total = sold_cumulat
|
|
ELSE
|
|
** incarcare vector cu solduri initiale pe fiecare partener:
|
|
*** sold initial/partener:
|
|
pcexec = [SELECT id_part, nume as part, sum(?pnSemn*(precdeb-preccred)) as sold_init, 0 as ales ] + ;
|
|
[from vbalanta_parteneri WHERE luna=] + ALLTRIM(STR(lnLunaInitializare)) + [ and an=] + ALLTRIM(STR(lnAnInitializare)) + [ and cont = ?pcCont ] +;
|
|
gcCondSucursala + ;
|
|
[ group by id_part, nume order by nume ]
|
|
*!* 04.08.2011 ^
|
|
pcCursor = [sold_cursor]
|
|
pnsucces = goExecutor.oExecute(pcexec,pcCursor)
|
|
|
|
** calculare si inserare sold initial,sold final/fiece partener:
|
|
STORE 0 TO lnSold_Initial_Total
|
|
STORE 0 TO lnSold_Final_Total
|
|
STORE 1 TO j
|
|
STORE 0 TO sold_final, sold_ini
|
|
STORE 0 TO lnId_part_curent
|
|
|
|
SELECT sold_cursor
|
|
SCAN
|
|
SCATTER NAME osold
|
|
lnSold_Initial_Total = lnSold_Initial_Total + osold.sold_init
|
|
lnSold_Final_Total = lnSold_Final_Total + osold.sold_init
|
|
sold_final = osold.sold_init
|
|
SELECT cursor_raport
|
|
SCAN FOR id_part = osold.id_part
|
|
sold_final = sold_final + pnSemn*(debit - credit)
|
|
lnSold_Final_Total = lnSold_Final_Total + pnSemn*(debit - credit)
|
|
REPLACE soldf WITH sold_final
|
|
REPLACE soldi WITH osold.sold_init
|
|
osold.ales = 1
|
|
SELECT cursor_raport
|
|
ENDSCAN
|
|
IF osold.ales = 0 AND osold.sold_init <> 0
|
|
SELECT cursor_raport
|
|
APPEND BLANK
|
|
REPLACE id_part WITH osold.id_part, PART WITH osold.PART, soldi WITH osold.sold_init, soldf WITH osold.sold_init
|
|
ENDIF
|
|
SELECT sold_cursor
|
|
ENDSCAN
|
|
IF USED('sold_cursor')
|
|
USE IN sold_cursor
|
|
ENDIF
|
|
|
|
****** cu array
|
|
*!* SELECT DISTINCT id_part, sold_init FROM sold_cursor INTO ARRAY laId_part
|
|
*!* SELECT cursor_raport
|
|
*!* LOCATE
|
|
*!* *sold_final = pnSemn*(debit - credit)&& sa calculeze in functie de soldu init
|
|
*!* IF RECCOUNT()>1
|
|
*!* GOTO 2 && pe prima e soldu init, nu partener
|
|
*!* lnId_part_curent = id_part
|
|
*!* lnNrRand = ALEN(laId_part,1)
|
|
*!* lnElem = ASCAN(laId_part, lnId_part_curent,1,lnNrRand,1)
|
|
*!* lnLinie = ASUBSCRIPT(laId_part, lnElem, 1)
|
|
*!* sold_ini = laId_part[lnLinie,2]
|
|
*!* sold_final = sold_ini
|
|
*!* lnSold_Initial_Total = lnSold_Initial_Total + sold_ini
|
|
*!* lnSold_Final_Total = lnSold_Final_Total + sold_ini
|
|
*!*
|
|
*!* SCAN FOR id_part <> 0 && prima linie = cea cu soldu init total=> are id_part = 0 =>fara ea
|
|
*!* *** sold final calculat: e sold final deabia pe ultima linie corespunzatoare fiecarui partener, in rest (pana acolo) e sold_cumulat
|
|
*!* IF (id_part != lnId_part_curent)
|
|
*!* lnId_part_curent = id_part
|
|
*!* lnElem = ASCAN(laId_part, lnId_part_curent,1,lnNrRand,1)
|
|
*!* lnLinie = ASUBSCRIPT(laId_part, lnElem, 1)
|
|
*!* sold_ini = laId_part[lnLinie,2]
|
|
*!* sold_final = sold_ini
|
|
*!* lnSold_Initial_Total = lnSold_Initial_Total + sold_ini
|
|
*!* lnSold_Final_Total = lnSold_Final_Total + sold_ini
|
|
*!* ENDIF
|
|
*!* sold_final = sold_final + pnSemn*(debit - credit)
|
|
*!* lnSold_Final_Total = lnSold_Final_Total + pnSemn*(debit - credit)
|
|
*!* REPLACE soldf WITH sold_final
|
|
*!* *REPLACE soldi WITH laId_part[lnLinie,2]
|
|
*!* REPLACE soldi WITH sold_ini
|
|
*!* ENDSCAN
|
|
*!* ENDIF
|
|
ENDIF
|
|
|
|
|
|
**afisare raport sau forma de vizualizare:
|
|
If tcRaport_sau_Vizualizare == "Vizualizare"
|
|
op=Createobject(tc_NumeForma,laId_part)
|
|
op.Lb_titlu_alb_b121.Caption = 'SITUATIE OPERATIVA ' + pcCont + ' - ' +lcEntitateAleasa
|
|
op.Show(1)
|
|
Else
|
|
*!* modificare v 2.0.84
|
|
*!* If Reccount('cursor_raport')>0
|
|
If Reccount('cursor_raport')>1 && are intotdeauna o linie (soldul initial)
|
|
Private pnOptiune
|
|
Local lnNrOptiuni,loFrmOpt
|
|
pnOptiune = 1
|
|
lnNrOptiuni=2
|
|
Do While gnButon = 1
|
|
loFrmOpt=Createobject("frm_optiune",[Vizualizare raport],[Alegeti modalitatea de vizualizare:],lnNrOptiuni,[Listare la imprimanta;Export in Excel;])
|
|
loFrmOpt.Show(1)
|
|
Release loFrmOpt
|
|
If gnButon = 1
|
|
If pnOptiune = 1
|
|
*!* modificare v 2.0.84 ^
|
|
pctitlu = lcTitlu
|
|
*!* pcdataora = get_ora(2)
|
|
*!* Select cursor_raport
|
|
*!* IF (lnId_part != 0)
|
|
*!* REPORT FORMAT sit_oper_sing_rpt1 TO PRINTER PROMPT NOCONSOLE PREVIEW
|
|
*!* ELSE
|
|
Select cursor_raport
|
|
Set Filter To ID_PART <> 0
|
|
If (lnFel_raport = 1) && grupat
|
|
*!* Report Format sit_oper_multi_gr_rpt1 To Printer Prompt Noconsole Preview
|
|
lcRaport = [sit_oper_multi_gr_rpt1]
|
|
Else && NEgrupat
|
|
*!* Report Format sit_oper_multi_NEgr_rpt1 To Printer Prompt Noconsole Preview
|
|
lcRaport = [sit_oper_multi_NEgr_rpt1]
|
|
Endif
|
|
goExport.export2frx([cursor_raport],lcRaport,, , , , , .T.)
|
|
*!* ENDIF
|
|
*!* modificare v 2.0.84
|
|
ELSE
|
|
If Used('cursor_excel')
|
|
Use In cursor_excel
|
|
Endif
|
|
lcSelect = [Select Cast(fel_document As c(100)) As fel_document,dataireg as data_inreg,dataact as data_act,] + ;
|
|
[CAST((Alltrim(Alltrim(Nvl(serie_act,''))+' '+Alltrim(Str(nract,20)))) As c(100)) As nr_act,] + ;
|
|
[CAST(part as c(100)) as partener,CAST(allt(nvl(nrord, ''))+IIF(!EMPTY(NVL(contract,'')),';', '')+allt(nvl(contract,'')) As c(100)) As lucrare_contract,] + ;
|
|
[CAST(credit As N(14,gnPa)) As credit,Cast(debit As N(14,gnPa)) As debit,] + ;
|
|
[CAST(soldi As N(14,gnPa)) As soldi,Cast(soldf As N(14,gnPa)) As soldf] + ;
|
|
IIF(plDefalcatDocumentPereche,[,CAST(ALLTRIM(STR(perechex)) As c(50)) As doc_pereche],[]) + [ From cursor_raport ] + ;
|
|
[ORDER BY ] + IIF(lnFel_raport = 1,[5,],[]) + [3,4 Into Cursor cursor_excel]
|
|
&lcSelect
|
|
goExport.export2xlsx([cursor_excel])
|
|
Use In cursor_excel
|
|
Endif
|
|
Endif
|
|
Enddo
|
|
*!* modificare v 2.0.84 ^
|
|
Else
|
|
amessagebox("Nu exista inregistrari pentru listare/export!",48,"Atentie")
|
|
Endif
|
|
Use In cursor_raport
|
|
Endif
|
|
|
|
ENDPROC
|
|
|
|
********************************************************************************************
|
|
|