Skip to Content

Estoque de entrada Acumulativo (OINM)

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.

erro-relatorio.png (30.4 kB)
acum.png (5.9 kB)
Add a comment
10|10000 characters needed characters exceeded

Related questions

2 Answers

  • Best Answer
    Posted on Jul 25, 2020 at 12:25 PM

    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

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Jul 25, 2020 at 10:37 AM

    Algum ajuda, orientação?

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.