cancel
Showing results for 
Search instead for 
Did you mean: 

Estoque de entrada Acumulativo (OINM)

0 Kudos

Saudações a todos!!

Estou precisando de ajuda para solucionar um problema na query que fiz.

Travei na query para calcular o estoque (quantidade e valor) de forma acumulativa, ou seja, preciso que a quantidade acumulada seja alterada por adição ou subtração. Por exemplo:


Dessa forma montei a seguinte Query:

T2."DocDate", T4."WhsCode", T3."WhsName", T0."ItmsGrpNam",T1."ItemCode", T1."ItemName",
T1."InvntryUom" As "UM",T2."TransType", T2."JrnlMemo",AVG(T2."InQty") AS "Qtd Entrada",AVG(T2."OutQty") AS "Qtd Saída", 
SUM((T2."InQty") - (T2."OutQty"))OVER(ORDER BY T2."DocDate") As "Estoque Acumulado", (t2."Price") AS "Preço Unitário",

CASE 
    WHEN T2."InQty" >0 and T2."OutQty" =0 THEN SUM((T2."InQty") * (T2."Price"))OVER(ORDER BY T2."DocDate") 
    ELSE SUM((T2."OutQty") * (T2."CalcPrice"))OVER(ORDER BY T2."DocDate") END AS "Valor Acumulado",
    
T1."U_RSD_PesoBruto", T1."U_RSD_UN_Conversao"

FROM OITB T0     
INNER JOIN OITM T1 ON T1."ItmsGrpCod" = T0."ItmsGrpCod" 
INNER JOIN OINM T2 ON T2."ItemCode" = T1."ItemCode"
INNER JOIN OWHS T3 ON T3."WhsCode" = T2."Warehouse" 
INNER JOIN OITW T4 ON T4."WhsCode" = T3."WhsCode"
--INNER JOIN OIVL T5 ON T5."ItemCode" = T1."ItemCode"
WHERE 
T2."TransType" in (13,14,15,16,18,19,20,59,60,67,69,310000001) AND
T1."ItemCode" = '[%0]' 

GROUP BY T2."TransType",T2."DocDate",T4."WhsCode",T3."WhsName", T1."ItemCode", T1."ItemName", t2."Price",T2."JrnlMemo",
T0."ItmsGrpNam", T1."InvntryUom",T1."U_RSD_PesoBruto", T1."U_RSD_UN_Conversao",T2."OutQty",T2."InQty",T2."CalcPrice"


Mas conforme mostra no print:
1º - O Estoque Acumulado está contabilizando "correto", porém o lançamento está por dia, ou seja, se na data 23/07 eu tiver 3 entradas separadamente do produto, ao invés de gerar 3 linhas e fazer o somatório individualmente, a query já calcula as 3 entradas e exibe o resultado agregado.

2º - O valor acumulado está apenas somando, ou seja, quando tenho NS(Nota Fiscal de Saída) ao invés de subtrair está somando ao acumulado.

3º - O valor Acumulado também está calculando os lançamentos agregados por dia e não por linha de produto.

Desde já agradeço a ajuda.

Accepted Solutions (1)

Accepted Solutions (1)

0 Kudos

Bem, analisando melhor pude perceber que estava usando o agregador (DocDate), com isso a query estava calculando todas os lançamentos do dia.

Ao invez de "DocDate" fiz agregação por lançamento "TransNum" da OINM.

SUM((T2."InQty") - (T2."OutQty"))OVER(ORDER BY T2."TransNum")

Caso resolvido.
Grato a todos!

Junior

Answers (1)

Answers (1)

0 Kudos

Algum ajuda, orientação?