GARANTIR DESCONTO

Fórum Dividir valor do frete pelo número de notas do mesmo conhecimento #590889

26/01/2018

0

Bom dia a todos,

Estou fazendo um relatório de fretes para a minha empresa e não estou conseguindo dividir o valor do frete pela quantidade de notas dos conhecimentos, este meu SQL usa 3 tabelas, a PCNFBASEENT onde o valor do frete é encontrado, a PCNFSAID onde busco umas informações e a PCCONHECIMENTOFRETEI onde está os nr das NF dos conhecimentos (aqui é onde está o problema, a quantidade de NF e linhas vária e faz com que o valor do frete se repita em todos os conhecimentos do mesma transação). Preciso fazer com que o valor total do frete se divida entre as varias notas da tabela PCCONHECIMENTOFRETEI, rateando o valor e facilitando no meu relatório, pois o valor não vai se repetir como no está hoje.
SELECT
  A.FORNECEDOR,
  A.VLTOTAL,
  A.NUMNOTA AS "NF_FRETE",
  A.DTENTRADA,
  A.DTEMISSAO,
  A.CODFORNEC,
  B.CHAVENFE,
  B.NUMNOTA,
  C.NUMTRANSCONHEC,
  B.NUMITENS
FROM
  PCNFBASEENT A,
  PCNFSAID B,
  PCCONHECIMENTOFRETEI C
WHERE
  A.NUMTRANSENT = C.NUMTRANSCONHEC
  AND C.CHAVENFE = B.CHAVENFE
  AND B.NUMNOTA = C.NUMNOTA
  AND A.ESPECIE = 'CT'
  AND A.DTEMISSAO BETWEEN :V_DATA_INI AND :V_DATA_FIM
  AND A.CODFORNEC = :CODFORNEC
  AND A.NUMNOTA = :NUMNOTA
  AND C.NUMTRANSCONHEC IN :NUMTRANSCONHEC
Giovane

Giovane

Responder

Posts

29/01/2018

Jerson Boer

Olá Giovane,

Se a distribuição de valor for igual entre os conhecimentos proporcionalmente à quantidade existente, tente montar uma subquery que faça a contagem dos "conhecimentos" existentes em cada nota e relacione com a nota para distribuição do valor, algo como:


(Select CodigoChave, Count(CodigoConhecimento) as Qtde from PCCONHECIMENTOFRETEI group by CodigoChave) as ContagemNF ON ContagemNF.CodigoChave = TabelaNova.CodigoChave



Aí em sua query você vai usar:

Select A.VLTOTAL / ContagemNF.Qtde as ValorIndividual
Responder

Gostei + 0

30/01/2018

Emerson Nascimento

tente algo assim.

SELECT
A.FORNECEDOR,
A.VLTOTAL,
A.NUMNOTA AS "NF_FRETE",
A.DTENTRADA,
A.DTEMISSAO,
A.CODFORNEC,
B.CHAVENFE,
B.NUMNOTA,
C.NUMTRANSCONHEC,
B.NUMITENS,
(A.VLTOTAL / (SELECT COUNT(*) FROM PCCONHECIMENTOFRETEI X WHERE X.NUMTRANSCONHEC = A.NUMTRANSENT)) RATEIO
FROM
PCNFBASEENT A
LEFT JOIN
PCCONHECIMENTOFRETEI C ON
C.NUMTRANSCONHEC = A.NUMTRANSENT
LEFT JOIN
PCNFSAID B ON
B.CHAVENFE = C.CHAVENFE
AND B.NUMNOTA = C.NUMNOTA
WHERE
AND A.ESPECIE = 'CT'
AND A.DTEMISSAO BETWEEN :V_DATA_INI AND :V_DATA_FIM
AND A.CODFORNEC = :CODFORNEC
AND A.NUMNOTA = :NUMNOTA
AND C.NUMTRANSCONHEC IN :NUMTRANSCONHEC

obs.: a solução está na linha da subquery, onde o valor total está sendo dividido pelo número de notas, gerando o valor rateado. eu só alterei o relacionamento pra eu poder entender melhor, visto que não conheço tuas tabelas.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar