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? ×
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Problema Com a Sentença de um cubo de gastos por Centro de Custo


Posts Recomendados


  • 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

Pessoal bom dia!

Estou com um problema na sentença abaixo, na linha em VERMELHO,

(TITMMOVRATCCU.VALOR - ISNULL(TITMMOV.CAMPOLIVRE,0)) AS [VALOR C_CUSTO],

Na minha base esse campolivre seria para desconto, porem nos não lançamos o desconto no item do movimento, mais sim no movimento direto, no caso na TMOV.VALORDESC, porem se eu modificar o TITMMOV.CAMPOLIVRE pelo TMOV.VALORDESC ela me retorna um valor absurdo pelo fato de que se o movimento for rateado por 5 Centro de Custo, ele multiplica o valor de desconto por 5.

No meu ver, daria para fazer uma trigger para preencher o TITMMOV.CAMPOLIVRE, porem ja tive muitos problemas com triggers, não estava querendo fazer deste modo,

Alguem pode me ajudar? :)

Segue a sentença completa: (Verificar a linha em vermelho)

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

(TITMMOV.PRECOUNITARIO * TITMMOV.QUANTIDADE) - ISNULL(TITMMOV.CAMPOLIVRE,0) END AS VALOR_TOTAL,

TMOV.USUARIOCRIACAO AS SOLICITANTE, TTB2.DESCRICAO AS DEPTO_SOLICITANTE,

(TITMMOVRATCCU.VALOR - ISNULL(TITMMOV.CAMPOLIVRE,0)) AS [VALOR C_CUSTO], GCCUSTO.NOME,

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')

AND GCCUSTO.CODCCUSTO LIKE :CENTRODECUSTO_S + '%' AND TMOV.DATAEMISSAO >=:DATAINICIAL_D AND TMOV.DATAEMISSAO <=:DATAFINAL_D

Editado por Thiago Andrade Teixeira
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  24
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  121
  • Conteúdo/Dia:  0.02
  • Reputação:   1
  • Pontos/Conquistas:  846
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  46

Boa Tarde Thiago

Pessoal bom dia!

Estou com um problema na sentença abaixo, na linha em VERMELHO,

(TITMMOVRATCCU.VALOR - ISNULL(TITMMOV.CAMPOLIVRE,0)) AS [VALOR C_CUSTO],

Na minha base esse campolivre seria para desconto, porem nos não lançamos o desconto no item do movimento, mais sim no movimento direto, no caso na TMOV.VALORDESC, porem se eu modificar o TITMMOV.CAMPOLIVRE pelo TMOV.VALORDESC ela me retorna um valor absurdo pelo fato de que se o movimento for rateado por 5 Centro de Custo, ele multiplica o valor de desconto por 5.

Eu tive a seguinte idéia. Não sei se funcionaria, mas não custa tentar:

(TITMMOVRATCCU.VALOR - (ISNULL(TMOV.VALORDESC,0) / COUNT(*)) AS [VALOR C_CUSTO],

A idéia é na hora que o cubo for executado, vc divide o valor total do desconto que o movimento por ventura tenha pela quantidade de itens. ACHO que deve ser uma solução para o seu problema.

No meu ver, daria para fazer uma trigger para preencher o TITMMOV.CAMPOLIVRE, porem ja tive muitos problemas com triggers, não estava querendo fazer deste modo,

Ou então, vc poderia manter sua sentença, mas cria uma "procedure" fazendo esse rateio no campo TITMMOV.CAMPOLIVRE, de acordo com a quantidade de itens do movimento. Depois, vincula esua procedure ao cubo. Assim, toda vez que o cubo for executado, o campo é atualizado e seu cubo fica correto.

Editado por andreluis1411
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.