*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.21" SourceFile="orapoarte.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
*
*
DEFINE CLASS ct_grup_camp AS _container OF "..\comun\clase\_baza.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="ck_ordine" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lb_nume_camp" UniqueID="" Timestamp="" />
*
*m: do_actualizeaza_ordine
*p: ccamp
*p: cnumecamp
*p: ngrupat
*p: nordine
*p: _memberdata && XML Metadata for customizable properties
*
*
BorderWidth = 0
ccamp =
cnumecamp =
Height = 17
Name = "ct_grup_camp"
ngrupat = 0
nordine = 0
Width = 183
_memberdata =
*
ADD OBJECT 'ck_ordine' AS _checkbox WITH ;
Alignment = 0, ;
AutoSize = .F., ;
Caption = "[Ordine camp]", ;
Height = 17, ;
Left = 122, ;
Name = "ck_ordine", ;
Top = 1, ;
Width = 43
*< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="checkbox" />
ADD OBJECT 'lb_nume_camp' AS lb_simplu WITH ;
AutoSize = .F., ;
Caption = "[Explicatie camp]", ;
Height = 17, ;
Left = 2, ;
Name = "lb_nume_camp", ;
Top = 1, ;
Width = 118
*< END OBJECT: ClassLib="..\comun\clase\lb.vcx" BaseClass="label" />
PROCEDURE do_actualizeaza_ordine
Lparameters tnOrdine
If !Empty(tnOrdine)
This.lb_nume_camp.FontBold = .T.
This.ck_ordine.Caption = Alltrim(Str(tnOrdine))
This.ngrupat = 1
Else
This.lb_nume_camp.FontBold = .F.
This.ck_ordine.Caption = []
This.ngrupat = 0
Endif
This.nordine = tnOrdine
ENDPROC
PROCEDURE Init
Lparameters tcCamp,tcNumeCamp
This.ccamp = tcCamp
This.cnumeCamp = tcNumeCamp
This.lb_nume_camp.Caption = This.cnumeCamp
This.do_actualizeaza_ordine(0)
ENDPROC
PROCEDURE ck_ordine.Click
This.Parent.Parent.do_modifica_ordine(This.Parent.Name,This.Parent.nordine,This.Value)
ENDPROC
ENDDEFINE
DEFINE CLASS ct_grupare AS _container OF "..\comun\clase\_baza.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="lb_grupare" UniqueID="" Timestamp="" />
*
*m: do_adauga_ct
*m: do_modifica_ordine
*m: do_sterge_ct
*p: cclasa && Numele clasei ce va fi instantiata la adaugare.
*p: nleft
*p: nleft2 && 90
*p: nmaxtop
*p: nmaxtop2
*p: nmax_ordine
*p: _memberdata && XML Metadata for customizable properties
*
*
cclasa = ct_grup_camp
Height = 200
Name = "ct_grupare"
nleft = 15
nleft2 = 90
nmaxtop = 0
nmaxtop2 = 0
nmax_ordine = 0
Width = 353
_memberdata =
*
ADD OBJECT 'lb_grupare' AS lb_simplu WITH ;
Caption = "Grupat dupa :", ;
Height = 17, ;
Left = 12, ;
Name = "lb_grupare", ;
TabIndex = 8, ;
Top = 6, ;
Visible = .T., ;
Width = 76
*< END OBJECT: ClassLib="..\comun\clase\lb.vcx" BaseClass="label" />
PROCEDURE do_adauga_ct
Lparameters tcCamp,tcNumeCamp
Local lcClasa,lcNumeObiect
If Empty(This.cclasa)
lcClasa = [CT_GRUP_CAMP]
Else
lcClasa = Upper(Alltrim(This.cclasa))
Endif
lcNumeObiect = Upper(Alltrim([ct_grup_] + Strtran(tcCamp,[.],[_])))
This.AddObject(lcNumeObiect,lcClasa,tcCamp,tcNumeCamp)
With This.&lcNumeObiect.
.Left = This.nLeft
.Top = This.nMaxTop
This.nMaxTop = .Top + .Height - 2
.Visible = .T.
Endwith
ENDPROC
PROCEDURE do_modifica_ordine
Lparameters tcNumeObiect,tnOrdine,tnValoare
If Empty(This.cclasa)
lcClasa = [CT_GRUP_CAMP]
Else
lcClasa = Upper(Alltrim(This.cclasa))
Endif
If tnValoare = 0
For i = 1 To This.Objects.Count
With This.Objects(i)
If Upper(Alltrim(.Class))=lcClasa
Do Case
Case .nordine = tnOrdine
If Pemstatus(This.Parent,"do_modifica",5)
This.Parent.do_modifica(2,.ccamp,.nordine - 1)
Endif
.do_actualizeaza_ordine(0)
Case .nordine > tnOrdine
If Pemstatus(This.Parent,"do_modifica",5)
This.Parent.do_modifica(2,.ccamp,.nordine - 1)
Endif
.do_actualizeaza_ordine(.nordine - 1)
Endcase
Endif
Endwith
Endfor
This.nmax_ordine = This.nmax_ordine - 1
Else
This.nmax_ordine = This.nmax_ordine + 1
With This.&tcNumeObiect.
If Pemstatus(This.Parent,"do_modifica",5)
This.Parent.do_modifica(2,.ccamp,This.nmax_ordine)
Endif
.do_actualizeaza_ordine(This.nmax_ordine)
Endwith
Endif
ENDPROC
PROCEDURE do_sterge_ct
Lparameters tcCamp
Local lcClasa,lcNumeObiect
If Empty(This.cclasa)
lcClasa = [CT_GRUP_CAMP]
Else
lcClasa = Upper(Alltrim(This.cclasa))
Endif
lcNumeObiect = Upper(Alltrim([ct_grup_] + Strtran(tcCamp,[.],[_])))
If Type('this.'+lcNumeObiect)<>'U'
With This.&lcNumeObiect.
lnHeight = .Height
lnTop = .Top
lnOrdine = .nordine
Endwith
This.RemoveObject(lcNumeObiect,lcClasa)
For i = 1 To This.Objects.Count
With This.Objects(i)
If Upper(Alltrim(.Class))=lcClasa
If lnOrdine > 0 And .nordine > lnOrdine
If Pemstatus(This.Parent,"do_modifica",5)
This.Parent.do_modifica(2,.ccamp,.nordine - 1)
Endif
.do_actualizeaza_ordine(.nordine - 1)
Endif
If .Top > lnTop
.Top = .Top - lnHeight + 2
Endif
Endif
Endwith
Endfor
This.nMaxTop = This.nMaxTop - lnHeight + 2
This.nmax_ordine = This.nmax_ordine - Iif(lnOrdine = 0,0,1)
Endif
ENDPROC
PROCEDURE Init
DoDefault()
This.nmaxtop = This.lb_grupare.Top + This.lb_grupare.Height
ENDPROC
ENDDEFINE
DEFINE CLASS ct_ordine_camp AS _container OF "..\comun\clase\_baza.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="ck_ordine" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lb_nume_camp" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="opt_ordine" UniqueID="" Timestamp="" />
*
*m: do_actualizeaza_ordine
*p: ccamp
*p: cnumecamp
*p: csens
*p: nordine
*
*
BorderWidth = 0
ccamp =
cnumecamp =
csens =
Height = 17
Name = "ct_ordine_camp"
nordine = 0
Width = 302
*
ADD OBJECT 'ck_ordine' AS _checkbox WITH ;
Alignment = 0, ;
AutoSize = .F., ;
Caption = "[Ordine camp]", ;
Height = 17, ;
Left = 122, ;
Name = "ck_ordine", ;
Top = 0, ;
Width = 43
*< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="checkbox" />
ADD OBJECT 'lb_nume_camp' AS lb_simplu WITH ;
AutoSize = .F., ;
Caption = "[Explicatie camp]", ;
Height = 17, ;
Left = 2, ;
Name = "lb_nume_camp", ;
Top = 0, ;
Width = 118
*< END OBJECT: ClassLib="..\comun\clase\lb.vcx" BaseClass="label" />
ADD OBJECT 'opt_ordine' AS _optiongrup WITH ;
BorderStyle = 0, ;
Height = 28, ;
Left = 160, ;
Name = "opt_ordine", ;
Top = -6, ;
Width = 146, ;
Option1.AutoSize = .T., ;
Option1.Caption = "Crescator", ;
Option1.FontName = "Arial Narrow", ;
Option1.Left = 5, ;
Option1.Name = "Option1", ;
Option1.Top = 5, ;
Option2.AutoSize = .T., ;
Option2.Caption = "Descrescator", ;
Option2.FontName = "Arial Narrow", ;
Option2.Left = 68, ;
Option2.Name = "Option2", ;
Option2.Top = 5
*< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="optiongroup" />
PROCEDURE do_actualizeaza_ordine
Lparameters tnOrdine
If !Empty(tnOrdine)
This.lb_nume_camp.FontBold = .T.
This.ck_ordine.Caption = Alltrim(Str(tnOrdine))
This.opt_ordine.Visible = .T.
Else
This.lb_nume_camp.FontBold = .F.
This.ck_ordine.Caption = []
With This.opt_ordine
.Visible = .F.
.Value = 1
Endwith
Endif
This.nordine = tnOrdine
ENDPROC
PROCEDURE Init
Lparameters tcCamp,tcNumeCamp
This.ccamp = tcCamp
This.cnumecamp = tcNumeCamp
This.lb_nume_camp.Caption = tcNumeCamp
This.do_actualizeaza_ordine(0)
ENDPROC
PROCEDURE ck_ordine.Click
This.Parent.Parent.do_modifica_ordine(This.Parent.Name,This.Parent.nordine,This.Value)
ENDPROC
PROCEDURE opt_ordine.InteractiveChange
If This.Value = 1
This.Parent.csens = []
Else
This.Parent.csens = [DESC]
Endif
This.Parent.Parent.do_modifica_sens(This.Parent.ccamp,This.Value)
ENDPROC
ENDDEFINE
DEFINE CLASS ct_ordonare AS _container OF "..\comun\clase\_baza.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="lb_ordonare" UniqueID="" Timestamp="" />
*
*m: do_adauga_ct
*m: do_modifica_ordine
*m: do_modifica_sens
*m: do_sterge_ct
*p: cclasa && Numele clasei ce va fi instantiata la adaugare.
*p: nleft
*p: nleft2 && 90
*p: nmaxtop
*p: nmaxtop2
*p: nmax_ordine
*p: _memberdata && XML Metadata for customizable properties
*
*
cclasa = ct_ordine_camp
Height = 200
Name = "ct_ordonare"
nleft = 9
nleft2 = 90
nmaxtop = 0
nmaxtop2 = 0
nmax_ordine = 0
Width = 353
_memberdata =
*
ADD OBJECT 'lb_ordonare' AS lb_simplu WITH ;
Caption = "Ordonate dupa:", ;
Height = 17, ;
Left = 8, ;
Name = "lb_ordonare", ;
TabIndex = 8, ;
Top = 6, ;
Visible = .T., ;
Width = 87
*< END OBJECT: ClassLib="..\comun\clase\lb.vcx" BaseClass="label" />
PROCEDURE do_adauga_ct
Lparameters tcCamp,tcNumeCamp
Local lcClasa,lcNumeObiect
If Empty(This.cclasa)
lcClasa = [CT_ORDINE_CAMP]
Else
lcClasa = Upper(Alltrim(This.cclasa))
Endif
lcNumeObiect = Upper(Alltrim([ct_ordine_] + Strtran(tcCamp,[.],[_])))
This.AddObject(lcNumeObiect,lcClasa,tcCamp,tcNumeCamp)
With This.&lcNumeObiect.
.Left = This.nLeft
.Top = This.nMaxTop
This.nMaxTop = .Top + .Height - 2
.Visible = .T.
Endwith
ENDPROC
PROCEDURE do_modifica_ordine
Lparameters tcNumeObiect,tnOrdine,tnValoare
If Empty(This.cclasa)
lcClasa = [CT_ORDINE_CAMP]
Else
lcClasa = Upper(Alltrim(This.cclasa))
Endif
If tnValoare = 0
For i = 1 To This.Objects.Count
With This.Objects(i)
If Upper(Alltrim(.Class))=lcClasa
Do Case
Case .nordine = tnOrdine
If Pemstatus(This.Parent,"do_modifica",5)
This.Parent.do_modifica(3,.ccamp,0)
Endif
.do_actualizeaza_ordine(0)
Case .nordine > tnOrdine
If Pemstatus(This.Parent,"do_modifica",5)
This.Parent.do_modifica(3,.ccamp,.nordine - 1)
Endif
.do_actualizeaza_ordine(.nordine - 1)
Endcase
Endif
Endwith
Endfor
This.nmax_ordine = This.nmax_ordine - 1
Else
This.nmax_ordine = This.nmax_ordine + 1
With This.&tcNumeObiect.
If Pemstatus(This.Parent,"do_modifica",5)
This.Parent.do_modifica(3,.ccamp,This.nmax_ordine)
Endif
.do_actualizeaza_ordine(This.nmax_ordine)
Endwith
Endif
ENDPROC
PROCEDURE do_modifica_sens
Lparameters tcCamp,tnSens
If Pemstatus(This.Parent,"do_modifica",5)
This.Parent.do_modifica(4,tcCamp,tnSens)
Endif
ENDPROC
PROCEDURE do_sterge_ct
Lparameters tcCamp
Local lcClasa,lcNumeObiect
If Empty(This.cclasa)
lcClasa = [CT_ORDINE_CAMP]
Else
lcClasa = Upper(Alltrim(This.cclasa))
Endif
lcNumeObiect = Upper(Alltrim([ct_ordine_] + Strtran(tcCamp,[.],[_])))
If Type('this.'+lcNumeObiect)<>'U'
With This.&lcNumeObiect.
lnHeight = .Height
lnTop = .Top
lnOrdine = .nordine
Endwith
This.RemoveObject(lcNumeObiect,lcClasa)
For i = 1 To This.Objects.Count
With This.Objects(i)
If Upper(Alltrim(.Class))=lcClasa
If lnOrdine > 0 And .nordine > lnOrdine
If Pemstatus(This.Parent,"do_modifica",5)
This.Parent.do_modifica(3,.ccamp,.nordine - 1)
Endif
.do_actualizeaza_ordine(.nordine - 1)
Endif
If .Top > lnTop
.Top = .Top - lnHeight + 2
Endif
Endif
Endwith
Endfor
This.nMaxTop = This.nMaxTop - lnHeight + 2
This.nmax_ordine = This.nmax_ordine - Iif(lnOrdine = 0,0,1)
Endif
ENDPROC
PROCEDURE Init
DoDefault()
This.nmaxtop = This.lb_ordonare.Top + This.lb_ordonare.Height
ENDPROC
ENDDEFINE
DEFINE CLASS ct_selectie AS _container OF "..\comun\clase\_baza.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="Ct_grupare1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_ordonare1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="lb_coloane" UniqueID="" Timestamp="" />
*
*m: do_adauga
*m: do_compune_ordine_selectie
*m: do_instructiune_sql
*m: do_modifica
*m: do_sterge
*p: cclasa && Clasa folosita pentru checkbox-urile din selectii.
*p: ccoloanesuma && Numele coloanelor care sunt agregate.
*p: clistacoloaneordine && Lista delimitata prin virgula ce contine pozitiile din ccoloanesuma pentru care se vor adauga containere la ordonare.
*p: cnumecoloanesuma
*p: cnumetabela && Numele tabelei/view-ului din care se face selectia.
*p: cordine
*p: csql
*p: nelemente && Numarul de elemente din this.aselectie
*a: aselectie[30,4]
*
*
cclasa = ct_selectie_camp
ccoloanesuma =
clistacoloaneordine =
cnumecoloanesuma =
cnumetabela =
cordine =
csql =
Height = 364
Name = "ct_selectie"
nelemente = 0
Width = 332
*
ADD OBJECT 'Ct_grupare1' AS ct_grupare WITH ;
Height = 133, ;
Left = 5, ;
Name = "Ct_grupare1", ;
Top = 227, ;
Width = 320, ;
lb_grupare.Name = "lb_grupare"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
ADD OBJECT 'Ct_ordonare1' AS ct_ordonare WITH ;
Height = 133, ;
Left = 5, ;
Name = "Ct_ordonare1", ;
Top = 95, ;
Width = 320, ;
lb_ordonare.Name = "lb_ordonare"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
ADD OBJECT 'lb_coloane' AS lb_simplu WITH ;
Caption = "Coloane in selectie:", ;
Height = 17, ;
Left = 10, ;
Name = "lb_coloane", ;
TabIndex = 9, ;
Top = 6, ;
Width = 111
*< END OBJECT: ClassLib="..\comun\clase\lb.vcx" BaseClass="label" />
PROCEDURE do_adauga
Lparameters tcCamp,tcNumeCamp,tlGrupare,tlOrdine
This.nelemente = This.nelemente + 1
Ains(This.aselectie,This.nelemente)
This.aselectie[This.nelemente,1]=Upper(Alltrim(tcCamp))
This.aselectie[this.nelemente,2]=0
This.aselectie[this.nelemente,3]=0
This.aselectie[this.nelemente,4]=0
If tlGrupare
This.ct_grupare1.do_adauga_ct(Upper(Alltrim(tcCamp)),tcNumeCamp)
Endif
If tlOrdine
This.ct_ordonare1.do_adauga_ct(Upper(Alltrim(tcCamp)),tcNumeCamp)
Endif
ENDPROC
PROTECTED PROCEDURE do_compune_ordine_selectie
Lparameters taArraySelectie
Local lcOrdine, lcSens
lcOrdine = []
ASORT(taArraySelectie,3)
For i = 1 To Alen(taArraySelectie,1)
If !Empty(taArraySelectie[i,1]) And !Empty(Nvl(taArraySelectie[i,3],0))
If Empty(taArraySelectie[i,4]) Or (taArraySelectie[i,4] = 1)
lcSens = []
Else
lcSens = [ DESC]
Endif
lcOrdine = lcOrdine + [,] + taArraySelectie[i,1] + lcSens
Endif
Endfor
This.cOrdine = lcOrdine
ENDPROC
PROCEDURE do_instructiune_sql
Local llSelectieVida,lcSql,lcColoaneGrupate,lcAlteColoane,lcColoaneSuma,lcSelect,lcFiltru,lcGroupBy,lcOrderBy,lcOrdine,lcOrdineGrup
Local lnPozitii
Store .T. To llSelectieVida
If !Empty(This.clistacoloaneordine)
lnPozitii = Getwordcount(This.clistacoloaneordine,[,]) + 1
Else
lnPozitii = 1
Endif
For i = lnPozitii To Alen(Thisform.ct_selectie1.aselectie,1)
If !Empty(Thisform.ct_selectie1.aselectie[i,1])
llSelectieVida = .F.
Exit
Endif
Endfor
If llSelectieVida
lcSql = []
Else
Dimension laArraySelectie(This.nelemente,4)
Acopy(This.aselectie,laArraySelectie,1,This.nelemente*4)
This.do_compune_ordine_selectie(@laArraySelectie)
lcColoaneAgregare = This.ccoloanesuma
lcView = gcS + [.] + This.cnumetabela
lcColoaneGrupate = []
lcAlteColoane = []
lcColoaneSuma = []
lcSelect = []
lcFiltru = [1=2]
lcGroupBy = []
lcOrderBy = []
lcOrdine = This.cordine
lcOrdineGrup = []
If !Empty(This.clistacoloaneordine)
*!* sterg coloana pentru care se va face suma
For i = 1 To lnPozitii - 1
lnPozColoana = VAL(GETWORDNUM(this.clistacoloaneordine,i,[,]))
lcColoana = GETWORDNUM(this.ccoloanesuma,lnPozColoana,[,])
lnRand = ASCAN(laArraySelectie,lcColoana,1,ALEN(laArraySelectie,1),1,15)
Adel(laArraySelectie,lnRand)
*!* Adel(laArraySelectie,1)
Endfor
Dimension laArraySelectie(This.nelemente-lnPozitii+1,4)
Endif
Asort(laArraySelectie,2)
For i = 1 To Getwordcount(lcColoaneAgregare,[,])
lcNumeColoana = Getwordnum(lcColoaneAgregare,i,[,])
lcColoaneSuma = lcColoaneSuma + [,SUM(] + lcNumeColoana + [) as ] + lcNumeColoana
Endfor
For i = 1 To Alen(laArraySelectie,1)
If !Empty(laArraySelectie[i,1])
If !Empty(laArraySelectie[i,2])
lcColoaneGrupate = lcColoaneGrupate + [,] + Alltrim(laArraySelectie[i,1])
Else
lcAlteColoane = lcAlteColoane + [,] + Alltrim(laArraySelectie[i,1])
Endif
Endif
Endfor
If !Empty(lcColoaneGrupate)
lcSelect = [GROUPING_ID(]+Substr(lcColoaneGrupate,2)+lcAlteColoane+[) AS GID] + lcColoaneGrupate
lcOrdineGrup = Substr(lcColoaneGrupate,2) + [,GID]
If Empty(lcAlteColoane)
lcSelect = lcSelect + lcColoaneSuma
lcGroupBy = [ GROUP BY ROLLUP(]+Substr(lcColoaneGrupate,2)+[) ]
Else
lcSelect = lcSelect + lcAlteColoane + lcColoaneSuma
lcGroupBy = [ GROUP BY ROLLUP(]+Substr(lcColoaneGrupate,2)+[,(]+Substr(lcAlteColoane,2)+[)) ]
Endif
Else
lcSelect = lcSelect + [GROUPING_ID(] + SUBSTR(lcAlteColoane,2) +[) AS GID] + ;
lcAlteColoane + lcColoaneSuma
lcGroupBy = [ GROUP BY ROLLUP((] + SUBSTR(lcAlteColoane,2) + [))]
lcOrdineGrup = [GID]
Endif
Do Case
Case !Empty(lcOrdine) And !Empty(lcOrdineGrup)
lcOrderBy = [ ORDER BY ] + lcOrdineGrup + lcOrdine
Case !Empty(lcOrdine) And Empty(lcOrdineGrup)
lcOrderBy = [ ORDER BY ] + Substr(lcOrdine,2)
Case !Empty(lcOrdineGrup)
lcOrderBy = [ ORDER BY ] + lcOrdineGrup
Otherwise
lcOrderBy = []
Endcase
lcSql = [SELECT ] + lcSelect + [ FROM ] + lcView + ;
[ WHERE ] + lcFiltru + lcGroupBy + lcOrderBy
Release laArraySelectie
Endif
This.cSql = lcSql
ENDPROC
PROCEDURE do_modifica
Lparameters tnColoana,tcCamp,tnValoare
&& tnColoana : 2 - ordine grupare
&& 3 - ordine la ordonare
&& 4 - sens la ordonare = 1 - ASC
&& 2 - DESC
lnPozitie=Ascan(This.aselectie,Upper(Alltrim(tcCamp)),1,30,1,9)
If lnPozitie > 0
This.aselectie[lnPozitie,tnColoana]=tnValoare
Endif
ENDPROC
PROCEDURE do_sterge
Lparameters tcCamp,tcNumeCamp
lnPozitie=Ascan(This.aselectie,Upper(Alltrim(tcCamp)),1,30,1,9)
If lnPozitie > 0
Adel(This.aselectie,lnPozitie)
This.nelemente = This.nelemente - 1
Endif
This.ct_grupare1.do_sterge_ct(tcCamp)
This.ct_ordonare1.do_sterge_ct(tcCamp)
ENDPROC
PROCEDURE Init
If !Empty(This.clistacoloaneordine)
*!* se adauga la ordine si prima coloana din coloanele de sume
lcLista = Alltrim(Iif(Type('This.clistacoloaneordine')='C',This.clistacoloaneordine,Str(This.clistacoloaneordine)))
This.clistacoloaneordine=lcLista
For i = 1 To Getwordcount(lcLista,[,])
lnPozitie=Val(Getwordnum(lcLista,i,[,]))
lcNume=Proper(Getwordnum(This.ccoloanesuma,lnPozitie,[,]))
If !Empty(This.cnumecoloanesuma)
lcNumeCamp=Proper(Getwordnum(This.cnumecoloanesuma,lnPozitie,[,]))
Else
lcNumeCamp = lcNume
Endif
This.do_adauga(lcNume,lcNumeCamp,.F.,.T.)
Endfor
Endif
ENDPROC
ENDDEFINE
DEFINE CLASS ct_selectie_camp AS _container OF "..\comun\clase\_baza.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="ck_camp" UniqueID="" Timestamp="" />
*
*m: actualizeaza_container
*p: ccamp
*p: cnumecamp
*p: csens
*p: lgrupare && .T. daca se pot face grupari dupa acest camp.
*p: lordine && .T. daca se poate ordona dupa acest camp.
*p: nid_container
*p: nordine_grup
*p: nordine_ordine
*p: nselectat
*
*
BorderWidth = 0
ccamp =
cnumecamp =
csens =
Height = 19
lgrupare = .T.
lordine = .T.
Name = "ct_selectie_camp"
nid_container = 0
nordine_grup = 0
nordine_ordine = 0
nselectat = 0
Width = 108
*
ADD OBJECT 'ck_camp' AS _checkbox WITH ;
Alignment = 0, ;
Caption = "Camp", ;
Left = 9, ;
Name = "ck_camp", ;
Top = 1
*< END OBJECT: ClassLib="..\comun\clase\_baza.vcx" BaseClass="checkbox" />
PROCEDURE actualizeaza_container
Lparameters llVizibil
This.Visible=llVizibil
This.ck_camp.FontBold = .F.
This.ck_camp.Value = 0
This.ngrupat = 0
ENDPROC
PROCEDURE Init
This.ck_camp.Caption = This.cnumecamp
ENDPROC
PROCEDURE ck_camp.Click
This.Parent.nselectat = This.Value
If This.Value = 1
This.FontBold=.T.
This.Parent.Parent.do_adauga(This.Parent.ccamp,This.Parent.cnumecamp,This.Parent.lgrupare,This.Parent.lordine)
Else
This.FontBold = .F.
This.Parent.Parent.do_sterge(This.Parent.ccamp)
Endif
ENDPROC
ENDDEFINE
DEFINE CLASS frm_date_rapoarte AS _frmbase OF "..\comun\clase\_frm_base.vcx"
*< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="But_salveaza1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_clb_raport" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_clb_raport.But_sterge1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Clb_data_referinta" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Clb_perioada" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_opt_agent" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_opt_masina" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_opt_delegat" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_opt_client" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_selectie1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_nract" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_datascad" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_nume_agent" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_nume_delegat" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_nrinmat" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_nume_client" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_dataact" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="But_listare1" UniqueID="" Timestamp="" />
*
*m: do_adauga_filtru
*m: do_cauta_agent
*m: do_cauta_client
*m: do_cauta_delegat
*m: do_cauta_masina
*
*
DoCreate = .T.
Height = 470
Name = "frm_date_rapoarte"
Width = 696
_shape1.Height = 29
_shape1.Left = 0
_shape1.Name = "_shape1"
_shape1.Top = 0
_shape1.Width = 696
_shape2.Height = 29
_shape2.Left = 600
_shape2.Name = "_shape2"
_shape2.Top = 0
_shape2.Width = 96
Lb_titlu_alb_b121.Caption = "CRITERII DE SELECTIE"
Lb_titlu_alb_b121.FontBold = .T.
Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121"
Lb_titlu_alb_b121.TabIndex = 22
BUT_TERMIN1.Left = 664
BUT_TERMIN1.Name = "BUT_TERMIN1"
BUT_TERMIN1.TabIndex = 18
BUT_TERMIN1.Top = 1
GRIDSORT1.Left = 480
GRIDSORT1.Name = "GRIDSORT1"
GRIDSORT1.Top = 36
*
ADD OBJECT 'But_listare1' AS but_listare WITH ;
Left = 634, ;
Name = "But_listare1", ;
Top = 1
*< END OBJECT: ClassLib="..\comun\clase\cmd_butoane.vcx" BaseClass="commandbutton" />
ADD OBJECT 'But_salveaza1' AS but_salveaza WITH ;
Left = 603, ;
Name = "But_salveaza1", ;
TabIndex = 20, ;
Top = 1, ;
Visible = .F.
*< END OBJECT: ClassLib="..\comun\clase\cmd_butoane.vcx" BaseClass="commandbutton" />
ADD OBJECT 'Clb_data_referinta' AS clb_tx_simplu WITH ;
Left = 383, ;
Name = "Clb_data_referinta", ;
TabIndex = 3, ;
Top = 100, ;
Text_simplu1.ControlSource = "poListare.data_referinta", ;
Text_simplu1.Height = 23, ;
Text_simplu1.Left = 126, ;
Text_simplu1.Name = "Text_simplu1", ;
Text_simplu1.Top = 3, ;
Text_simplu1.Width = 159, ;
Lb_simplu1.Caption = "Data de referinta", ;
Lb_simplu1.Name = "Lb_simplu1"
*< END OBJECT: ClassLib="..\comun\clase\lb_tx.vcx" BaseClass="container" />
ADD OBJECT 'Clb_perioada' AS clb_n1n2_simplu WITH ;
Left = 383, ;
Name = "Clb_perioada", ;
TabIndex = 2, ;
Top = 72, ;
tx_n1.ControlSource = "poListare.datai", ;
tx_n1.Left = 127, ;
tx_n1.Name = "tx_n1", ;
tx_n1.Top = 2, ;
Lb_simplu1.Caption = "Perioada", ;
Lb_simplu1.Name = "Lb_simplu1", ;
tx_n2.ControlSource = "poListare.dataf", ;
tx_n2.Name = "tx_n2"
*< END OBJECT: ClassLib="..\comun\clase\lb_tx.vcx" BaseClass="container" />
ADD OBJECT 'Ct_clb_raport' AS ct_clb_cautare WITH ;
Height = 31, ;
Left = 23, ;
Name = "Ct_clb_raport", ;
TabIndex = 21, ;
Top = 36, ;
Visible = .F., ;
Width = 396, ;
img_cautare.Height = 25, ;
img_cautare.Left = 321, ;
img_cautare.Name = "img_cautare", ;
img_cautare.Top = 3, ;
img_cautare.Width = 30, ;
clb_tx_cautare.Lb_simplu1.Caption = "Raport", ;
clb_tx_cautare.Lb_simplu1.Name = "Lb_simplu1", ;
clb_tx_cautare.Name = "clb_tx_cautare", ;
clb_tx_cautare.TabIndex = 1, ;
clb_tx_cautare.Text_simplu1.Height = 23, ;
clb_tx_cautare.Text_simplu1.Left = 71, ;
clb_tx_cautare.Text_simplu1.Name = "Text_simplu1", ;
clb_tx_cautare.Text_simplu1.Top = 3, ;
clb_tx_cautare.Text_simplu1.Width = 239
*< END OBJECT: ClassLib="..\comun\clase\caut_ora.vcx" BaseClass="container" />
ADD OBJECT 'Ct_clb_raport.But_sterge1' AS but_sterge WITH ;
Height = 27, ;
Left = 361, ;
Name = "But_sterge1", ;
TabIndex = 2, ;
Top = 1, ;
Width = 30
*< END OBJECT: ClassLib="..\comun\clase\cmd_butoane.vcx" BaseClass="commandbutton" />
ADD OBJECT 'Ct_opt_agent' AS ct_opt_cautare WITH ;
cprocedura = thisform.do_cauta_agent, ;
cvar_afisata = poListare.nume_agent, ;
Left = 383, ;
Name = "Ct_opt_agent", ;
TabIndex = 5, ;
Top = 198, ;
tx_cautare.Name = "tx_cautare", ;
opt_cautare.Name = "opt_cautare", ;
opt_cautare.OPTION1.Left = 5, ;
opt_cautare.OPTION1.Name = "OPTION1", ;
opt_cautare.OPTION1.Top = 5, ;
opt_cautare.OPTION2.Left = 5, ;
opt_cautare.OPTION2.Name = "OPTION2", ;
opt_cautare.OPTION2.Top = 24, ;
lb_explicatie.Caption = "Agent", ;
lb_explicatie.Name = "lb_explicatie"
*< END OBJECT: ClassLib="..\comun\clase\caut_ora.vcx" BaseClass="container" />
ADD OBJECT 'Ct_opt_client' AS ct_opt_cautare WITH ;
cprocedura = thisform.do_cauta_client, ;
cvar_afisata = poListare.nume_client, ;
Left = 383, ;
Name = "Ct_opt_client", ;
TabIndex = 4, ;
Top = 128, ;
tx_cautare.Name = "tx_cautare", ;
opt_cautare.Name = "opt_cautare", ;
opt_cautare.OPTION1.Left = 5, ;
opt_cautare.OPTION1.Name = "OPTION1", ;
opt_cautare.OPTION1.Top = 5, ;
opt_cautare.OPTION2.Left = 5, ;
opt_cautare.OPTION2.Name = "OPTION2", ;
opt_cautare.OPTION2.Top = 24, ;
lb_explicatie.Caption = "Client", ;
lb_explicatie.Name = "lb_explicatie"
*< END OBJECT: ClassLib="..\comun\clase\caut_ora.vcx" BaseClass="container" />
ADD OBJECT 'Ct_opt_delegat' AS ct_opt_cautare WITH ;
cprocedura = thisform.do_cauta_delegat, ;
cvar_afisata = poListare.nume_delegat, ;
Left = 383, ;
Name = "Ct_opt_delegat", ;
TabIndex = 6, ;
Top = 268, ;
tx_cautare.Name = "tx_cautare", ;
opt_cautare.Name = "opt_cautare", ;
opt_cautare.OPTION1.Left = 5, ;
opt_cautare.OPTION1.Name = "OPTION1", ;
opt_cautare.OPTION1.Top = 5, ;
opt_cautare.OPTION2.Left = 5, ;
opt_cautare.OPTION2.Name = "OPTION2", ;
opt_cautare.OPTION2.Top = 24, ;
lb_explicatie.Caption = "Delegat", ;
lb_explicatie.Name = "lb_explicatie"
*< END OBJECT: ClassLib="..\comun\clase\caut_ora.vcx" BaseClass="container" />
ADD OBJECT 'Ct_opt_masina' AS ct_opt_cautare WITH ;
cprocedura = thisform.do_cauta_masina, ;
cvar_afisata = poListare.nrinmat, ;
Left = 383, ;
Name = "Ct_opt_masina", ;
TabIndex = 7, ;
Top = 338, ;
tx_cautare.Name = "tx_cautare", ;
opt_cautare.Name = "opt_cautare", ;
opt_cautare.OPTION1.Left = 5, ;
opt_cautare.OPTION1.Name = "OPTION1", ;
opt_cautare.OPTION1.Top = 5, ;
opt_cautare.OPTION2.Left = 5, ;
opt_cautare.OPTION2.Name = "OPTION2", ;
opt_cautare.OPTION2.Top = 24, ;
lb_explicatie.Caption = "Masina", ;
lb_explicatie.Name = "lb_explicatie"
*< END OBJECT: ClassLib="..\comun\clase\caut_ora.vcx" BaseClass="container" />
ADD OBJECT 'Ct_selectie1' AS ct_selectie WITH ;
ccoloanesuma = facturat,incasat, ;
cnumetabela = fact_vrap_fact_incasari, ;
Left = 24, ;
Name = "Ct_selectie1", ;
Top = 72, ;
Ct_grupare1.lb_grupare.Name = "lb_grupare", ;
Ct_grupare1.Name = "Ct_grupare1", ;
Ct_ordonare1.lb_ordonare.Name = "lb_ordonare", ;
Ct_ordonare1.Name = "Ct_ordonare1", ;
lb_coloane.Name = "lb_coloane"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
ADD OBJECT 'Ct_selectie1.Ct_selectie_dataact' AS ct_selectie_camp WITH ;
ccamp = dataact, ;
cnumecamp = Data factura, ;
Left = 17, ;
Name = "Ct_selectie_dataact", ;
nid_container = 2, ;
TabIndex = 37, ;
Top = 36, ;
ck_camp.Alignment = 0, ;
ck_camp.Name = "ck_camp"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
ADD OBJECT 'Ct_selectie1.Ct_selectie_datascad' AS ct_selectie_camp WITH ;
ccamp = datascad, ;
cnumecamp = Data scadenta, ;
Left = 17, ;
Name = "Ct_selectie_datascad", ;
nid_container = 3, ;
TabIndex = 31, ;
Top = 51, ;
ck_camp.Alignment = 0, ;
ck_camp.Name = "ck_camp"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
ADD OBJECT 'Ct_selectie1.Ct_selectie_nract' AS ct_selectie_camp WITH ;
ccamp = nract, ;
cnumecamp = Nr. factura, ;
Left = 17, ;
Name = "Ct_selectie_nract", ;
nid_container = 1, ;
TabIndex = 30, ;
Top = 22, ;
ck_camp.Alignment = 0, ;
ck_camp.Name = "ck_camp"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
ADD OBJECT 'Ct_selectie1.Ct_selectie_nrinmat' AS ct_selectie_camp WITH ;
ccamp = nrinmat, ;
cnumecamp = Masina, ;
Left = 180, ;
Name = "Ct_selectie_nrinmat", ;
TabIndex = 35, ;
Top = 51, ;
ck_camp.Alignment = 0, ;
ck_camp.Name = "ck_camp"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
ADD OBJECT 'Ct_selectie1.Ct_selectie_nume_agent' AS ct_selectie_camp WITH ;
ccamp = nume_agent, ;
cnumecamp = Agent, ;
Left = 180, ;
Name = "Ct_selectie_nume_agent", ;
nid_container = 5, ;
TabIndex = 33, ;
Top = 22, ;
ck_camp.Alignment = 0, ;
ck_camp.Name = "ck_camp"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
ADD OBJECT 'Ct_selectie1.Ct_selectie_nume_client' AS ct_selectie_camp WITH ;
ccamp = nume_client, ;
cnumecamp = Client, ;
Left = 17, ;
Name = "Ct_selectie_nume_client", ;
nid_container = 4, ;
TabIndex = 36, ;
Top = 67, ;
ck_camp.Alignment = 0, ;
ck_camp.Name = "ck_camp"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
ADD OBJECT 'Ct_selectie1.Ct_selectie_nume_delegat' AS ct_selectie_camp WITH ;
ccamp = nume_delegat, ;
cnumecamp = Delegat, ;
Left = 180, ;
Name = "Ct_selectie_nume_delegat", ;
TabIndex = 34, ;
Top = 36, ;
ck_camp.Alignment = 0, ;
ck_camp.Name = "ck_camp"
*< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" />
PROCEDURE do_adauga_filtru
Lparameters lcSql
lcFiltru = [WHERE DATAACT BETWEEN ?poListare.datai AND ?poListare.dataf]
If !Empty(Nvl(poListare.nume_client,[]))
lcFiltru = lcFiltru + [ AND nume_client = ?poListare.nume_client]
Endif
If !Empty(Nvl(poListare.nume_agent,[]))
lcFiltru = lcFiltru + [ AND nume_agent = ?poListare.nume_agent]
Endif
If !Empty(Nvl(poListare.nume_delegat,[]))
lcFiltru = lcFiltru + [ AND nume_delegat = ?poListare.nume_delegat]
Endif
If !Empty(Nvl(poListare.nrinmat,[]))
lcFiltru = lcFiltru + [ AND nrinmat = ?poListare.nrinmat]
Endif
poListare.csql = Strtran(lcSql,[WHERE 1=2],lcFiltru)
ENDPROC
PROCEDURE do_cauta_agent
Private pnIdPart,pcNumePart
lcTitlu=[ALEGETI AGENTUL]
pnIdPart=0
pcNumePart=[]
If caut_partener_dupa_tip(gnIdTipAgenti,lcTitlu,@pnIdPart,@pcNumePart)
poListare.id_agent = pnIdPart
poListare.nume_agent = Alltrim(pcNumePart)
Thisform.ct_opt_agent.Refresh()
Thisform.ct_opt_delegat.SetFocus()
Else
If Empty(Nvl(poListare.nume_agent,[]))
Thisform.ct_opt_agent.opt_cautare.Value=1
Endif
Thisform.ct_opt_agent.SetFocus()
Endif
ENDPROC
PROCEDURE do_cauta_client
Private pnIdPart,pcNumePart
Store 0 To pnIdPart
Store "" To pcNumePart
If cauta_client(@pnIdPart,@pcNumePart)
poListare.id_client = pnIdPart
poListare.nume_client = pcNumePart
Thisform.ct_opt_client.Refresh()
Thisform.ct_opt_agent.SetFocus()
Else
If Empty(Nvl(poListare.nume_client,[]))
Thisform.ct_opt_client.opt_cautare.Value=1
Endif
Thisform.ct_opt_client.SetFocus()
Endif
ENDPROC
PROCEDURE do_cauta_delegat
Local loCauta
loCauta=caut_delegati()
If !Empty(loCauta.id_responsabil)
poListare.id_delegat = loCauta.id_responsabil
poListare.nume_delegat = Alltrim(loCauta.nume)
Thisform.ct_opt_delegat.Refresh()
Thisform.ct_opt_masina.SetFocus()
Else
If Empty(Nvl(poListare.nume_delegat,[]))
Thisform.ct_opt_delegat.opt_cautare.Value = 1
Endif
Thisform.ct_opt_delegat.SetFocus()
Endif
ENDPROC
PROCEDURE do_cauta_masina
locauta=caut_masina_gs()
If !Empty(locauta.id_masina)
poListare.nrinmat = Alltrim(locauta.nrinmat)
poListare.id_masina = locauta.id_masina
Thisform.ct_opt_masina.Refresh()
Else
If Empty(Nvl(poListare.nrinmat,[]))
Thisform.ct_opt_masina.opt_cautare.Value = 1
Endif
Thisform.ct_opt_masina.SetFocus()
Endif
ENDPROC
PROCEDURE do_listare
lccontrol = Upper(This.ActiveControl.BaseClass )
If Inlist(lccontrol,"TEXTBOX","EDITBOX","COMBOBOX")
lcval=This.ActiveControl.ControlSource
&lcval=Thisform.ActiveControl.Value
Endif
Do Case
Case Empty(Nvl(poListare.datai,{}))
amessagebox("Nu ati completat data initiala!",0+48,"Atentie")
Thisform.clb_perioada.tx_n1.SetFocus()
Return
Case Empty(Nvl(poListare.dataf,{}))
amessagebox("Nu ati completat data finala!",0+48,"Atentie")
Thisform.clb_perioada.tx_n2.SetFocus()
Return
Case Empty(Nvl(poListare.data_referinta,{}))
amessagebox("Nu ati completat data de referinta!",0+48,"Atentie")
Thisform.clb_data_referinta.SetFocus()
Return
Otherwise
With This.ct_selectie1
.do_instructiune_sql()
lcSql = .csql
Endwith
If Empty(lcSql)
amessagebox("Nu ati ales coloane pentru selectie!",0+48,"Atentie")
Thisform.ct_selectie1.SetFocus()
Return
Else
This.do_adauga_filtru(lcSql)
Endif
Endcase
If Used('crsraport')
Use In crsraport
Endif
*!* STRTOFILE(poListare.cSql,[c:\sql.txt])
lnSucces = goExecutor.oExecute(poListare.csql,'crsraport')
If lnSucces < 0
amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare")
Endif
pcDataora = get_ora(2)
If Reccount('crsraport')<>0
Thisform.AlwaysOnTop = .F.
Select crsraport
Report Form raport_facturat To Printer Prompt Preview
Thisform.AlwaysOnTop = .T.
Else
amessagebox("Nu exista rezultate pentru listare!",0+48,"Atentie")
Endif
If Used('crsraport')
Use In crsraport
Endif
ENDPROC
PROCEDURE Clb_perioada.tx_n1.Valid
*!*
ENDPROC
ENDDEFINE