Autor Tópico: Ajuda - Filtro em Formulário pelo usuário logado + id_setor  (Lida 2126 vezes)

fmanfredini

  • Iniciante
  • **
  • Mensagens: 89
    • Email
Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Online: Julho 29, 2014, 10:49:05 pm »
Olá a todos do fórum, tenho o scriptcase já ha algum tempo, mas confesso não utilizo. Estou começando a fazer uma pequena aplicação nele.

Nesta aplicação quero controlar documentos (diversos). Tenho para isso a seguinte estrutura:

Tabelas:
tbl_documento;tbl_detalhes;tbl_tipodoc;tb_setor.

Inseri a parte de segurança do SC8; Na tabela sec_users inseri um campo id_setor.

Gostaria de ao fazer login e entrar no formulário de documentos (mestreXdetalhe), este filtrasse pelo usuário atrelado ao setor pelo id_setor na tabela sec_users. Exibindo assim somente os documentos pertencentes aquele setor. Em sendo pertencente ao grupo administrador, liberaria todos os documentos.

Alguém sabe como posso fazer isso? Gostaria de um passo a passo, pois não manjo muito de scriptcase, nem de PHP.

Aguardo as dicas dos mestres.

Jailton

  • Expert
  • *****
  • Mensagens: 2041
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #1 Online: Julho 29, 2014, 11:35:54 pm »
Analise o código de autenticação dentro da aplicação login criado pelo scriptcase lá ele cria a variável global com o nome do usuário,
altere a SQL lá para pegar o id_setor também.

ai veja como ele cria a variável global do nome do usuário e crie a [glo_id_setor] ai no SQL ou WHERE das aplicações que você
quer filtro coloque para id_setor = [glo_id_setor]

E uma dica muito importante, nunca crie variáveis de categorias diferentes com o mesmo nome, se não o SC mistura elas.

Tipo no seu formulário de cadastro você tem: {nome}, ai se precisar pegar 'nome' em um SQL e jogar em uma variável para usar
pegue ele como $nome_x, se precisar criar uma variável global do mesmo crie como: [glo_nome], assim você vai evitar de
ficar procurando muitos bugs de função que não executariam como deveriam e foram programadas por você.
« Última modificação: Julho 29, 2014, 11:39:43 pm por Jailton »
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

fmanfredini

  • Iniciante
  • **
  • Mensagens: 89
    • Email
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #2 Online: Julho 30, 2014, 08:40:01 am »
Jailton, blz fiz como me instruiu e funcionou blz.

Agora quero só implementar uma melhoria, tipo se o usuário for do grupo admin, libera todos os registros, como posso fazer?

Jailton

  • Expert
  • *****
  • Mensagens: 2041
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #3 Online: Julho 30, 2014, 10:28:46 am »
Jailton, blz fiz como me instruiu e funcionou blz.

Agora quero só implementar uma melhoria, tipo se o usuário for do grupo admin, libera todos os registros, como posso fazer?

Mesma solução anterior pega o grupo do usuário no login também.

Ai no onScriptIni do formulário monta a variável [glo_filtro] e compara o [glo_grupo] se for
usuário normal >> [glo_filtro] = 'id_setor = [glo_id_setor]';
se for Administrador >> [glo_filtro] = 'id_setor <> 999999';

Ai lá no Where é só por o [glo_filtro].
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

fmanfredini

  • Iniciante
  • **
  • Mensagens: 89
    • Email
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #4 Online: Julho 30, 2014, 11:41:08 am »
Desculpe Jailton,

Não consegui captar a maneira, pode ser mais detalhista, não manjo muito do scriptcase.

no where atual eu fiz assim:

idsetor=[usr_idsetor]

não consigo fazer algo assim?

if($usr_priv_admin  == 'N') {
idsetor=[usr_idsetor];
}

Jailton

  • Expert
  • *****
  • Mensagens: 2041
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #5 Online: Julho 31, 2014, 12:56:46 am »
é só colocar no where o [glo_filtro] sozinho

