cancel
Showing results for 
Search instead for 
Did you mean: 

Média de compras x Nota de entrada

Former Member
0 Kudos

Olá pessoal,

Estou passando pela seguinte situação: Desenvolvi um relatório em Crystal que faz uma média da data da entrega do pedido de compras (DocDueDate) com a data da entrada da nota fiscal (DocDate), porém preciso calcular uma média entre os dias atrasados x a quantidade de pedidos. Como estou utilizando um agrupamento pois um pedido de compras poderá conter diversas Nf, não estou conseguindo utilizar a soma do Crystal, alguem poderia me ajudar?

Segue query:

SELECT DISTINCT OPOR.DocNum, OPOR.DOCENTRY,  OPCH.CardName, PCH1.Quantity, OPOR.DocDate

AS 'Dt Pedido', OPCH.DocDate, 

(sbo_cmcouto_teste.dbo.FcnDiasUteis (OPOR.DocDate,OPCH.DocDate) as 'Dias',

OPCH.U_Comprador, PCH1.BaseRef AS 'Pedido', OPOR.DocTotal,

OPCH.DocDate as 'Dt Nota', OPOR.DocDueDate as 'Dt Entrega',

POR1.LineNum, OPOR.BplName

FROM OPCH (NOLOCK)

INNER JOIN PCH1 (NOLOCK) ON OPCH.DOCENTRY = PCH1.DOCENTRY

INNER JOIN OPOR (NOLOCK) ON PCH1.BASEENTRY = OPOR.DOCENTRY

INNER JOIN POR1 (NOLOCK) ON OPOR.DocEntry = POR1.DocEntry

WHERE OPCH.CANCELED = 'N' AND OPOR.CANCELED = 'N'

AND OPOR.DocDate > = '20160401' AND OPOR.DocDate < ='20160429'

GROUP BY OPOR.DocNum, OPOR.DOCENTRY,  OPCH.CardName, PCH1.Quantity, OPOR.DocDate,

OPCH.DocDate, 

OPCH.U_Comprador, PCH1.BaseRef, OPOR.DocTotal,

OPCH.DocDate, OPOR.DocDueDate,

POR1.LineNum, OPOR.BplName

Att;

Jefferson Maldonado

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Bom dia,

achei interessante a ideia do relatório porem fui testar para tentar te ajudar, mas para isso preciso saber do que se trata essa função "sbo_cmcouto_teste.dbo.FcnDiasUteis"?

Former Member
0 Kudos

Bom dia Andrew,

Esta função faz com que seja reconhecido os dias uteis para o relatório, assim posso saber com certeza os dias que preciso.

Jefferson Maldonado

Former Member
0 Kudos

Bom dia,

Bom fiz o teste aqui e na minha consulta substitui a sua função pela DATEDIFF para testar.

Inicialmente recomendaria colocar no WHARE a seguinte condição:

PCH1.ItemCode = POR1.ItemCode

Bom na minha base todos os pedidos são 1 para 1 mas pelo que entendi tem que agrupar todos os OPOR.DocNum

No crystal vá em INSERIR -> GRUPO selecione o campo correto e clique em ok

Depois va em INSERIR -> RESUMO e selecione o campo DIAS e coloque a forma de calculo como "MEDIA"  clique em ok

Acredito que assim vai funcionar como você deseja.


Seguindo nessa mesma logica podemos agrupar primeiro por fornecedor, depois por pedido e fazer media por pedido e media por fornecedor. Eu vou fazer desta forma no relatório que você esta construindo e vou incluir na minha base.


Espero ter ajudado!

Former Member
0 Kudos

Boa tarde Andrew,

Também cheguei a utilizar o DATEDIFF mais para pegar somente os dias úteis ele não funcionou. O Problema é o seguinte? Eu tenho 1 Solicitação de compras que viraram vários pedidos, e por isso na hora de somar ou dar a média o valor não bate, pois o resuma esta somando o valor do grupo e da linha detalhe.

Att,

Jefferson Maldonado

Former Member
0 Kudos

Boa tarde,

Sim o DATEDIFF so calcula a diferença das datas.

Me diz se voce colocou a condição PCH1.ItemCode = POR1.ItemCode no seu whare?

Me manda o resultado da sua consulta em CSV com o whare que falei e sem o whare.

O teste que realizei aqui funcionou perfeitamente!

Former Member
0 Kudos

Andrew,

Coloque sim o INNER JOIN da PCH1 e POR1 e também criei o grupo de PN e fiz o resumo por média, os 2 deram o mesmo resultando. A minha conta precisa ser a seguinte: Quantidades de linhas do relatório/somas de dias. Assim que devo pegar a média conforme solicitado. Ex: 68 dias / 7 pedidos= 9,71 já a média do Crystal esta dano 11,6.

Att:

Jefferson Maldonado

Former Member
0 Kudos

Bom dia Jefferson, só posso concluir que sua consulta tem algum problema poderia publicar os dados em CSV? Então depois deste seu ultimo comentário só posso reafirmar que a função que deve utilizar e a Media.

Para pegar os dados em CSV e so executar a consulta no Management Studio, selecionar o resultado, colar em um planilha, salvar e fazer o upload aqui.

Former Member
0 Kudos

Boa tarde pessoal,

Conseguir resolver criando uma função e amarrando na minha query.

Att:

Jefferson Maldonado