Import initial din SVN ROAAUTO/Trunk @HEAD
This commit is contained in:
306
COMUN/programe/acces_meniu.prg
Normal file
306
COMUN/programe/acces_meniu.prg
Normal file
@@ -0,0 +1,306 @@
|
||||
*!* 08.08.2011
|
||||
*!* marius.mutu
|
||||
*!* dezactiveaza_imagini - am marit distanta dintre imagini - ca sa nu se ingramadeasca textul cu shortcut-ul
|
||||
|
||||
*!* 09.12.2021
|
||||
*!* marius..mutu
|
||||
*!* dezactiveaza_meniuri - adaugare meniu Verificare, Import
|
||||
**********************************************************************************************
|
||||
Procedure verifica_drepturi
|
||||
Lparameters tcObiectFundal, tcPageFrame
|
||||
citeste_drepturi(gnIdUtil)
|
||||
dezactiveaza_obiecte_pageframe(65, tcObiectFundal + [.] + tcPageFrame)
|
||||
dezactiveaza_imagini(tcObiectFundal)
|
||||
dezactiveaza_meniuri(90)
|
||||
Endproc
|
||||
**********************************************************************************************
|
||||
Procedure citeste_drepturi
|
||||
Lparameters tnIdUtil
|
||||
|
||||
If Used('crsdrepturi')
|
||||
Select crsdrepturi
|
||||
Locate For id_firma = gnIdFirma
|
||||
If Found()
|
||||
Return
|
||||
Else
|
||||
Use In crsdrepturi
|
||||
Endif
|
||||
Endif
|
||||
lcSql = [select cheie,id_firma from contafin_oracle.vdef_util_obiecte ] + ;
|
||||
[where id_util = ?gnIdUtil and id_program=?gnIdProgram and id_firma=?gnIdFirma]
|
||||
lnSucces = goExecutor.oExecute(lcSql, 'crsdrepturi')
|
||||
If lnSucces < 0
|
||||
aMESSAGEBOX(goExecutor.cEroare, 0 + 16, 'Eroare')
|
||||
Return
|
||||
Endif
|
||||
|
||||
Endproc
|
||||
**********************************************************************************************
|
||||
Procedure dezactiveaza_imagini
|
||||
Lparameters loObiect
|
||||
Local i, k, j, l, lnMinLeft
|
||||
Dimension laImaginiVizibile(20, 2)
|
||||
k = 0
|
||||
&& left=3 pentru prima imagine
|
||||
With &loObiect
|
||||
For i = 1 To .ControlCount
|
||||
If Alltrim(Upper(.Objects(i).Class)) = 'IMAGINE'
|
||||
lcCheie = .Objects(i).ccod
|
||||
If Right(lcCheie, 1) # ';'
|
||||
lcCheie = lcCheie + ';'
|
||||
Endif
|
||||
lnPozitieS = 1
|
||||
For j = 1 To Occurs([;], lcCheie)
|
||||
lnPozitieF = At([;], lcCheie, j)
|
||||
lcCheie2 = Substr(lcCheie, lnPozitieS, lnPozitieF - lnPozitieS)
|
||||
lcAcces = []
|
||||
Select crsdrepturi
|
||||
Locate For Substr(cheie, 1, Len(lcCheie2)) = lcCheie2
|
||||
If Found()
|
||||
Set Filter To Substr(cheie, 1, Len(lcCheie2)) = lcCheie2
|
||||
Scan
|
||||
lcAcces = lcAcces + Substr(cheie, Len(lcCheie2) + 1, 1) + [;]
|
||||
Endscan
|
||||
Set Filter To
|
||||
k = k + 1
|
||||
If !Empty(lcAcces) And Alltrim(lcAcces) <> [;]
|
||||
.Objects(i).coptiuni_active = lcAcces
|
||||
Endif
|
||||
.Objects(i).Visible = .T.
|
||||
laImaginiVizibile(k, 1) = i
|
||||
laImaginiVizibile(k, 2) = .Objects(i).Left
|
||||
Exit
|
||||
Else
|
||||
.Objects(i).Visible = .F.
|
||||
Endif
|
||||
lnPozitieS = lnPozitieF + 1
|
||||
Endfor
|
||||
Endif
|
||||
Endfor
|
||||
If k > 0
|
||||
lnLungime = .Objects(laImaginiVizibile(1, 1)).Width
|
||||
For j = 1 To k - 1
|
||||
For l = j + 1 To k
|
||||
If laImaginiVizibile(j, 2) > laImaginiVizibile(l, 2)
|
||||
lnPozitie = laImaginiVizibile(l, 1)
|
||||
lnLeft = laImaginiVizibile(l, 2)
|
||||
laImaginiVizibile(l, 1) = laImaginiVizibile(j, 1)
|
||||
laImaginiVizibile(l, 2) = laImaginiVizibile(j, 2)
|
||||
laImaginiVizibile(j, 1) = lnPozitie
|
||||
laImaginiVizibile(j, 2) = lnLeft
|
||||
Endif
|
||||
Endfor
|
||||
Endfor
|
||||
For j = 1 To k
|
||||
*!* 08.08.2011
|
||||
.Objects(laImaginiVizibile(j, 1)).Left = 5 + (j - 1) * (lnLungime + 0)
|
||||
*!* 08.08.2011 ^
|
||||
Endfor
|
||||
Endif
|
||||
Endwith
|
||||
Endproc
|
||||
**********************************************************************************************
|
||||
Procedure dezactiveaza_obiecte_pageframe
|
||||
Lparameters lnKey, lcPageFrame, lcTata
|
||||
Local lcKey, lcProp, lcOptiune, lnPozitie, i, j, k, l, lnObiecteActive
|
||||
Store [] To lcKey, lcProp, lcOptiune
|
||||
Store 0 To lnNivel, lnPozitie, i, j, k, l
|
||||
If Empty(lcTata)
|
||||
lcTata = Null
|
||||
Endif
|
||||
Set Exact On
|
||||
With &lcPageFrame
|
||||
For i = 1 To .PageCount
|
||||
For j = 1 To .PageCount
|
||||
If .Pages(j).PageOrder = i
|
||||
Exit
|
||||
Endif
|
||||
Endfor
|
||||
With .Pages(j)
|
||||
.Enabled = .T.
|
||||
lnObiecteActive = 0
|
||||
lcKey = Nvl(lcTata, []) + Chr(lnKey)
|
||||
If Used('crstotal')
|
||||
Use In crstotal
|
||||
Endif
|
||||
Select Count(*) As Total From crsdrepturi Where Substr(cheie, 1, Len(lcKey)) = lcKey Into Cursor crstotal
|
||||
Select crstotal
|
||||
lnObiecteActive = Total
|
||||
Use In crstotal
|
||||
*!* If lnObiecteActive>0
|
||||
For l = 1 To .ControlCount
|
||||
Do Case
|
||||
Case Alltrim(Upper(.Objects(l).Class)) = 'PAGEFRAME'
|
||||
lcNume = lcPageFrame + '.' + Alltrim(.Name) + '.' + Alltrim(Upper(.Objects(l).Name))
|
||||
dezactiveaza_obiecte_pageframe(65, lcNume, lcKey)
|
||||
Case Left(Alltrim(Upper(.Objects(l).Class)), 2) = 'CW'
|
||||
lcOptiune = .Objects(l).label_item1.Caption
|
||||
lcCheie = lcKey + Padl(Alltrim(Str(.Objects(l).nid_cw)), 2, [0])
|
||||
lcAcces = []
|
||||
.Objects(l).ccheie = lcCheie
|
||||
Select crsdrepturi
|
||||
Locate For Substr(cheie, 1, Len(lcCheie)) = lcCheie
|
||||
If Found()
|
||||
Set Filter To Substr(cheie, 1, Len(lcCheie)) = lcCheie
|
||||
Scan
|
||||
lcAcces = lcAcces + Substr(cheie, Len(lcCheie) + 1, 1) + [;]
|
||||
Endscan
|
||||
Set Filter To
|
||||
.Objects(l).coptiuni_active = lcAcces
|
||||
.Objects(l).activeaza()
|
||||
Else
|
||||
.Objects(l).dezactiveaza()
|
||||
Endif
|
||||
Endcase
|
||||
Endfor
|
||||
*!* Else
|
||||
If lnObiecteActive = 0
|
||||
.Enabled = .F.
|
||||
Endif
|
||||
Endwith
|
||||
lnKey = lnKey + 1
|
||||
Endfor
|
||||
Endwith
|
||||
*!* Set Exact Off
|
||||
Endproc
|
||||
**********************************************************************************************
|
||||
Procedure dezactiveaza_meniuri()
|
||||
Lparameters lnKey
|
||||
Local lcKey, lcKey2, i, j, k
|
||||
Do Case
|
||||
Case gnIdProgram = 2 && ROACONT
|
||||
Dimension laPad[5]
|
||||
laPad[1] = [initializa]
|
||||
laPad[2] = [_1bs12qror]
|
||||
laPad[3] = [verificari]
|
||||
laPad[4] = [_5100zlkwx]
|
||||
laPad[5] = [eFactura]
|
||||
Case gnIdProgram = 5 && ROAGEST
|
||||
Dimension laPad[1]
|
||||
laPad[1] = [actualizar]
|
||||
Case gnIdProgram = 8 && ROAAUTO
|
||||
Return
|
||||
Case gnIdProgram = 7 && ROAMANAGER
|
||||
Dimension laPad[3]
|
||||
laPad[1] = [optiuni]
|
||||
laPad[2] = [vizualizar]
|
||||
laPad[3] = [rapoartege]
|
||||
Case gnIdProgram = 75 && ROASALSPEC modificare 16.10.2012
|
||||
Dimension laPad[2]
|
||||
laPad[1] = [_3mm0vdyef]
|
||||
laPad[2] = [_3mm0ve0rs]
|
||||
Case gnIdProgram = 4 && ROARES
|
||||
Dimension laPad[3]
|
||||
laPad[1] = [initializa]
|
||||
laPad[2] = [configurar]
|
||||
laPad[3] = [migrare]
|
||||
Otherwise && Restul
|
||||
Return
|
||||
Endcase
|
||||
|
||||
lcKey = Chr(lnKey)
|
||||
lnKey2 = 65
|
||||
For j = 1 To Alen(laPad)
|
||||
k = 0
|
||||
Try
|
||||
If Cntbar(laPad[j]) > 0
|
||||
lcKey2 = lcKey + Chr(lnKey2)
|
||||
lnKey2 = lnKey2 + 1
|
||||
For i = 1 To Cntbar(laPad[j])
|
||||
lcOptiune = Prmbar(laPad[j], i)
|
||||
If !Empty(lcOptiune)
|
||||
k = k + 1
|
||||
lcCheie = lcKey2 + Padl(Alltrim(Str(k)), 2, [0])
|
||||
Select crsdrepturi
|
||||
Locate For Substr(cheie, 1, Len(lcCheie)) = lcCheie
|
||||
If Found()
|
||||
*!* WAIT WINDOW laPad[j]+" "+lcCheie+" gasita"
|
||||
Set Skip Of Bar i Of &laPad[j] .F.
|
||||
Else
|
||||
*!* WAIT WINDOW laPad[j]+" "+lcCheie+" negasita"
|
||||
*!* messagebox(skpbar (laPad[j],i),48,laPad[j]+" "+alltrim(str(i)))
|
||||
Set Skip Of Bar i Of &laPad[j] .T.
|
||||
*!* messagebox(skpbar (laPad[j],i),48,laPad[j]+" "+alltrim(str(i)))
|
||||
Endif
|
||||
Endif
|
||||
Endfor
|
||||
Endif
|
||||
Catch
|
||||
Endtry
|
||||
Endfor
|
||||
Endproc
|
||||
|
||||
**********************************************************************************************
|
||||
*** Citeste accesul pentru o optiune dupa cod
|
||||
*** Ex. pentru initializarea accesului la lansarea unui formular direct din meniu
|
||||
Function GetAccesByCod
|
||||
Lparameters tcCod, tcAccesDefault
|
||||
* tcCod = codul optiunii din meniu (ex: ZA01/ZA02/ZB01)
|
||||
* tcAccesDefault = codul de acces in caz ca nu sunt definite drepturi pe acel cod ("1;2;3;4")
|
||||
|
||||
Local lcAcces, lcAccesDefault, lcCheie, lcCheie2, lcSelect, lnPozitieF, lnPozitieS, j, k
|
||||
lcAccesDefault = Iif(!Empty(m.tcAccesDefault), m.tcAccesDefault, "")
|
||||
lcAcces = ""
|
||||
|
||||
lcSelect = Select()
|
||||
|
||||
lcCheie = Upper(Alltrim(m.tcCod))
|
||||
k = 0
|
||||
If Right(lcCheie, 1) # ';'
|
||||
lcCheie = lcCheie + ';'
|
||||
Endif
|
||||
lnPozitieS = 1
|
||||
For j = 1 To Occurs([;], lcCheie)
|
||||
lnPozitieF = At([;], lcCheie, j)
|
||||
lcCheie2 = Substr(lcCheie, lnPozitieS, lnPozitieF - lnPozitieS)
|
||||
lcAcces = []
|
||||
Select crsdrepturi
|
||||
Locate For Substr(cheie, 1, Len(lcCheie2)) = lcCheie2
|
||||
If Found()
|
||||
Set Filter To Substr(cheie, 1, Len(lcCheie2)) = lcCheie2
|
||||
Scan
|
||||
lcAcces = lcAcces + Substr(cheie, Len(lcCheie2) + 1, 1) + [;]
|
||||
Endscan
|
||||
Set Filter To
|
||||
k = k + 1
|
||||
Exit
|
||||
Endif && found
|
||||
lnPozitieS = lnPozitieF + 1
|
||||
ENDFOR
|
||||
IF EMPTY(m.lcAcces) AND !EMPTY(m.lcAccesDefault)
|
||||
lcAcces = m.lcAccesDefault
|
||||
ENDIF
|
||||
|
||||
Select (m.lcSelect)
|
||||
RETURN m.lcAcces
|
||||
ENDFUNC && GetAccesByCod
|
||||
|
||||
**********************************************************************************************
|
||||
Procedure actualizeaza_acces_forma
|
||||
Lparameters loObiect, tcAcces
|
||||
Local lcProp
|
||||
For i = 1 To Len(tcAcces)
|
||||
lcProp = 'this.lactiv' + Alltrim(Substr(tcAcces, i, 1))
|
||||
&lcProp = .T.
|
||||
Endfor
|
||||
Endproc
|
||||
**********************************************************************************************
|
||||
*!* Procedure setari_grupuri
|
||||
*!* Private pogrupuri,pcschema1,pcselect1
|
||||
*!* Store '' To pogrupuri
|
||||
*!* *!* pcschema1=['id_util n(5),utilizator c(30)']
|
||||
*!* *!* pcselect1=['select id_util,utilizator from vutil_drept where 1=2']
|
||||
*!* *!* pcorder1=[utilizator]
|
||||
*!* *!* pcfiltru1=[id_firma=?gnIdFirma and id_prog=?gnIdProgram]
|
||||
|
||||
*!* pcschema1=['id_grup n(5),grup c(30)']
|
||||
*!* pcselect1=['select id_grup,grup from vdef_grup where 1=2']
|
||||
*!* pcorder1=[grup]
|
||||
*!* pcfiltru1=[2=2]
|
||||
*!* llAfiseaza=.F.
|
||||
*!* gencursor('pogrupuri','crsgrupuri',pcselect1,pcfiltru1,pcschema1,pcorder1,llAfiseaza)
|
||||
*!* pogrupuri.ca_baza1.afisare()
|
||||
*!* ofrmgrupuri=Createobject('frm_grupuri')
|
||||
*!* ofrmgrupuri.Show(1)
|
||||
*!* Release pogrupuri
|
||||
*!* Endproc
|
||||
Reference in New Issue
Block a user