Tipo:

Select NOME, ENDERECO FROM CLIENTES WHERE [glo_filtro]

Dentro do [glo_filtro] ele já tá substituindo por isso:
usuário normal >> [glo_filtro] = 'id_setor = [glo_id_setor]';
se for Administrador >> [glo_filtro] = 'id_setor <> 999999';
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

fmanfredini

  • Iniciante
  • **
  • Mensagens: 89
    • Email
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #6 Online: Julho 31, 2014, 09:04:09 am »
Essa parte que irá compor o [glo_filtro] que não ficou muito claro

no onScriptIni como ficaria o código em seu exemplo só pra eu ver como fica a sintaxe, lembrando não manjo muito de scriptcase.

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #7 Online: Julho 31, 2014, 11:40:04 am »
Faça a condição direto no Where do formulário:

id_setor = [setor] or [usr_priv_admin] = 'Y'

A variável usr_priv_admin se não me engano não usa o padrão Y ou N e sim 0 ou 1, precisa confirmar lá na aplicação de login, acho que ela troca em um if os valor.

fmanfredini

  • Iniciante
  • **
  • Mensagens: 89
    • Email
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #8 Online: Agosto 01, 2014, 03:21:00 pm »
Olá Jailton,

Fiz assim no formulário pai:

inseri como você falou o código no onScriptInit

sc_reset_global([glo_filtro]);
sc_set_global($glo_filtro);
if ([usr_priv_admin] = 0) {
   $glo_filtro = 'id_setor = [usr_idsetor]';
}


E coloquei na clausula where 0 [glo_filtro]

O que acontece: qdo logo como administrador ele passa legal e abre tudo. Se utilizo um usuário diferente de Administrador, ele tras o formulário porém ao navegar fica em processamento, tipo loop. E não filtra só os registros daquele setor.

O que estou fazendo de errado?

Jailton

  • Expert
  • *****
  • Mensagens: 2041
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #9 Online: Agosto 01, 2014, 03:30:29 pm »


O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

fmanfredini

  • Iniciante
  • **
  • Mensagens: 89
    • Email
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #10 Online: Agosto 05, 2014, 12:15:42 pm »
Olá Jailton, fiz exatamente o que você indicou, e olha o que tenho dse resultado:


e qdo tento navegar entre os registro com o filtro indicado, fica assim conforme



Quando entro como Administrador ele navega normal.


fmanfredini

  • Iniciante
  • **
  • Mensagens: 89
    • Email
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #11 Online: Agosto 05, 2014, 12:29:08 pm »
Quanto as configurações sugeridas, veja se estou fazendo certo:


e




Está Correto?

Jailton

  • Expert
  • *****
  • Mensagens: 2041
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #12 Online: Agosto 05, 2014, 02:08:28 pm »
Comparação em PHP (C/C++) é 2 sinais (==),    um sinal = é só para atribuir o valor a variável.

if ([usr_priv_admin]=1) {

Vai ficar:
if ([usr_priv_admin]==1) {

Mude os: $glo_filtro =
para [glo_filtro] =

Remova a macro:
sc_set_global($glo_filtro);
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

fmanfredini

  • Iniciante
  • **
  • Mensagens: 89
    • Email
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #13 Online: Agosto 05, 2014, 02:31:45 pm »
Olá Jailton, estou evoluindo bastante, mas qdo cadastro um documento e sua movimentação ao consultar, aparece desse jeito:


Parou de dar o erro que dava antes ao paginar e não filtrar como o da tela abaixo:

Jailton

  • Expert
  • *****
  • Mensagens: 2041
Re:Ajuda - Filtro em Formulário pelo usuário logado + id_setor
« Responder #14 Online: Agosto 05, 2014, 02:56:55 pm »
Entre no Menu do SCRIPTCASE > Meu Scriptcase, Configuração e desative os 2 checkbox de segurança.

Ai gera e executa novamente que vai dar certo.
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.