Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Listar Orçamento Somente Para O Centro De Custo Permitido Para O Usuário


Francisnei

Posts Recomendados


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  4
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  30
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Boa tarde.

A sentença abaixo lista as despesas realizadas para determinado centro de custo separando por mês. Eu gostaria que no lugar do: "and crat.codgerencial in ('2.2.01.90.99')" o sql buscasse do usuário logado somente os centro de custos que ele tem acesso.

Algo como: " and crat.codgerencial in (usuario.campocplementar) ". Tem como resolver?

O mesmo para coligada: " CRAT.CODCOLIGADA = 1" para " CRAT.CODCOLIGADA = sistema.coligada"

--------------

SELECT YEAR(CRAT.DATA) AS 'ANO',

SUM(CASE WHEN MONTH(CRAT.DATA) = 1 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'JAN',

SUM(CASE WHEN MONTH(CRAT.DATA) = 2 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'FEV',

SUM(CASE WHEN MONTH(CRAT.DATA) = 3 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'MAR',

SUM(CASE WHEN MONTH(CRAT.DATA) = 4 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'ABR',

SUM(CASE WHEN MONTH(CRAT.DATA) = 5 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'MAI',

SUM(CASE WHEN MONTH(CRAT.DATA) = 6 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'JUN',

SUM(CASE WHEN MONTH(CRAT.DATA) = 7 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'JUL',

SUM(CASE WHEN MONTH(CRAT.DATA) = 8 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'AGO',

SUM(CASE WHEN MONTH(CRAT.DATA) = 9 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'SET',

SUM(CASE WHEN MONTH(CRAT.DATA) = 10 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'OUT',

SUM(CASE WHEN MONTH(CRAT.DATA) = 11 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'NOV',

SUM(CASE WHEN MONTH(CRAT.DATA) = 12 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'DEZ',

sum(CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) AS 'TOTAL'

FROM CRATEIOLC CRAT (NOLOCK)

inner join cgerencia cg (nolock) on

cg.codcoligada = crat.codcoligada

and cg.codconta = crat.codgerencial

WHERE CRAT.CODCOLIGADA = 1

AND CRAT.CODCONTA LIKE '4.%'

AND YEAR(CRAT.DATA) = :ANO_N

and crat.codgerencial in ('2.2.01.08.01')

GROUP BY YEAR(CRAT.DATA)

ORDER BY YEAR(CRAT.DATA)

---------

Agradeço a ajuda.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  6
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  290
  • Conteúdo/Dia:  0.06
  • Reputação:   17
  • Pontos/Conquistas:  1.523
  • Conteúdo Resolvido:  0
  • Dias Ganho:  12
  • Status:  Offline

tem que ser em planilha? se puder ser em relatório veja este post: http://www.forumrm.com.br/index.php?/topic/10931-retornar-a-query-o-usuario-logado/

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  4
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  30
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Boa tarde João.

Tem que ser em planilha.net pois estamos utilizando alguns controles de orçamento com gráficos e o pessoal do controle solicitou assim.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  25
  • Conteúdo/Dia:  0.01
  • Reputação:   1
  • Pontos/Conquistas:  177
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Bom dia, como é feito o controle da permissão de centro custo?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  4
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  30
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Bom dia, como é feito o controle da permissão de centro custo?

Nao tenho isso no sistema. Estava pensando em crirar um campo complementar por exemplo na tabela de representantes e informar o centro de custo lá atrelando ao usuario do sistema. Ficaria assim:

"Usuário logado --> Cadastrado na tabela de representante ---> Tabela de representante com campo complementar de centro de custo" tudo no Nucleus.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  6
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  290
  • Conteúdo/Dia:  0.06
  • Reputação:   17
  • Pontos/Conquistas:  1.523
  • Conteúdo Resolvido:  0
  • Dias Ganho:  12
  • Status:  Offline

entendi,

em todo caso você viu este post? http://www.forumrm.c...usuario-logado/

ele traz uma outra alternativa: SELECT USERNAME FROM GLOGIN WHERE COMPUTERNAME=(select host_name())

Editado por João Rodrigo
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  25
  • Conteúdo/Dia:  0.01
  • Reputação:   1
  • Pontos/Conquistas:  177
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Recomendo controlar os centro de custo por perfil assim evita update usuário a usuário

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  7
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  28
  • Conteúdo/Dia:  0.01
  • Reputação:   2
  • Pontos/Conquistas:  225
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Bom dia, como é feito o controle da permissão de centro custo?

Veja se isso te ajuda:

SELECT * FROM tusuarioccusto

WHERE CODUSUARIO IN (SELECT DISTINCT USERNAME FROM GLOGIN WHERE COMPUTERNAME=(select host_name()))

Essa consulta retorna algo do tipo:

CODCOLIGADA CODUSUARIO CODCCUSTO RECCREATEDBY RECCREATEDON RECMODIFIEDBY RECMODIFIEDON

1 mestre 55555 mestre 07/01/2013 mestre 07/01/2013

Sua solicitação original foi:

"...sql buscasse do usuário logado somente os centro de custos que ele tem acesso..."

Então: os registros exibidos por esta sql são exatamente os que o usuário logado tem permissão.

Agora com base nisso continue sua SQL.

Abraços

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  4
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  30
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

entendi,

em todo caso você viu este post? http://www.forumrm.c...usuario-logado/

ele traz uma outra alternativa: SELECT USERNAME FROM GLOGIN WHERE COMPUTERNAME=(select host_name())

Veja se isso te ajuda:

SELECT * FROM tusuarioccusto

WHERE CODUSUARIO IN (SELECT DISTINCT USERNAME FROM GLOGIN WHERE COMPUTERNAME=(select host_name()))

Essa consulta retorna algo do tipo:

CODCOLIGADA CODUSUARIO CODCCUSTO RECCREATEDBY RECCREATEDON RECMODIFIEDBY RECMODIFIEDON

1 mestre 55555 mestre 07/01/2013 mestre 07/01/2013

Sua solicitação original foi:

"...sql buscasse do usuário logado somente os centro de custos que ele tem acesso..."

Então: os registros exibidos por esta sql são exatamente os que o usuário logado tem permissão.

Agora com base nisso continue sua SQL.

Abraços

Veja se isso te ajuda:SELECT * FROM tusuarioccustoWHERE CODUSUARIO IN (SELECT DISTINCT USERNAME FROM GLOGIN WHERE COMPUTERNAME=(select host_name()))Essa consulta retorna algo do tipo:CODCOLIGADA CODUSUARIO CODCCUSTO RECCREATEDBY RECCREATEDON RECMODIFIEDBY RECMODIFIEDON1 mestre 55555 mestre 07/01/2013 mestre 07/01/2013Sua solicitação original foi:"...sql buscasse do usuário logado somente os centro de custos que ele tem acesso..."Então: os registros exibidos por esta sql são exatamente os que o usuário logado tem permissão.Agora com base nisso continue sua SQL.Abraços

Senhores boa tarde.

A solução utilizando o "select tusuarioccusto" funcionou perfeitamente, obrigado pela ajuda e atenção de todos. A solução completa ficou assim:

- Nucleus - Cadastrar relacionamento entre usuario e centro de custo;

- BIS - Criar os SQL's de "Orçado" e "Realizado" para inclusao na planilha.net;

- BIS - Criar a planilha (pode ser uma ja existente) e vincular os sql's;

- Nucleus (no meu caso) - Disponibilizar a planilha para os usuarios.

sql de orçamento:

SELECT CORC.ANO ,

SUM(CORC.VRMES1) AS 'JAN',

SUM(CORC.VRMES2) AS 'FEV',

SUM(CORC.VRMES3) AS 'MAR',

SUM(CORC.VRMES4) AS 'ABR',

SUM(CORC.VRMES5) AS 'MAI',

SUM(CORC.VRMES6) AS 'JUN',

SUM(CORC.VRMES7) AS 'JUL',

SUM(CORC.VRMES8) AS 'AGO',

SUM(CORC.VRMES9) AS 'SET',

SUM(CORC.VRMES10) AS 'OUT',

SUM(CORC.VRMES11) AS 'NOV',

SUM(CORC.VRMES12) AS 'DEZ',

SUM(CORC.VRMES1+CORC.VRMES2+CORC.VRMES3+CORC.VRMES4+CORC.VRMES5+CORC.VRMES6+

CORC.VRMES7+CORC.VRMES8+CORC.VRMES9+CORC.VRMES10+CORC.VRMES11+CORC.VRMES12) AS 'TOTAL'

FROM CORCAMENTO CORC (NOLOCK)

WHERE CORC.CODCONTA LIKE '4.%'

AND CORC.CODCOLIGADA = 1

AND CORC.ANO = :ANO_N

and exists (SELECT * FROM tusuarioccusto (nolock) WHERE CODUSUARIO IN ( SELECT DISTINCT USERNAME FROM GLOGIN (nolock) WHERE COMPUTERNAME =( select host_name ()))

and tusuarioccusto.codccusto = corc.codgerencial

and tusuarioccusto.CODCOLIGADA = corc.codcoligada)

GROUP BY CORC.ANO

ORDER BY CORC.ANO

SQL de Realizado:

SELECT YEAR(CRAT.DATA) AS 'ANO',

SUM(CASE WHEN MONTH(CRAT.DATA) = 1 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'JAN',

SUM(CASE WHEN MONTH(CRAT.DATA) = 2 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'FEV',

SUM(CASE WHEN MONTH(CRAT.DATA) = 3 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'MAR',

SUM(CASE WHEN MONTH(CRAT.DATA) = 4 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'ABR',

SUM(CASE WHEN MONTH(CRAT.DATA) = 5 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'MAI',

SUM(CASE WHEN MONTH(CRAT.DATA) = 6 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'JUN',

SUM(CASE WHEN MONTH(CRAT.DATA) = 7 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'JUL',

SUM(CASE WHEN MONTH(CRAT.DATA) = 8 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'AGO',

SUM(CASE WHEN MONTH(CRAT.DATA) = 9 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'SET',

SUM(CASE WHEN MONTH(CRAT.DATA) = 10 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'OUT',

SUM(CASE WHEN MONTH(CRAT.DATA) = 11 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'NOV',

SUM(CASE WHEN MONTH(CRAT.DATA) = 12 THEN (CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) ELSE 0 END) AS 'DEZ',

sum(CASE WHEN CRAT.VLRDEBITO > 0 THEN CRAT.VLRDEBITO ELSE (CRAT.VLRCREDITO*-1) END) AS 'TOTAL'

FROM CRATEIOLC CRAT (NOLOCK)

inner join cgerencia cg (nolock) on

cg.codcoligada = crat.codcoligada

and cg.codconta = crat.codgerencial

WHERE CRAT.CODCOLIGADA = 1

AND CRAT.CODCONTA LIKE '4.%'

AND YEAR(CRAT.DATA) = :ANO_N

and exists (SELECT * FROM tusuarioccusto (nolock) WHERE CODUSUARIO IN ( SELECT DISTINCT USERNAME FROM GLOGIN WHERE COMPUTERNAME =( select host_name ()))

and tusuarioccusto.codccusto = crat.codgerencial

and tusuarioccusto.CODCOLIGADA = crat.codcoligada)

GROUP BY YEAR(CRAT.DATA)

ORDER BY YEAR(CRAT.DATA)

Obrigado a todos.
Editado por Francisnei
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  7
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  28
  • Conteúdo/Dia:  0.01
  • Reputação:   2
  • Pontos/Conquistas:  225
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Francisnei,

Obrigado por postar a solução. É bom q fica registrado mais algum conteúdo sobre orçamento. Em um dos meus últimos posts cheguei a comentar que não existe muita informação sobre isso no forumrm e também em outros forums da web, e que talvez seja um recurso usado ou dominado por poucos. Estou implantando aqui o orçamento gerencial, que é diferente, a parte do contábil. Eu não tenho muita coisa sobre este tema pois conheci efetivamente o módulo orçamento do Nucleus a uns dois meses, e já estamos precisando iniciar a parametrização. Se você tiver alguma apostila ou material falando sobre isso e publicar aqui me ajudará bastante pois eu não tenho nada. kkkk

João Rodrigo, gostei da solução de identificar o usuário logado! só adicionei o distinct. Vai ser muito útil pra mim.

Abraços.

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.