Thiago Andrade Teixeira Postado 13 de Janeiro de 2009 Tópicos Que Criei: 9 Tópicos/Dia: 0.00 Meu Conteúdo: 24 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 210 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 42 Denunciar Compartilhar Postado 13 de Janeiro de 2009 Pessoal, boa tarde! Não consegui resolver ate hoje um problema com a sentença SQL referente a retirada de dados do RM Nucleus, hoje ela me traz somente o VALOR BRUTO dos produtos comprados por CENTRO DE CUSTO, porem eu preciso que me traga o VALOR LÍQUIDO dos produos comprados por CENTRO DE CUSTO, eu estava precisando desse valor líquido, seria mais ou menos assim: TITMMOV.PRECOUNITARIO * TITMMOV.QUANTIDADE - TITMMOV.RATEIODESC + TITMMOV.RATEIODESP + TITMMOV.RATEIOFRETE + TTRBMOV.VALOR (SE FOR 'IPI' E 'ICMS') - TTRBMOV.VALOR (SE FOR 'IRRF' E 'ISS-RF'),mais não consigo pois por conter vários itens e cada item com vários rateios, o valor retornado é absurdo, por favor se alguem puder me ajudar, segue a sentença: SELECT DAY(TMOV.DATAEMISSAO) AS DIA, YEAR(TMOV.DATAEMISSAO) AS ANO, CASE WHEN MONTH(TMOV.DATAEMISSAO) = 1 THEN '01-JANEIRO' WHEN MONTH(TMOV.DATAEMISSAO) = 2 THEN '02-FEVEREIRO' WHEN MONTH(TMOV.DATAEMISSAO) = 3 THEN '03-MARÇO' WHEN MONTH(TMOV.DATAEMISSAO) = 4 THEN '04-ABRIL' WHEN MONTH(TMOV.DATAEMISSAO) = 5 THEN '05-MAIO' WHEN MONTH(TMOV.DATAEMISSAO) = 6 THEN '06-JUNHO' WHEN MONTH(TMOV.DATAEMISSAO) = 7 THEN '07-JULHO' WHEN MONTH(TMOV.DATAEMISSAO) = 8 THEN '08-AGOSTO' WHEN MONTH(TMOV.DATAEMISSAO) = 9 THEN '09-SETEMBRO' WHEN MONTH(TMOV.DATAEMISSAO) = 10 THEN '10-OUTUBRO' WHEN MONTH(TMOV.DATAEMISSAO) = 11 THEN '11-NOVEMBRO' WHEN MONTH(TMOV.DATAEMISSAO) = 12 THEN '12-DEZEMBRO' END AS MÊS, TMOV.CODTMV + ' - ' + TTMV.NOME AS [TIPO_MOV], FCFO.CODCFO + ' - ' + FCFO.NOMEFANTASIA AS DADOS_FORNECEDOR, TMOV.NUMEROMOV AS Nº_MOV, TPRD.NOMEFANTASIA AS DECRICAO_PROD, TITMMOV.QUANTIDADE, CASE WHEN TMOV.CODTB1FLX = '1.037' THEN (SELECT TOP 1 FLAN.VALORORIGINAL FROM FLAN WHERE FLAN.IDMOV = TMOV.IDMOV AND FLAN.DATAEMISSAO >=:DATAINICIAL_D AND FLAN.DATAEMISSAO <=:DATAFINAL_D) ELSE (TITMMOVRATCCU.VALOR) END AS VALOR_BRUTO, --**** Aqui esta o meu problema ****-- (TITMMOVRATCCU.VALOR ) AS VALOR_LIQUIDO, GCCUSTO.NOME, TMOV.USUARIOCRIACAO AS SOLICITANTE, TTB2.DESCRICAO AS DEPTO_SOLICITANTE, CASE TMOV.STATUS WHEN 'A' THEN 'MOV. INCLUÍDO E AINDA NÃO RECEBIDO' WHEN 'F' THEN 'MOV. RECEBIDO' WHEN 'C' THEN 'MOV. CANCELADO' WHEN 'Q' THEN 'MOV. JÁ RECEBIDO E PAGO' END AS STATUS, TTB3.DESCRICAO AS OPERACAO, TMOV.CODFILIAL AS FILIAL, FTCF.DESCRICAO AS TIPO_CLIFOR FROM TMOV INNER JOIN TITMMOV ON TMOV.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TMOV.IDMOV = TITMMOV.IDMOV LEFT JOIN TTB3 ON TTB3.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB3.CODTB3FAT = TMOV.CODTB3FAT INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA AND FCFO.CODCFO = TMOV.CODCFO LEFT JOIN FTCF ON FTCF.CODCOLIGADA = FCFO.CODCOLTCF AND FTCF.CODTCF = FCFO.CODTCF INNER JOIN TTMV ON TTMV.CODCOLIGADA = TMOV.CODCOLIGADA AND TTMV.CODTMV = TMOV.CODTMV INNER JOIN TITMMOVRATCCU ON TITMMOV.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND TITMMOV.IDMOV = TITMMOVRATCCU.IDMOV AND TITMMOV.NSEQITMMOV = TITMMOVRATCCU.NSEQITMMOV LEFT JOIN TTB2 ON TTB2.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB2.CODTB2FAT = TMOV.CODTB2FAT INNER JOIN TPRD ON TPRD.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TPRD.IDPRD = TITMMOV.IDPRD INNER JOIN GCCUSTO ON GCCUSTO.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND GCCUSTO.CODCCUSTO = TITMMOVRATCCU.CODCCUSTO WHERE TMOV.CODTMV IN ('1.2.01','1.2.02','1.2.03','1.2.04','1.2.05','1.2.06','1.2.07','1.2.08','1.2.10','1.2.12','1.2.13','1.1.04','2.2.06','2.2.07','1.1.03') AND GCCUSTO.CODCCUSTO LIKE :CENTRODECUSTO_S + '%' AND TMOV.DATAEMISSAO >=:DATAINICIAL_D AND TMOV.DATAEMISSAO <=:DATAFINAL_D Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
mclpaltrin Postado 14 de Janeiro de 2009 Tópicos Que Criei: 86 Tópicos/Dia: 0.02 Meu Conteúdo: 255 Conteúdo/Dia: 0.05 Reputação: 0 Pontos/Conquistas: 2.325 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 14 de Janeiro de 2009 Thiago bom dia - Sinto não poder de ajudar, faço parte desse fórum +- um mês, estou tbm com um problema numa Consulta que post algum dias atrás, aguardo a ajuda dos colegas DBA para help. - Thiago não tenha muita experiência com consultas SQL, na sua sentença abaixo entendi alguma coisas apenas, gostaria de saber como posso aprender a desenvolver uma consulta como a sua?? - Aqui na empresa estão parametrizando o Nucleus, Fluxus, Agilis, Factor e outros. fui contrato para desenvolver relatórios para empresa. - Meu nível de conhecimento SQL seria acima um pouca acima do Básico .. - Muito Obrigado - Desculpa por não pode te ajudar.! Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
mclpaltrin Postado 14 de Janeiro de 2009 Tópicos Que Criei: 86 Tópicos/Dia: 0.02 Meu Conteúdo: 255 Conteúdo/Dia: 0.05 Reputação: 0 Pontos/Conquistas: 2.325 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 14 de Janeiro de 2009 - Thiago - Estou na luta, adiar sim, desistir Nunca... - Gostaria de contar com sua Experiência com as consultas SQL! Vlw Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
dan_trash Postado 16 de Janeiro de 2009 Tópicos Que Criei: 0 Tópicos/Dia: 0 Meu Conteúdo: 18 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 90 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 16 de Janeiro de 2009 Thiago, vou dar uma olhada na sua query. Só que vai demorar mais do que eu imaginava. Um dos problemas é a parametrização da sua base. Na que eu estou usando não tem o rateio de centro de custo por movimento. Ai. como vc bem sabe, tenho que parametrizar para ver o que dá.... VC já conseguiu alguma coisa mais? e ai pessoal da uma força ai pra mim... Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
dan_trash Postado 16 de Janeiro de 2009 Tópicos Que Criei: 0 Tópicos/Dia: 0 Meu Conteúdo: 18 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 90 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 16 de Janeiro de 2009 Thiago explique melhor. Gerei um movimento na minha base com dois itens e em cada item dois rateios de centro de custo, ok? rodei sua query e apareceu na coluna do problema, valor bruto e liquido, o mesmo valor, porque as duas colunas estão usando chamando a TITMMOVRATCCU.VALOR. OBS. Salve o arquivo e renomeie para XLS Não entendi... espero sua resposta. - Thiago - Estou na luta, adiar sim, desistir Nunca... - Gostaria de contar com sua Experiência com as consultas SQL! Vlw PROBLEMA.pdf Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
dan_trash Postado 19 de Janeiro de 2009 Tópicos Que Criei: 0 Tópicos/Dia: 0 Meu Conteúdo: 18 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 90 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 19 de Janeiro de 2009 Como vai Thiago? Acho que eu entendi, mas se minha resposta for tola, avise-me. Ok? Acho que esse problema deve ser resolvido com o esquema de peso (percentuais). Então devemos saber quanto cada item pesa no total da NF. No teste que fiz, utilizei apenas o tmov.valordesc. Ficou assim TITMMOVRATCCU.VALOR - (tmov.valordesc * ((TITMMOVRATCCU.VALOR / tmov.valorbruto)* 100) /100) Para você ver como chegeui a esse calculo estou anexando uma tabela excel. Ok? Abraço dan_trash Bom dia dan_trash!!! E o Sequinte, uma das colunas deve buscar o valor bruto mesmo, ate ai ok!!! porem se no movimento tiver desconto (TMOV.VALORDESC) ou (TITMMOV.RATEIODESC), + valor de despesa + valor do frete + se tiver imposto referente a IPI ou ICMS e acrescentado no valor e se tiver IRRF ou INSSRF ou ISS-RF e deduzido do valor ( AI SIM EU OBTERIA O MEU VALOR LÍQUIDO) Eu ja tentei pegar o valor líquido direto da TMOV (TMOV.VALORLIQUIDO) porem devido aos relacionamentos com a TITMMOVRATCCU, TTRBMMOV os valores retornados não são coerentes, e este cubo precisa ser pelo Centro de custo. Não sei se eu consegui te explicar ou complicar mais... valeu pela atenção!!! Thiago.rar Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
dan_trash Postado 19 de Janeiro de 2009 Tópicos Que Criei: 0 Tópicos/Dia: 0 Meu Conteúdo: 18 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 90 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 19 de Janeiro de 2009 Bem estranho. Isso não deveria influenciar na quantidade de registros. Aqui, no meu teste, eu cadastrei uma nf com dois itens. E cada item com dois rateios de centro de custo. Tem um detalhe: eu usei sua primeira query. É nessa que você esta fazendo os testes? Acho que vc já deve esta fazendo isso, mas não custa nada falar =). E se vc fizer um nf teste, com 2 itens e para cada 2 rateios de custo. Rode a sentença e veja os resultados. Depois coloque um valor de desconto e veja como ela se comporta. Você chegou a ver a planilhinha que te mandei.... isso é o espelho do meu teste. Outra coisa vc só tem uma coligada? tem um pequeno problema no seu join de fornecedor: INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA AND FCFO.CODCFO = TMOV.CODCFO o correto seria INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO = TMOV.CODCFO Eu vou bem e você?kara infelizmente num deu certo não, porque aqui e por rateio tem itens meu aqui que são rateados para +/- uns 30 centros de custo, mais de jeito que você me informou não sei porque ele reduz somente a 2 centros de custo Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
dan_trash Postado 19 de Janeiro de 2009 Tópicos Que Criei: 0 Tópicos/Dia: 0 Meu Conteúdo: 18 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 90 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 19 de Janeiro de 2009 Bem estranho. Fiz o teste aqui com vários rateios no item dois. e funcionou bacaninha, como vc pode conferir na planilha anexa. Eu usei essa sentença: SELECT tmov.idmov,titmmov.nseqitmmov,TITMMOVRATCCU.codccusto, DAY(TMOV.DATAEMISSAO) AS DIA, YEAR(TMOV.DATAEMISSAO) AS ANO, CASE WHEN MONTH(TMOV.DATAEMISSAO) = 1 THEN '01-JANEIRO' WHEN MONTH(TMOV.DATAEMISSAO) = 2 THEN '02-FEVEREIRO' WHEN MONTH(TMOV.DATAEMISSAO) = 3 THEN '03-MARÇO' WHEN MONTH(TMOV.DATAEMISSAO) = 4 THEN '04-ABRIL' WHEN MONTH(TMOV.DATAEMISSAO) = 5 THEN '05-MAIO' WHEN MONTH(TMOV.DATAEMISSAO) = 6 THEN '06-JUNHO' WHEN MONTH(TMOV.DATAEMISSAO) = 7 THEN '07-JULHO' WHEN MONTH(TMOV.DATAEMISSAO) = 8 THEN '08-AGOSTO' WHEN MONTH(TMOV.DATAEMISSAO) = 9 THEN '09-SETEMBRO' WHEN MONTH(TMOV.DATAEMISSAO) = 10 THEN '10-OUTUBRO' WHEN MONTH(TMOV.DATAEMISSAO) = 11 THEN '11-NOVEMBRO' WHEN MONTH(TMOV.DATAEMISSAO) = 12 THEN '12-DEZEMBRO' END AS MÊS, TMOV.CODTMV + ' - ' + TTMV.NOME AS [TIPO_MOV], FCFO.CODCFO + ' - ' + FCFO.NOMEFANTASIA AS DADOS_FORNECEDOR, TMOV.NUMEROMOV AS Nº_MOV, TPRD.NOMEFANTASIA AS DECRICAO_PROD, TITMMOV.QUANTIDADE, CASE WHEN TMOV.CODTB1FLX = '1.037' THEN ( SELECT TOP 1 FLAN.VALORORIGINAL FROM FLAN WHERE FLAN.IDMOV = TMOV.IDMOV ) ELSE (TITMMOVRATCCU.VALOR) END AS VALOR_BRUTO, '**** Aqui esta o meu problema ****--', (TITMMOVRATCCU.VALOR ) AS VALOR_LIQUIDO, /*Percentual da nf por item*/ TITMMOVRATCCU.VALOR - (tmov.valordesc * ((TITMMOVRATCCU.VALOR / tmov.valorbruto)* 100) /100) FROM TMOV INNER JOIN TITMMOV ON (TMOV.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TMOV.IDMOV = TITMMOV.IDMOV) LEFT JOIN TTB3 ON (TTB3.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB3.CODTB3FAT = TMOV.CODTB3FAT) INNER JOIN FCFO ON (FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO = TMOV.CODCFO) /*ESTAVA ERRADO*/ LEFT JOIN FTCF ON (FTCF.CODCOLIGADA = FCFO.CODCOLTCF AND FTCF.CODTCF = FCFO.CODTCF) INNER JOIN TTMV ON (TTMV.CODCOLIGADA = TMOV.CODCOLIGADA AND TTMV.CODTMV = TMOV.CODTMV) INNER JOIN TITMMOVRATCCU ON (TITMMOV.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND TITMMOV.IDMOV = TITMMOVRATCCU.IDMOV AND TITMMOV.NSEQITMMOV = TITMMOVRATCCU.NSEQITMMOV) LEFT JOIN TTB2 ON (TTB2.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB2.CODTB2FAT = TMOV.CODTB2FAT) INNER JOIN TPRD ON (TPRD.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TPRD.IDPRD = TITMMOV.IDPRD) INNER JOIN GCCUSTO ON (GCCUSTO.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND GCCUSTO.CODCCUSTO = TITMMOVRATCCU.CODCCUSTO) WHERE tmov.idmov = 465454 Segue em anexo +/- como deveria ser retornado a sentença... Thiago2.rar Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
dan_trash Postado 19 de Janeiro de 2009 Tópicos Que Criei: 0 Tópicos/Dia: 0 Meu Conteúdo: 18 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 90 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 19 de Janeiro de 2009 Beleza Thiago. Amanha pela manha vou dar uma olhada nisso que vc apontou e ver se há solução. OK? KARA OLHANDO BEM NUM DA CERTO NAUMPOIS QUANDO NÃO HOUVER DESCONTO ELE FAZ COM QUE O VALOR LÍQUIDO RETORNE (NULL) E NÃO CONSIGO RELACIONAR A TTRBMOV (REFERENTE AOS TRIBUTOS) QUANDO EU RELACIONO ESTA TABELA FICA MUITO LOUCO O RETORNO E SE EU TENTO PEGAR ESTES VALOR POR SUBQUERY'S ACONTECE COMO CITADO ACIMA, SE TIVER TRIBUTO , BLZ, SE NÃO TIVER RETORNA (NULL) EM TUDO MESMO COLOCANDO A REGRA ISNULL (TMOV.VALORDESC,0) RETORNA (NULL) ????? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Nelson Borges Postado 19 de Janeiro de 2009 Tópicos Que Criei: 2 Tópicos/Dia: 0.00 Meu Conteúdo: 69 Conteúdo/Dia: 0.01 Reputação: 0 Pontos/Conquistas: 365 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 38 Denunciar Compartilhar Postado 19 de Janeiro de 2009 Tiago, se não estou enganado a RM possui uma tabela de impostos para itens do produto, basta fazer um Join. Trabalhe também com sub-select para na sua select principal. Duvidas poste aqui novamente. Nelson Borges Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
dan_trash Postado 20 de Janeiro de 2009 Tópicos Que Criei: 0 Tópicos/Dia: 0 Meu Conteúdo: 18 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 90 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 20 de Janeiro de 2009 Fiz um pequeno teste e retirei o valor de desconto. O resultado do valor liquido foi positivo. Que será que pode estar acontecendo na sua sentença? Beleza Thiago.Amanha pela manha vou dar uma olhada nisso que vc apontou e ver se há solução. OK? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
dan_trash Postado 20 de Janeiro de 2009 Tópicos Que Criei: 0 Tópicos/Dia: 0 Meu Conteúdo: 18 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 90 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 20 de Janeiro de 2009 Fiz o teste que vc pediu. Realmente apareceu null, mas apenas coloquei o isnull no tmov.valordesc e funcionou. Esse negócio de dividir pela quantidade de rateios, ao meu ver, não parece elegante. Para eu tentar simular o que acontece, diga-me se os tributos estão no item ou no movimento. Obrigado faça um novo lançamento, onde o campo desconto estara limpo ( sem o zero (0) ).Eu fiz uma nova sentença para tirar uma dúvida, eu peguei os campos da TITMMOV e dividi cada um por 22 que representa a quantidade de centros de custo alocados em um movimento, ai deu certo, em partes... pois para as subquery de tributos se tiver tributo no movimento blz, traz certinho, mais se não tiver.... traz tudo "NULL" e como eu farei pra ele trazer esse número 22? Não tenho nem idéia??? Segue a sentença: SELECT /* INÍCIO DO CÁLCULO DO VALOR LÍQUIDO, O NÚMERO 22 REPRESENTA A QUANTIDADE DE CENTROS DE CUSTO RATEADOS */ (TITMMOV.VALORTOTALITEM / 22 ) - (ISNULL (TITMMOV.RATEIODESC,0) / 22) + (ISNULL (TITMMOV.RATEIODESP,0) / 22) + (ISNULL (TITMMOV.RATEIOFRETE,0) /22) /* INÍCIO DO CÁLCULO DE TRIBUTOS, SE FOR "IPI" OU "ICMS" ELE SOMA NO VALOR LÍQUIDO */ + (SELECT SUM (ISNULL (TTRBMOV.VALOR,0)) FROM TTRBMOV WHERE TITMMOV.CODCOLIGADA = TTRBMOV.CODCOLIGADA AND TITMMOV.IDMOV = TTRBMOV.IDMOV AND TITMMOV.NSEQITMMOV = TTRBMOV.NSEQITMMOV AND TTRBMOV.CODTRB IN ('IPI','ICMS') ) /* INÍCIO DO CÁLCULO DE TRIBUTOS, SE FOR "IRRF" OU "INSSRF" OU "ISS-RF" ELE SUBTRAI NO VALOR LÍQUIDO */ - (SELECT SUM (ISNULL (TTRBMOV.VALOR,0)) FROM TTRBMOV WHERE TITMMOV.CODCOLIGADA = TTRBMOV.CODCOLIGADA AND TITMMOV.IDMOV = TTRBMOV.IDMOV AND TITMMOV.NSEQITMMOV = TTRBMOV.NSEQITMMOV AND TTRBMOV.CODTRB IN ('IRRF','INSSRF','ISS-RF') ) AS VALOR_LÍQUIDO /* PROBLEMA ==> SE NÃO HOUVER TRIBUTOS ELE FAZ COM QUE O VALOR LÍQUIDO RETORNE "NULL", E COMO EU IREI FAZER? PARA TRAZER A QUANTIDADE DE CENTROS DE CUSTOS QUE EU RATIEI PARA O MEU MOVIMENTO? */ /* RELACIONAMENTOS */ FROM TMOV INNER JOIN TITMMOV ON (TMOV.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TMOV.IDMOV = TITMMOV.IDMOV) LEFT JOIN TTB3 ON (TTB3.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB3.CODTB3FAT = TMOV.CODTB3FAT) INNER JOIN FCFO ON (FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO = TMOV.CODCFO) LEFT JOIN FTCF ON (FTCF.CODCOLIGADA = FCFO.CODCOLTCF AND FTCF.CODTCF = FCFO.CODTCF) INNER JOIN TTMV ON (TTMV.CODCOLIGADA = TMOV.CODCOLIGADA AND TTMV.CODTMV = TMOV.CODTMV) INNER JOIN TITMMOVRATCCU ON (TITMMOV.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND TITMMOV.IDMOV = TITMMOVRATCCU.IDMOV AND TITMMOV.NSEQITMMOV = TITMMOVRATCCU.NSEQITMMOV) LEFT JOIN TTB2 ON (TTB2.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB2.CODTB2FAT = TMOV.CODTB2FAT) INNER JOIN TPRD ON (TPRD.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TPRD.IDPRD = TITMMOV.IDPRD) INNER JOIN GCCUSTO ON (GCCUSTO.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND GCCUSTO.CODCCUSTO = TITMMOVRATCCU.CODCCUSTO) /* FILTRO */ WHERE TMOV.IDMOV = 33927 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Thiago Andrade Teixeira Postado 20 de Janeiro de 2009 Tópicos Que Criei: 9 Tópicos/Dia: 0.00 Meu Conteúdo: 24 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 210 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 42 Autor Denunciar Compartilhar Postado 20 de Janeiro de 2009 FAZENDO COMO A SENTENÇA ABAIXO SE O MOVIMENTO TIVER TRIBUTO OK, SE NÃO TRAZ "NULL", OS TRIBUTOS ESTÃO NO ITEM DO MOVIMENTO, ACRESCENTANDO A SUBQUERY DE TRIBUTOS MESMO COLOCANDO O ISNULL SE NÇAO TIVER TRIBUTOS TRAZ "NULL" SELECT (TITMMOVRATCCU.VALOR + (SELECT SUM (ISNULL (TTRBMOV.VALOR,0)) FROM TTRBMOV WHERE TITMMOV.CODCOLIGADA = TTRBMOV.CODCOLIGADA AND TITMMOV.IDMOV = TTRBMOV.IDMOV AND TITMMOV.NSEQITMMOV = TTRBMOV.NSEQITMMOV AND TTRBMOV.CODTRB IN ('IPI','ICMS')) - (ISNULL (TMOV.VALORDESC,0) * ((TITMMOVRATCCU.VALOR / TMOV.VALORBRUTO)* 100)/100)) AS VALOR_LIQUIDO FROM TMOV INNER JOIN TITMMOV ON (TMOV.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TMOV.IDMOV = TITMMOV.IDMOV) LEFT JOIN TTB3 ON (TTB3.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB3.CODTB3FAT = TMOV.CODTB3FAT) INNER JOIN FCFO ON (FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO = TMOV.CODCFO) LEFT JOIN FTCF ON (FTCF.CODCOLIGADA = FCFO.CODCOLTCF AND FTCF.CODTCF = FCFO.CODTCF) INNER JOIN TTMV ON (TTMV.CODCOLIGADA = TMOV.CODCOLIGADA AND TTMV.CODTMV = TMOV.CODTMV) INNER JOIN TITMMOVRATCCU ON (TITMMOV.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND TITMMOV.IDMOV = TITMMOVRATCCU.IDMOV AND TITMMOV.NSEQITMMOV = TITMMOVRATCCU.NSEQITMMOV) LEFT JOIN TTB2 ON (TTB2.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB2.CODTB2FAT = TMOV.CODTB2FAT) INNER JOIN TPRD ON (TPRD.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TPRD.IDPRD = TITMMOV.IDPRD) INNER JOIN GCCUSTO ON (GCCUSTO.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND GCCUSTO.CODCCUSTO = TITMMOVRATCCU.CODCCUSTO) WHERE TMOV.IDMOV = 33796 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Thiago Andrade Teixeira Postado 20 de Janeiro de 2009 Tópicos Que Criei: 9 Tópicos/Dia: 0.00 Meu Conteúdo: 24 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 210 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 42 Autor Denunciar Compartilhar Postado 20 de Janeiro de 2009 PESSOAL ALGUEM PODE VER PORQUE O MEU CASE NÃO FUNCIONA??? SELECT CASE WHEN TMOV.CODTMV IN ('1.2.01') THEN (TITMMOVRATCCU.VALOR + (SELECT SUM (ISNULL (TTRBMOV.VALOR,0)) FROM TTRBMOV WHERE TITMMOV.CODCOLIGADA = TTRBMOV.CODCOLIGADA AND TITMMOV.IDMOV = TTRBMOV.IDMOV AND TITMMOV.NSEQITMMOV = TTRBMOV.NSEQITMMOV AND TTRBMOV.CODTRB IN ('IPI','ICMS')) - (SELECT SUM (ISNULL (TTRBMOV.VALOR,0)) FROM TTRBMOV WHERE TITMMOV.CODCOLIGADA = TTRBMOV.CODCOLIGADA AND TITMMOV.IDMOV = TTRBMOV.IDMOV AND TITMMOV.NSEQITMMOV = TTRBMOV.NSEQITMMOV AND TTRBMOV.CODTRB IN ('IRRF','INSSRF','ISS-RF')) - (ISNULL (TMOV.VALORDESC,0) + (ISNULL (TMOV.VALORFRETE,0)) + (ISNULL (TMOV.VALORDESP,0)) * ((TITMMOVRATCCU.VALOR / TMOV.VALORBRUTO)* 100)/100)) ELSE (TITMMOVRATCCU.VALOR - (ISNULL (TMOV.VALORDESC,0) + (ISNULL (TMOV.VALORFRETE,0)) + (ISNULL (TMOV.VALORDESP,0)) * ((TITMMOVRATCCU.VALOR / TMOV.VALORBRUTO)* 100)/100)) END AS VALOR_LÍQUIDO FROM TMOV INNER JOIN TITMMOV ON (TMOV.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TMOV.IDMOV = TITMMOV.IDMOV) LEFT JOIN TTB3 ON (TTB3.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB3.CODTB3FAT = TMOV.CODTB3FAT) INNER JOIN FCFO ON (FCFO.CODCOLIGADA = TMOV.CODCOLCFO AND FCFO.CODCFO = TMOV.CODCFO) LEFT JOIN FTCF ON (FTCF.CODCOLIGADA = FCFO.CODCOLTCF AND FTCF.CODTCF = FCFO.CODTCF) INNER JOIN TTMV ON (TTMV.CODCOLIGADA = TMOV.CODCOLIGADA AND TTMV.CODTMV = TMOV.CODTMV) INNER JOIN TITMMOVRATCCU ON (TITMMOV.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND TITMMOV.IDMOV = TITMMOVRATCCU.IDMOV AND TITMMOV.NSEQITMMOV = TITMMOVRATCCU.NSEQITMMOV) LEFT JOIN TTB2 ON (TTB2.CODCOLIGADA = TMOV.CODCOLIGADA AND TTB2.CODTB2FAT = TMOV.CODTB2FAT) INNER JOIN TPRD ON (TPRD.CODCOLIGADA = TITMMOV.CODCOLIGADA AND TPRD.IDPRD = TITMMOV.IDPRD) INNER JOIN GCCUSTO ON (GCCUSTO.CODCOLIGADA = TITMMOVRATCCU.CODCOLIGADA AND GCCUSTO.CODCCUSTO = TITMMOVRATCCU.CODCCUSTO) INNER JOIN TTRBMOV ON (TITMMOV.CODCOLIGADA = TTRBMOV.CODCOLIGADA AND TITMMOV.IDMOV = TTRBMOV.IDMOV AND TITMMOV.NSEQITMMOV = TTRBMOV.NSEQITMMOV) WHERE TMOV.IDMOV = 33796 AND TMOV.CODTMV IN ('1.2.01','1.2.02','1.2.03','1.2.04','1.2.05','1.2.06','1.2.07','1.2.08','1.2.10','1.2.12','1.2.13','1.1.04','2.2.06','2.2.07','1.1.03') 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.