*!* 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