unit ucadUsuarios; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, System.UITypes, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstMaster, Data.DB, Vcl.ComCtrls, rDBTreeView, Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls, Vcl.Buttons, Vcl.Menus, System.ImageList, Vcl.ImgList, Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.Mask, ZAbstractRODataset, ZAbstractDataset, ZDataset, ACBrBase, ACBrMail; type THackDBNavigator = class(TDBNavigator); type TcadUsuarios = class(TmstMaster) rdbtv_permissoes: TrDBTreeView; pcCad: TPageControl; pgAcessos: TTabSheet; dbGrupos: TDBGrid; dbUsuarios: TDBGrid; lbl_grupos: TLabel; lbl_usuarios: TLabel; lbl_permissoes: TLabel; bitbtn_liberar: TBitBtn; bitbtn_bloquear: TBitBtn; mnu_opcoes: TMainMenu; Opes1: TMenuItem; mnu_attperm: TMenuItem; N1: TMenuItem; mnu_delperm: TMenuItem; ImageList1: TImageList; btn_movuser: TButton; pgGrupos: TTabSheet; pgUsuarios: TTabSheet; dblulb_grupos: TDBLookupListBox; navgrupos: TDBNavigator; ImageList2: TImageList; pcUsuarios: TPageControl; pgDados: TTabSheet; pgemail: TTabSheet; navusuarios: TDBNavigator; lbl_login: TLabel; lbl_senha: TLabel; dbedt_login: TDBEdit; dbedt_senha: TDBEdit; dbcbx_trocasenha: TDBCheckBox; dbcbx_bloqueado: TDBCheckBox; cb_senha: TCheckBox; dtsUsuarios: TDataSource; dbedt_nome: TDBEdit; lbl_nome: TLabel; lbl_escolhegrupo: TLabel; dtsGrupo: TDataSource; dblulb_usuarios: TDBLookupListBox; pnl_grupo: TPanel; lbl_gruponome: TLabel; dbedt_gruponome: TDBEdit; lbl_sudo: TLabel; dbcb_sudo: TDBCheckBox; dblucb_grupos: TDBLookupComboBox; lbl_grupoacesso: TLabel; dblucb_grupoacesso: TDBLookupComboBox; dtsConsulta: TDataSource; qryConsulta: TZQuery; lbl_nomeemail: TLabel; Label1: TLabel; lbl_useremail: TLabel; lbl_senhaemail: TLabel; lbl_portasmtp: TLabel; lbl_smtp: TLabel; dbedt_nomeemail: TDBEdit; DBEdit2: TDBEdit; dbedt_useremail: TDBEdit; dbedt_senhaemail: TDBEdit; dbedt_portasmtp: TDBEdit; dbedt_smtp: TDBEdit; btn_testconex: TButton; dbcb_ssl: TDBCheckBox; dbcb_tls: TDBCheckBox; ACBrMail: TACBrMail; procedure FormCreate(Sender: TObject); procedure mnu_attpermClick(Sender: TObject); procedure btnnovogrupoClick(Sender: TObject); procedure btnadelgrupoClick(Sender: TObject); procedure btnnovousergrupoClick(Sender: TObject); procedure btnmodusergrupoClick(Sender: TObject); procedure bitbtn_liberarClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure rdbtv_permissoesClick(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure bitbtn_bloquearClick(Sender: TObject); procedure rdbtv_permissoesGetImageIndex(Sender: TObject; Node: TTreeNode); procedure btndelusergrupoClick(Sender: TObject); procedure btn_movuserClick(Sender: TObject); procedure mnu_mudarnomeClick(Sender: TObject); procedure cb_senhaClick(Sender: TObject); procedure dtsUsuariosStateChange(Sender: TObject); procedure dtsGrupoStateChange(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure navgruposBeforeAction(Sender: TObject; Button: TNavigateBtn); procedure pcCadChanging(Sender: TObject; var AllowChange: Boolean); procedure pcCadChange(Sender: TObject); procedure btn_testconexClick(Sender: TObject); private old_id_u: integer; old_id_g: integer; procedure SetupHackedNavigator(const Navigator: TDBNavigator; const Glyphs: TImageList; S: string); procedure WMMoving(var Msg: TWMMoving); message WM_MOVING; // procedure AtualizarRdbtreeview; { Private declarations } public add_user: Boolean; id_grupomov: string; nome_grupmov: string; procedure InserirIDnaPerm; procedure AcessoCobranca; // CBR - 01 ~ 04 procedure AcessoFerramentas; // CBR.01 - 01 ~ 10 procedure AcessoCobrancaTel; // CBR.01.01 - 01 ~ 02 procedure AcessoAtendimento; // CBR.01.02 procedure AcessoCadastros; // CBR.02 procedure AcessoDevedores; procedure AcessoCredores; procedure AcessoUsuarios; procedure AcessoRelatorios; procedure AcessoOpcoes; procedure AtualizarPermissoesGrupos; procedure ChecaPermissoes; { Public declarations } end; var cadUsuarios: TcadUsuarios; implementation {$R *.dfm} uses udtmSystem, {ucadUsuarioseditar,} ufrmMovUsuarios, ufrmLiberaPermissao; // felipe conhece como funciona o sistema de permissões dessa janela procedure TcadUsuarios.mnu_attpermClick(Sender: TObject); begin try AcessoCobranca; AcessoFerramentas; AcessoCobrancaTel; AcessoAtendimento; AcessoCadastros; AcessoDevedores; AcessoCredores; AcessoUsuarios; AcessoRelatorios; AcessoOpcoes; AtualizarPermissoesGrupos; dtmSystem.MakePermissoes; Showmessage('Permissões atualizadas com sucesso!'); except on E: Exception do MessageDlg('Erro ao atualizar as permissões!' + sLineBreak + E.message, mtError, [mbOK], 0); end; end; procedure TcadUsuarios.btnadelgrupoClick(Sender: TObject); var resp: integer; begin resp := MessageDlg('Deseja realmente remover este grupo?', mtConfirmation, mbOKCancel, 0); // tratamento pra realmente poder remover o grupo está na udtmSystem if resp = mrOk then begin dtmSystem.tblGrupos.Delete; end; end; procedure TcadUsuarios.btndelusergrupoClick(Sender: TObject); var resp: integer; begin resp := MessageDlg('Deseja realmente remover este usuário?', mtConfirmation, mbOKCancel, 0); if resp = mrOk then begin // remover usuário do grupo dtmSystem.tblUsuarios.Delete; end; end; procedure TcadUsuarios.btnmodusergrupoClick(Sender: TObject); begin // dtmSystem.add_user := false; // modificar usuario // TcadUsuarioseditar.Create(self).ShowModal; end; procedure TcadUsuarios.btnnovogrupoClick(Sender: TObject); var nome: string; begin // criar novo grupo with dtmSystem do begin tblGrupos.Open; if InputQuery('Novo Grupo', 'Insira um nome para o novo grupo.', nome) then begin tblGrupos.Append; tblGruposTX_NOME.AsString := nome; tblGruposTP_SU.AsString := 'N'; tblGrupos.Post; end; end; AtualizarPermissoesGrupos; end; procedure TcadUsuarios.btnnovousergrupoClick(Sender: TObject); begin // dtmSystem.add_user := true; // novo usuário // TcadUsuarioseditar.Create(self).ShowModal; end; procedure TcadUsuarios.btn_movuserClick(Sender: TObject); var i: integer; begin // mover usuários de um grupo para o outro nome_grupmov := dtmSystem.tblGruposTX_NOME.AsString; frmMovUsuarios := TfrmMovUsuarios.Create(self); frmMovUsuarios.ShowModal; if frmMovUsuarios.ModalResult = mrOk then begin for i := 0 to dbUsuarios.SelectedRows.Count - 1 do begin dtmSystem.tblUsuarios.GotoBookmark (pointer(dbUsuarios.SelectedRows.Items[i])); dtmSystem.tblUsuarios.Edit; dtmSystem.tblUsuariosID_GRUPO.AsString := id_grupomov; dtmSystem.tblUsuarios.Post; end; end; end; procedure TcadUsuarios.btn_testconexClick(Sender: TObject); begin with ACBrMail do begin try Clear; IsHTML := true; Subject := 'Teste de conexão'; From := dtmSystem.tblUsuariosTX_EMAIL.AsString; FromName := dtmSystem.tblUsuariosTX_EMAILNOME.AsString; Host := dtmSystem.tblUsuariosTX_SMTP.AsString; Username := dtmSystem.tblUsuariosTX_USUARIO.AsString; Password := dtmSystem.tblUsuariosTX_SENHA.AsString; Port := dtmSystem.tblUsuariosTX_PORTA.AsString; if dtmSystem.tblUsuariosTP_TLS.AsString = 'S' then begin SetTLS := true; end else begin SetTLS := false; end; if dtmSystem.tblUsuariosTP_SSL.AsString = 'S' then begin SetSSL := true; end else begin SetSSL := false; end; DefaultCharset := TMailCharset(0); IDECharset := TMailCharset(0); AddAddress('marcus@nexverse.com.br', 'Teste de conexão'); Body.Text := 'Teste de conexão'; Screen.Cursor := crHourGlass; Send(false); Application.ProcessMessages; Screen.Cursor := crDefault; Showmessage ('Email teste enviado com sucesso. Configuração de email correta!'); except Screen.Cursor := crDefault; Showmessage ('Falha ao enviar email de teste. Configuração de email incorreta!'); end; end; end; procedure TcadUsuarios.cb_senhaClick(Sender: TObject); begin if cb_senha.Checked then begin dbedt_senha.PasswordChar := #0; dtmSystem.mostrar_senha := true; end; if not cb_senha.Checked then begin dbedt_senha.PasswordChar := '*'; dtmSystem.mostrar_senha := false; end; end; procedure TcadUsuarios.ChecaPermissoes; begin with dtmSystem do begin bitbtn_liberar.Enabled := VerificarPermissao('CBR.02.03.01.01'); bitbtn_bloquear.Enabled := VerificarPermissao('CBR.02.03.01.02'); navgrupos.Enabled := VerificarPermissao('CBR.02.03.02'); if not VerificarPermissao('CBR.02.03.02.01') then navgrupos.VisibleButtons := navgrupos.VisibleButtons - [nbInsert]; if not VerificarPermissao('CBR.02.03.02.02') then navgrupos.VisibleButtons := navgrupos.VisibleButtons - [nbEdit]; if not VerificarPermissao('CBR.02.03.02.03') then navgrupos.VisibleButtons := navgrupos.VisibleButtons - [nbDelete]; navusuarios.Enabled := VerificarPermissao('CBR.02.03.03'); if not VerificarPermissao('CBR.02.03.03.01') then navusuarios.VisibleButtons := navusuarios.VisibleButtons - [nbInsert]; if not VerificarPermissao('CBR.02.03.03.02') then navusuarios.VisibleButtons := navusuarios.VisibleButtons - [nbEdit]; if not VerificarPermissao('CBR.02.03.03.02') then navusuarios.VisibleButtons := navusuarios.VisibleButtons - [nbDelete]; end; end; procedure TcadUsuarios.dtsGrupoStateChange(Sender: TObject); begin pnl_grupo.Enabled := dtsGrupo.DataSet.State in [dsEdit, dsInsert]; dblulb_grupos.Enabled := not(dtsGrupo.DataSet.State in [dsEdit, dsInsert]); dblucb_grupos.Enabled := not(dtsGrupo.DataSet.State in [dsEdit, dsInsert]); navusuarios.Enabled := not(dtsGrupo.DataSet.State in [dsEdit, dsInsert]); dblulb_usuarios.Enabled := not(dtsGrupo.DataSet.State in [dsEdit, dsInsert]); if qryConsulta.Active then begin qryConsulta.Refresh; end; end; procedure TcadUsuarios.dtsUsuariosStateChange(Sender: TObject); begin pcUsuarios.Enabled := dtsUsuarios.DataSet.State in [dsEdit, dsInsert]; dblucb_grupos.Enabled := not(dtsUsuarios.DataSet.State in [dsEdit, dsInsert]); dblulb_usuarios.Enabled := not(dtsUsuarios.DataSet.State in [dsEdit, dsInsert]); navgrupos.Enabled := not(dtsUsuarios.DataSet.State in [dsEdit, dsInsert]); dblulb_grupos.Enabled := not(dtsUsuarios.DataSet.State in [dsEdit, dsInsert]); if qryConsulta.Active then begin qryConsulta.Refresh; end; if (dtsUsuarios.DataSet.State in [dsBrowse]) then begin pcUsuarios.ActivePage := pgDados; end; end; procedure TcadUsuarios.FormClose(Sender: TObject; var Action: TCloseAction); begin if dtsUsuarios.DataSet <> nil then begin dtsUsuarios.DataSet.Filtered := false; if dtsUsuarios.DataSet.State in [dsInsert, dsEdit] then dtsUsuarios.DataSet.Cancel; end; if dtsGrupo.DataSet <> nil then begin dtsGrupo.DataSet.Filtered := false; if dtsGrupo.DataSet.State in [dsInsert, dsEdit] then dtsGrupo.DataSet.Cancel; end; qryConsulta.Close; inherited; with dtmSystem do begin tblGrupos.Close; // tblUsuarios.Close; tblPermissoes.Close; tblGruposPermissoes.Close; tblPermDisponiveis.Close; end; cadUsuarios := nil; Action := caFree; end; procedure TcadUsuarios.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if navgrupos.DataSource <> nil then if navgrupos.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); CanClose := false; end; if navusuarios.DataSource <> nil then if navusuarios.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); CanClose := false; end; end; procedure TcadUsuarios.FormCreate(Sender: TObject); begin inherited; with dtmSystem do begin if not tblPermissoes.Active then begin tblPermissoes.Open end else begin tblPermissoes.Refresh; end; if not tblGruposPermissoes.Active then begin tblGruposPermissoes.Open; end else begin tblGruposPermissoes.Refresh; end; if not tblUsuarios.Active then begin tblUsuarios.Open; end else begin tblUsuarios.Refresh; end; if not tblPermDisponiveis.Active then begin tblPermDisponiveis.Open; end else begin tblPermDisponiveis.Refresh; end; if not tblGrupos.Active then begin tblGrupos.Open; end else begin tblGrupos.Refresh; end; end; pcCad.ActivePage := pgAcessos; pcUsuarios.ActivePage := pgDados; add_user := false; old_id_g := -1; old_id_u := -1; SetupHackedNavigator(navgrupos, ImageList2, 's'); SetupHackedNavigator(navusuarios, ImageList2, 's'); qryConsulta.SQL.Text := 'select * from SYS_GRUPOS order by TX_NOME'; qryConsulta.Open; dblucb_grupoacesso.ListField := 'TX_NOME'; dblucb_grupoacesso.KeyField := 'ID_GRUPO'; dtmSystem.MakePermissoes; ChecaPermissoes; end; procedure TcadUsuarios.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin { // esc não fecha a janela if (Key = vk_escape) then begin Key := 0; self.ActiveControl := nil; end; } inherited; if Key = VK_ESCAPE then begin Key := 0; Close; end; { navgrupos.Enabled := VerificarPermissao('CBR.02.03.02'); if not VerificarPermissao('CBR.02.03.02.01') then navgrupos.VisibleButtons := navgrupos.VisibleButtons - [nbInsert]; if not VerificarPermissao('CBR.02.03.02.02') then navgrupos.VisibleButtons := navgrupos.VisibleButtons - [nbEdit]; if not VerificarPermissao('CBR.02.03.02.03') then navgrupos.VisibleButtons := navgrupos.VisibleButtons - [nbDelete]; navusuarios.Enabled := VerificarPermissao('CBR.02.03.03'); if not VerificarPermissao('CBR.02.03.03.01') then navusuarios.VisibleButtons := navusuarios.VisibleButtons - [nbInsert]; if not VerificarPermissao('CBR.02.03.03.02') then navusuarios.VisibleButtons := navusuarios.VisibleButtons - [nbEdit]; if not VerificarPermissao('CBR.02.03.03.02') then navusuarios.VisibleButtons := navusuarios.VisibleButtons - [nbDelete]; } if (Key = 75) and (Shift = [ssCtrl]) then begin // ShowMessage('Ctrl+k is pressed!'); frmLiberaPermissao := TfrmLiberaPermissao.Create(self); with frmLiberaPermissao do begin level := 3; string_permissoes.Add('CBR.02.03.01.01'); string_permissoes.Add('CBR.02.03.01.02'); string_permissoes.Add('CBR.02.03.02'); string_permissoes.Add('CBR.02.03.02.01'); string_permissoes.Add('CBR.02.03.02.02'); string_permissoes.Add('CBR.02.03.02.03'); string_permissoes.Add('CBR.02.03.03'); string_permissoes.Add('CBR.02.03.03.01'); string_permissoes.Add('CBR.02.03.03.02'); string_permissoes.Add('CBR.02.03.03.03'); ShowModal; if ModalResult = mrOk then begin case dtmSystem.cod_liberapermissao of 0: bitbtn_liberar.Enabled := true; 1: bitbtn_bloquear.Enabled := true; 2: navgrupos.Enabled := true; 3: begin navgrupos.Enabled := true; navgrupos.VisibleButtons := navgrupos.VisibleButtons + [nbInsert]; end; 4: begin navgrupos.Enabled := true; navgrupos.VisibleButtons := navgrupos.VisibleButtons + [nbEdit]; end; 5: begin navgrupos.Enabled := true; navgrupos.VisibleButtons := navgrupos.VisibleButtons + [nbDelete]; end; 6: navusuarios.Enabled := true; 7: begin navusuarios.Enabled := true; navusuarios.VisibleButtons := navusuarios.VisibleButtons + [nbInsert]; end; 8: begin navusuarios.Enabled := true; navusuarios.VisibleButtons := navusuarios.VisibleButtons + [nbEdit]; end; 9: begin navusuarios.Enabled := true; navusuarios.VisibleButtons := navusuarios.VisibleButtons + [nbDelete]; end; end; end; end; end; end; procedure TcadUsuarios.FormShow(Sender: TObject); begin dtmSystem.tblGrupos.First; dtmSystem.tblUsuarios.First; if dtmSystem.mostrar_senha then begin cb_senha.Checked := true; dbedt_senha.PasswordChar := #0; end else begin cb_senha.Checked := false; dbedt_senha.PasswordChar := '*'; end; dblucb_grupos.KeyValue := dtsGrupo.DataSet.FieldByName('ID_GRUPO').AsInteger; end; procedure TcadUsuarios.InserirIDnaPerm; begin with dtmSystem do begin tblPermissoes.First; while not tblPermissoes.Eof do begin if Pos('(', tblPermissoesCD_PERMISSAO.AsString) <> 1 then begin tblPermissoes.Edit; tblPermissoesTX_DESCRICAO.AsString := '(' + tblPermissoesID_PERMISSAO.AsString + ') ' + tblPermissoesTX_DESCRICAO.AsString; tblPermissoes.Post; end; tblPermissoes.Next; end; end; end; procedure TcadUsuarios.mnu_mudarnomeClick(Sender: TObject); var nome: string; begin with dtmSystem do begin if InputQuery('Novo nome.', 'Insira um novo nome para o grupo.', nome) then begin if nome = tblGruposTX_NOME.AsString then begin MessageDlg('O grupo não pode receber o mesmo nome.', mtInformation, [mbOK], 0); end else begin tblGrupos.Edit; tblGruposTX_NOME.AsString := nome; tblGrupos.Post; end; end; end; end; procedure TcadUsuarios.navgruposBeforeAction(Sender: TObject; Button: TNavigateBtn); begin case Button of nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbRefresh: if navgrupos.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); Abort; end; nbPost: begin SelectNext(ActiveControl as tWinControl, true, true); navgrupos.DataSource.DataSet.Post; AtualizarPermissoesGrupos; abort; end; nbDelete: begin if navgrupos.DataSource.State in [dsInsert, dsEdit] then begin MessageDlg ('Existem alterações pendentes, clique em CONFIRMAR ou CANCELAR.', mtConfirmation, [mbOK], 0); Abort; end; if MessageDlg('Deseja apagar este registro?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Abort; try dtsGrupo.DataSet.Delete; except Showmessage ('Este registro está sendo utilizado pelo sistema ou contém dependências e não pode ser apagado'); end; Abort; end; nbCancel: if MessageDlg('Deseja cancelar as modificações?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Abort; end; end; procedure TcadUsuarios.pcCadChange(Sender: TObject); begin inherited; if pcCad.TabIndex = 3 then begin dtsGrupo.DataSet.First; end; end; procedure TcadUsuarios.pcCadChanging(Sender: TObject; var AllowChange: Boolean); var ponto: TPoint; begin ponto := Mouse.CursorPos; ponto := ScreenToClient(ponto); if (dtsUsuarios.DataSet.State in [dsEdit, dsInsert]) or (dtsGrupo.DataSet.State in [dsEdit, dsInsert]) then begin if pcCad.IndexOfTabAt(ponto.X, ponto.Y) = 0 then begin AllowChange := false; end; end; end; procedure TcadUsuarios.rdbtv_permissoesClick(Sender: TObject); begin rdbtv_permissoes.Selected.SelectedIndex := rdbtv_permissoes.Selected.ImageIndex; end; procedure TcadUsuarios.rdbtv_permissoesGetImageIndex(Sender: TObject; Node: TTreeNode); var perm_id, perm: string; // coloca as imagens no list conforme tipo de permissão last_recno: integer; pai, filho: TTreeNode; begin if (Node.level >= 1) and Assigned(Node.Data) then begin // Node.AbsoluteIndex; // Node.getPrevSibling; with dtmSystem do begin last_recno := tblGrupos.RecNo; if tblGrupos.Locate('TX_NOME', Node.Text, []) then begin tblGrupos.RecNo := last_recno; end else begin filho := Node; pai := Node.Parent; perm := ''; while pai <> nil do begin if pai.level <> 0 then begin if filho = Node then begin perm := '.' + Format('%.*d', [2, Node.Index + 1]) + perm; end else begin perm := '.' + Format('%.*d', [2, filho.Index + 1]) + perm; end; end; filho := pai; pai := filho.Parent; end; perm := 'CBR' + perm; // rdbtv_permissoes.DataItemDefs[0].SubDataItemDefs[0]. // if tblPermissoes.Locate('TX_DESCRICAO', Node.Text, []) then // begin if tblPermissoes.Locate('CD_PERMISSAO', perm, []) then begin perm_id := tblPermissoesID_PERMISSAO.AsString; end; if tblGruposPermissoes.Locate('ID_PERMISSAO', perm_id, []) then begin if tblGruposPermissoesTP_ACESSO.AsString = 'S' then begin Node.ImageIndex := 0; Node.SelectedIndex := 0; end else begin Node.ImageIndex := 1; Node.SelectedIndex := 1; end; end; end; end; end; end; procedure TcadUsuarios.SetupHackedNavigator(const Navigator: TDBNavigator; const Glyphs: TImageList; S: string); const Captions: array [TNavigateBtn] of string = ('Primeiro', 'Anterior', 'Próximo', 'Último', 'Adicionar', 'Excluir', 'Alterar', 'Confirmar', 'Cancelar', 'Atualizar', 'Aplicar Atualizações', 'Cancelar Atualizãções'); (* Captions : array[TNavigateBtn] of string = ('First', 'Prior', 'Next', 'Last', 'Insert', 'Delete', 'Edit', 'Post', 'Cancel', 'Refresh'); *) Hints: array [TNavigateBtn] of string = ('Primeiro', 'Anterior', 'Próximo', 'Último', 'Adicionar', 'Apagar', 'Modificar', 'Confirmar', 'Cancelar', 'Atualizar', 'Aplicar Atualizações', 'Cancelar Atualizãções'); var btn: TNavigateBtn; begin // função propriamente dita para "hackear" o navigator for btn := Low(TNavigateBtn) to High(TNavigateBtn) do with THackDBNavigator(Navigator).Buttons[btn] do begin // from the Captions const array Hint := Hints[btn]; if S = 's' then begin Caption := Captions[btn]; end; // the number of images in the Glyph property NumGlyphs := 1; // Remove the old glyph. Glyph := nil; // Assign the custom one Glyphs.GetBitmap(integer(btn), Glyph); // gylph above text Layout := blGlyphTop; Font.Style := Font.Style - [fsbold]; end; end; procedure TcadUsuarios.WMMoving(var Msg: TWMMoving); var workArea: TRect; begin workArea := Screen.WorkareaRect; with Msg.DragRect^ do begin if left < workArea.left then OffsetRect(Msg.DragRect^, workArea.left - left, 0); if top < workArea.top then OffsetRect(Msg.DragRect^, 0, workArea.top - top); if Right > workArea.Right then OffsetRect(Msg.DragRect^, workArea.Right - Right, 0); if Bottom > workArea.Bottom then OffsetRect(Msg.DragRect^, 0, workArea.Bottom - Bottom); end; end; procedure TcadUsuarios.AcessoAtendimento; begin with dtmSystem do begin InserirPermissao('CBR.01.03.01', 'S', 'Dados Cadastrais'); InserirPermissao('CBR.01.03.01.01', 'S', 'Editar Devedor'); InserirPermissao('CBR.01.03.01.02', 'S', 'Endereços'); InserirPermissao('CBR.01.03.01.02.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.03.01.02.02', 'S', 'Editar'); InserirPermissao('CBR.01.03.01.02.03', 'S', 'Excluir'); InserirPermissao('CBR.01.03.01.03', 'S', 'Telefones'); InserirPermissao('CBR.01.03.01.03.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.03.01.03.02', 'S', 'Editar'); InserirPermissao('CBR.01.03.01.03.03', 'S', 'Excluir'); InserirPermissao('CBR.01.03.01.04', 'S', 'Títulos'); InserirPermissao('CBR.01.03.01.04.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.03.01.04.02', 'S', 'Editar'); InserirPermissao('CBR.01.03.01.04.03', 'S', 'Excluir'); InserirPermissao('CBR.01.03.01.05', 'S', 'Histórico'); InserirPermissao('CBR.01.03.01.05.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.03.01.05.02', 'S', 'Editar'); InserirPermissao('CBR.01.03.01.05.03', 'S', 'Excluir'); InserirPermissao('CBR.01.03.01.06', 'S', 'Email'); InserirPermissao('CBR.01.03.01.06.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.03.01.06.02', 'S', 'Editar'); InserirPermissao('CBR.01.03.01.06.03', 'S', 'Excluir'); InserirPermissao('CBR.01.03.02', 'S', 'Cálculos'); InserirPermissao('CBR.01.03.02.01', 'S', 'Descontos'); InserirPermissao('CBR.01.03.02.01.01', 'S', 'Quitar'); InserirPermissao('CBR.01.03.02.01.02', 'S', 'Parcelar'); InserirPermissao('CBR.01.03.02.01.03', 'S', 'Índices'); InserirPermissao('CBR.01.03.02.02', 'S', 'Não Cobrar Multa'); InserirPermissao('CBR.01.03.02.03', 'S', 'Taxa Extra'); InserirPermissao('CBR.01.03.02.04', 'S', 'Exceção de Entrada'); InserirPermissao('CBR.01.03.02.05', 'S', 'Cobrar Índices'); end; end; procedure TcadUsuarios.AcessoCadastros; begin with dtmSystem do begin InserirPermissao('CBR.02.01', 'S', 'Devedores'); InserirPermissao('CBR.02.02', 'S', 'Credores'); InserirPermissao('CBR.02.03', 'S', 'Permissões, Grupos e Usuários'); InserirPermissao('CBR.02.04', 'S', 'Providências'); InserirPermissao('CBR.02.05', 'S', 'Empresa'); InserirPermissao('CBR.02.06', 'S', 'Contas'); InserirPermissao('CBR.02.07', 'S', 'Texto de Mensagens'); end; end; procedure TcadUsuarios.AcessoCobranca; // Permissões da janela cobrança begin with dtmSystem do begin InserirPermissao('CBR', 'S', 'Cobrança - Sistema'); InserirPermissao('CBR.01', 'S', 'Ferramentas do Sistema'); InserirPermissao('CBR.02', 'S', 'Cadastros'); InserirPermissao('CBR.03', 'S', 'Relatórios'); InserirPermissao('CBR.04', 'S', 'Opções'); // ??? end; end; procedure TcadUsuarios.AcessoCobrancaTel; begin with dtmSystem do begin InserirPermissao('CBR.01.01.01', 'S', 'Dados Cadastrais'); InserirPermissao('CBR.01.01.01.01', 'S', 'Editar Devedor'); InserirPermissao('CBR.01.01.01.02', 'S', 'Endereços'); InserirPermissao('CBR.01.01.01.02.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.01.01.02.02', 'S', 'Editar'); InserirPermissao('CBR.01.01.01.02.03', 'S', 'Excluir'); InserirPermissao('CBR.01.01.01.03', 'S', 'Telefones'); InserirPermissao('CBR.01.01.01.03.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.01.01.03.02', 'S', 'Editar'); InserirPermissao('CBR.01.01.01.03.03', 'S', 'Excluir'); InserirPermissao('CBR.01.01.01.04', 'S', 'Títulos'); InserirPermissao('CBR.01.01.01.04.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.01.01.04.02', 'S', 'Editar'); InserirPermissao('CBR.01.01.01.04.03', 'S', 'Excluir'); InserirPermissao('CBR.01.01.01.05', 'S', 'Histórico'); InserirPermissao('CBR.01.01.01.05.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.01.01.05.02', 'S', 'Editar'); InserirPermissao('CBR.01.01.01.05.03', 'S', 'Excluir'); InserirPermissao('CBR.01.01.01.06', 'S', 'Email'); InserirPermissao('CBR.01.01.01.06.01', 'S', 'Adicionar'); InserirPermissao('CBR.01.01.01.06.02', 'S', 'Editar'); InserirPermissao('CBR.01.01.01.06.03', 'S', 'Excluir'); InserirPermissao('CBR.01.01.02', 'S', 'Cálculos'); InserirPermissao('CBR.01.01.02.01', 'S', 'Descontos'); InserirPermissao('CBR.01.01.02.01.01', 'S', 'Quitar'); InserirPermissao('CBR.01.01.02.01.02', 'S', 'Parcelar'); InserirPermissao('CBR.01.01.02.02', 'S', 'Não Cobrar Multa'); InserirPermissao('CBR.01.01.02.03', 'S', 'Taxa Extra'); InserirPermissao('CBR.01.01.02.04', 'S', 'Exceção de Entrada'); end; end; procedure TcadUsuarios.AcessoCredores; begin with dtmSystem do begin // InserirPermissao('CBR.02.02', 'S', 'Credores'); InserirPermissao('CBR.02.02.01', 'S', 'Dados Cadastrais'); InserirPermissao('CBR.02.02.01.01', 'S', 'Adicionar'); InserirPermissao('CBR.02.02.01.02', 'S', 'Editar'); InserirPermissao('CBR.02.02.01.03', 'S', 'Excluir'); InserirPermissao('CBR.02.02.01.04', 'S', 'Cálculos'); InserirPermissao('CBR.02.02.02', 'S', 'Políticas'); InserirPermissao('CBR.02.02.03', 'S', 'Faixas'); InserirPermissao('CBR.02.02.04', 'S', 'Indicadores Financeiros'); end; end; procedure TcadUsuarios.AcessoDevedores; begin with dtmSystem do begin // InserirPermissao('CBR.02.01', 'S', 'Devedores'); InserirPermissao('CBR.02.01.01', 'S', 'Dados Cadastrais'); InserirPermissao('CBR.02.01.01.01', 'S', 'Editar Devedor'); InserirPermissao('CBR.02.01.01.01.01', 'N', 'Excluir Devedor'); InserirPermissao('CBR.02.01.01.02', 'S', 'Endereços'); InserirPermissao('CBR.02.01.01.02.01', 'S', 'Adicionar'); InserirPermissao('CBR.02.01.01.02.02', 'S', 'Editar'); InserirPermissao('CBR.02.01.01.02.03', 'S', 'Excluir'); InserirPermissao('CBR.02.01.01.03', 'S', 'Telefones'); InserirPermissao('CBR.02.01.01.03.01', 'S', 'Adicionar'); InserirPermissao('CBR.02.01.01.03.02', 'S', 'Editar'); InserirPermissao('CBR.02.01.01.03.03', 'S', 'Excluir'); InserirPermissao('CBR.02.01.01.04', 'S', 'Títulos'); InserirPermissao('CBR.02.01.01.04.01', 'S', 'Adicionar'); InserirPermissao('CBR.02.01.01.04.02', 'S', 'Editar'); InserirPermissao('CBR.02.01.01.04.03', 'S', 'Excluir'); InserirPermissao('CBR.02.01.01.05', 'S', 'Histórico'); InserirPermissao('CBR.02.01.01.05.01', 'S', 'Adicionar'); InserirPermissao('CBR.02.01.01.05.02', 'S', 'Editar'); InserirPermissao('CBR.02.01.01.05.03', 'S', 'Excluir'); InserirPermissao('CBR.02.01.01.06', 'S', 'Emails'); InserirPermissao('CBR.02.01.01.06.01', 'S', 'Adicionar'); InserirPermissao('CBR.02.01.01.06.02', 'S', 'Editar'); InserirPermissao('CBR.02.01.01.06.03', 'S', 'Excluir'); InserirPermissao('CBR.02.01.02', 'S', 'Cálculos'); InserirPermissao('CBR.02.01.02.01', 'S', 'Descontos'); InserirPermissao('CBR.02.01.02.01.01', 'S', 'Quitar'); InserirPermissao('CBR.02.01.02.01.02', 'S', 'Parcelar'); InserirPermissao('CBR.02.01.02.02', 'S', 'Não Cobrar Multa'); InserirPermissao('CBR.02.01.02.03', 'S', 'Taxa Extra'); InserirPermissao('CBR.02.01.02.04', 'S', 'Exceção de Entrada'); end; end; procedure TcadUsuarios.AcessoFerramentas; begin with dtmSystem do begin InserirPermissao('CBR.01.01', 'S', 'Cobrança Telefônica'); InserirPermissao('CBR.01.02', 'S', 'Pesquisa de Devedores'); InserirPermissao('CBR.01.03', 'S', 'Atendimento'); InserirPermissao('CBR.01.04', 'S', 'Gerenciamento de Campanhas'); InserirPermissao('CBR.01.05', 'S', 'Central de Agendamento'); InserirPermissao('CBR.01.06', 'S', 'Envio de Mensagens'); InserirPermissao('CBR.01.07', 'S', 'Correção Digito 9'); InserirPermissao('CBR.01.08', 'S', 'Importação TCC'); InserirPermissao('CBR.01.09', 'S', 'Central de Planilhamento'); InserirPermissao('CBR.01.10', 'S', 'Visualização de Recibos'); InserirPermissao('CBR.01.11', 'S', 'Rankings'); end; end; procedure TcadUsuarios.AcessoOpcoes; begin with dtmSystem do begin // InserirPermissao('CBR.03', 'S', 'Relatórios'); InserirPermissao('CBR.04.01', 'S', 'Índices de Cobrança'); InserirPermissao('CBR.04.02', 'S', 'Modelos de Repasse'); InserirPermissao('CBR.04.03', 'S', 'Banco de Dados'); InserirPermissao('CBR.04.03.01', 'S', 'Backup'); InserirPermissao('CBR.04.03.02', 'S', 'Restaurar'); InserirPermissao('CBR.04.04', 'S', 'Configuração de Layout de Importação'); InserirPermissao('CBR.04.05', 'S', 'Configuração de Pop Up de Inicialização'); InserirPermissao('CBR.04.06', 'S', 'Envio de Banco online'); end; end; procedure TcadUsuarios.AcessoRelatorios; begin with dtmSystem do begin // InserirPermissao('CBR.03', 'S', 'Relatórios'); InserirPermissao('CBR.03.01', 'S', 'Entrada de Devedores'); InserirPermissao('CBR.03.02', 'S', 'Prestação de Contas'); InserirPermissao('CBR.03.03', 'S', 'Recibos Emitidos'); InserirPermissao('CBR.03.04', 'S', 'Prestação de Contas TCC'); end; end; procedure TcadUsuarios.AcessoUsuarios; begin with dtmSystem do begin // InserirPermissao('CBR.02.03', 'S', 'Usuários'); InserirPermissao('CBR.02.03.01', 'S', 'Permissões'); InserirPermissao('CBR.02.03.01.01', 'S', 'Conceder'); InserirPermissao('CBR.02.03.01.02', 'S', 'Bloquear'); InserirPermissao('CBR.02.03.02', 'S', 'Grupos'); InserirPermissao('CBR.02.03.02.01', 'S', 'Adicionar'); InserirPermissao('CBR.02.03.02.02', 'S', 'Editar'); InserirPermissao('CBR.02.03.02.03', 'S', 'Excluir'); InserirPermissao('CBR.02.03.03', 'S', 'Usuários'); InserirPermissao('CBR.02.03.03.01', 'S', 'Adicionar'); InserirPermissao('CBR.02.03.03.02', 'S', 'Editar'); InserirPermissao('CBR.02.03.03.03', 'S', 'Excluir'); end; end; procedure TcadUsuarios.AtualizarPermissoesGrupos; // nome auto explicativo... begin Screen.Cursor := crHourGlass; with dtmSystem do begin tblPermDisponiveis.Open; tblGruposPermissoes.Open; tblGruposPermissoes.DisableControls; tblGrupos.First; while not tblGrupos.Eof do begin tblPermissoes.First; while not tblPermissoes.Eof do begin if not tblGruposPermissoes.Locate('ID_PERMISSAO', tblPermissoesID_PERMISSAO.Value, []) then begin tblGruposPermissoes.Append; tblGruposPermissoesID_PERMISSAO.AsString := tblPermissoesID_PERMISSAO.AsString; tblGruposPermissoesTP_ACESSO.AsString := tblPermissoesTP_ACESSO.AsString; tblGruposPermissoes.Post; end; stbStatus.SimpleText := 'Atualizando Grupo ' + tblGruposTX_NOME.AsString + ': ' + FormatFloat('0.00%', tblPermissoes.RecNo / tblPermissoes.RecordCount * 100); tblPermissoes.Next; end; tblGrupos.Next; end; tblPermissoes.First; tblGrupos.First; // tblPermissoes.Close; tblGruposPermissoes.Close; tblGruposPermissoes.Open; tblGrupos.EnableControls; tblGruposPermissoes.EnableControls; // tblPermDisponiveis.Close; end; stbStatus.SimpleText := ''; Screen.Cursor := crDefault; end; procedure TcadUsuarios.bitbtn_liberarClick(Sender: TObject); var p: TTreeNode; nome_pai, id_perm, selected_node: string; // liberar a permissão begin dtmSystem.tblPermDisponiveis.Open; selected_node := rdbtv_permissoes.Selected.Text; p := rdbtv_permissoes.Selected; while Assigned(p.Parent) do begin p := p.Parent; end; nome_pai := p.Text; with dtmSystem do begin tblGrupos.Locate('TX_NOME', nome_pai, []); tblPermissoes.Locate('TX_DESCRICAO', selected_node, []); id_perm := tblPermissoesID_PERMISSAO.AsString; tblGruposPermissoes.Locate('ID_PERMISSAO', id_perm, []); tblGruposPermissoes.Edit; tblGruposPermissoesTP_ACESSO.AsString := 'S'; tblGruposPermissoes.Post; end; rdbtv_permissoes.RefreshData(false); rdbtv_permissoes.Selected := nil; end; procedure TcadUsuarios.bitbtn_bloquearClick(Sender: TObject); var p: TTreeNode; // bloquear a permissão nome_pai, selected_node, id_perm: string; begin dtmSystem.tblPermDisponiveis.Open; selected_node := rdbtv_permissoes.Selected.Text; id_perm := dtmSystem.tblPermissoesID_PERMISSAO.AsString; p := rdbtv_permissoes.Selected; while Assigned(p.Parent) do begin p := p.Parent; end; nome_pai := p.Text; with dtmSystem do begin tblGrupos.Locate('TX_NOME', nome_pai, []); // tblPermissoes.Locate('TX_DESCRICAO', selected_node, []); tblGruposPermissoes.Locate('ID_PERMISSAO', id_perm, []); tblGruposPermissoes.Edit; tblGruposPermissoesTP_ACESSO.AsString := 'N'; tblGruposPermissoes.Post; end; rdbtv_permissoes.RefreshData(false); rdbtv_permissoes.Selected := nil; end; end.