Francisnei Postado 14 de Janeiro de 2013 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 Denunciar Compartilhar Postado 14 de Janeiro de 2013 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. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
João Rodrigo Postado 14 de Janeiro de 2013 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 Denunciar Compartilhar Postado 14 de Janeiro de 2013 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/ Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Francisnei Postado 14 de Janeiro de 2013 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 Autor Denunciar Compartilhar Postado 14 de Janeiro de 2013 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. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Magricelinho Postado 15 de Janeiro de 2013 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 Denunciar Compartilhar Postado 15 de Janeiro de 2013 Bom dia, como é feito o controle da permissão de centro custo? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Francisnei Postado 15 de Janeiro de 2013 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 Autor Denunciar Compartilhar Postado 15 de Janeiro de 2013 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. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
João Rodrigo Postado 15 de Janeiro de 2013 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 Denunciar Compartilhar Postado 15 de Janeiro de 2013 (editado) 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 15 de Janeiro de 2013 por João Rodrigo Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Magricelinho Postado 15 de Janeiro de 2013 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 Denunciar Compartilhar Postado 15 de Janeiro de 2013 Recomendo controlar os centro de custo por perfil assim evita update usuário a usuário Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Cyllio Postado 16 de Janeiro de 2013 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 Denunciar Compartilhar Postado 16 de Janeiro de 2013 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 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Francisnei Postado 16 de Janeiro de 2013 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 Autor Denunciar Compartilhar Postado 16 de Janeiro de 2013 (editado) 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 16 de Janeiro de 2013 por Francisnei Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Cyllio Postado 17 de Janeiro de 2013 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 Denunciar Compartilhar Postado 17 de Janeiro de 2013 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. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
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.