Ir para conteúdo
  • 0

Saldo do estoque estático - Conforme o filtro de data


Miguel Costa
Ir para solução Solucionado por Joao Raulino ,

Pergunta

  • Alunos

Olá pessoal, sou iniciante e ainda estou entendendo como funciona o contexto e as medidas com DAX. 
Preciso da ajuda de vocês!
__________________________________________________________________________________
Contexto:

Tenho uma tabela chamada "fMovimentoEstoque"
Nela tem varias informações, porem o que eu estou usando no contexto é as colunas:

"dt_ent_sai" >> Data de competencia da movimentação
"numero1" >> ID da movimentaçao
"numero2" >> N. Documento
"CodOper" >> Tipo de Operação
"prd_nome" >> Nome do produto
"Mov. Entrada" (medida)
"Mov. Saída" (medida)
"qtd_total" >> É o movimento de entrada e saída do produto, quando é negativo é saida e quando é positivo é entrada.
__________________________________________________________________________________
Medidas criadas DAX:

Mov. Entrada = 
    CALCULATE(
        SUM(fMovimentoEstoque[qtd_tot]),
        fMovimentoEstoque[qtd_tot]>0,
        fMovimentoEstoque2[situacao] = "normal"
    )

Mov. Saída = 
    CALCULATE(
        SUM(fMovimentoEstoque[qtd_tot]),
        fMovimentoEstoque[qtd_tot]<0,
        fMovimentoEstoque[situacao] = "normal"   
    )
    

__________________________________________________________________________________
Problema:

No dia 11/03/2020 eu tive uma entrada de 5kg de "Castanha do para quebrada", ou seja, o meu saldo é de 5Kg
No dia 01/07/2020 tive outra entrada de 5Kg, ou seja, o meu saldo é de 10Kg
E assim por diante

O meu problema é no saldo inicial quando eu coloco um filtro de data especifica.
Exemplo: Se eu colocar 01/07/2022 deveria aparecer 10Kg. Pois está considerando todo o movimento e não apenas o contexto atual.

É possivel fazer uma medida em DAX para essa situação?
O mais proximo que eu cheguei foi na medida DAX abaixo: 

Saldo teste = 
    SUMX(
        FILTER(
            ALLSELECTED(fMovimentoEstoque),
            fMovimentoEstoque[dt_ent_sai] <= MAX(fMovimentoEstoque[dt_ent_sai])            
        ),
        fMovimentoEstoque[qtd_tot]
    )

Com essa medida acima eu tenho a atualização do estoque, porem apenas no contexto atual, por conta da ALLSELECTED.
Se eu colocar a ALL a visualização não funciona. Gostaria de ajuda para entender onde estou errando! 

Movimentação de estoque - Copia - FORUM.pbix

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Fala @Miguel Costa!

A medida esta certa: ela faz o acumulado usando a coluna [DT_ENT_SAI] como referencia então nos dias que tiverem a mesma [DT_ENT_SAI] ela vai somar/subtrair todos os registros de uma só vez:

image.png.4ae3e249c2e7a6ae594ba55281e02ecb.png

Algo que me passou despercebido é que você também esta aplicando um filtro na coluna loja, então precisa incluir ela na ALLEXCEPT. Ficaria assim:

Citar
Saldo Acumulado =
CALCULATE(
    SUM(fMovimentoEstoque[qtd_tot]),
    FILTER(
        ALLEXCEPT(
            fMovimentoEstoque,
            dProduto[prd_nome],
            dLoja[loj_nome]
        ),
        fMovimentoEstoque[dt_ent_sai] <= MAX(fMovimentoEstoque[dt_ent_sai]) &&
        fMovimentoEstoque[situacao] = "normal"
    )
)

Se essa resposta te ajudou, não esquece de marcar como melhor solução 😉

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Suave @Miguel Costa?

Você estava no caminho certo com a medida [Saldo Acumulado], só faltou usar uma ALLEXCEPT() no lugar da ALLSELECTED():

Citar
Saldo NOVO =
CALCULATE(
    SUM(fMovimentoEstoque[qtd_tot]),
    FILTER(
        ALLEXCEPT(
            fMovimentoEstoque,
            dProduto[prd_nome]
            ),
        fMovimentoEstoque[dt_ent_sai] <= MAX(fMovimentoEstoque[dt_ent_sai]) &&
        fMovimentoEstoque[situacao] = "normal"
    )
)

image.png.132321c2cbe32e101103397f0c391bab.png

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Opa @Joao Raulino
Muito bom amigo, obrigado por ajudar!

Vou estudar o ALLEXCEPT, ainda nao tinha usado!
Não abusando da sua generosidade, sabe me informar o porque os movimentos negativos não estão entrando de forma correta no saldo?
image.png.07f57926c665b9da9d475adfd1ba4149.png

Pode ser alguma coluna que eu tenho que colocar no ALLEXCEPT para funcionar corretamente?

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...