Forum Discussion

ca1uvm's avatar
ca1uvm
Regular Visitor
3 years ago
Solved

Control de Inventario

Buenas tardes,

Estoy solicitando su asistencia para un proyecto que implica la administración del inventario de varios productos. La idea principal es crear una medida DAX para Power BI que permita el seguimiento diario de nuestro inventario, utilizando una serie de datos que reflejan nuestro control de inventario.

Utilizamos varias tablas para recopilar la información necesaria, que incluyen:

  1. La tabla "Calendario", que proporciona la "Fecha del día".
  2. La tabla "Inicial Angamos", que nos ayuda a calcular el "Saldo Inicial" usando la fórmula: Saldo Inicial = SUM('Inicial Angamos'[Inicial]).
  3. La tabla "Guías Mes", que nos proporciona el valor de "Recibido" usando la fórmula: Recibido = SUM('Guías Mes'[Peso_neto]) / 1000.
  4. Finalmente, la tabla "Reporte SOC", que nos permite calcular "Exterior" mediante: Exterior = SUM('Reporte SOC'[Peso Neto]).

Estas tablas se conectan entre sí y con otras tablas relevantes por medio de "Fecha" y "Cod.Producto", permitiéndonos obtener una visión integral de nuestro inventario.

Con estos datos, calculamos el stock de la siguiente manera: saldo inicial + recibido - exterior = stock. Este cálculo se aplica de manera sucesiva, con el stock del día anterior pasando al siguiente día del mes.

Para ilustrarlo:

El primer día del mes, establecemos el saldo inicial. A partir de ahí, cada día se calcula de la siguiente forma: el stock del día anterior + recibido – exterior = stock del día presente. Esta operación se repite sucesivamente para todos los días del mes, arrastrando siempre el stock del día anterior al siguiente.

adjunto imagenes como deberia funcionar:

la medida que estaba creando es :

Stock =
VAR ProductoActual = SELECTEDVALUE('Grupos materiales'[Cod.Producto])
VAR FechaActual = MAX('Calendario'[Fecha])
VAR RecibidoHastaFecha = CALCULATE([Recibido], 'Calendario'[Fecha] <= FechaActual)
VAR ExteriorHastaFecha = CALCULATE([Exterior], 'Calendario'[Fecha] <= FechaActual)

VAR StockPrevio =
    CALCULATE(
        [Recibido] - [Exterior],
        ALL('Calendario'),
        'Calendario'[Fecha] < FechaActual,
        'Grupos materiales'[Cod.Producto] = ProductoActual
    )

RETURN
IF (
    ISBLANK(StockPrevio),
    RecibidoHastaFecha - ExteriorHastaFecha,
    StockPrevio + [Recibido] - [Exterior]
)
pero no esta funcionando como quiero:

adjunto el modelo de datos

desde ya muchas gracias

quedo atento 🙂 

  • @Syndicate_Admin , Pruebe medidas como

    Inventario / OnHand
    [Inventario inicial] + CALCULAR(SUMA(Tabla[Pedido]),filtro(fecha,fecha[fecha] <=maxx(fecha,fecha[fecha]))) - CALCULAR(SUMA(Tabla[Vendido]),filtro(fecha,fecha[fecha] <=maxx(fecha,fecha[fecha])))


    Inventario / OnHand
    CALCULATE(firstnonblankvalue('Date'[Month]),sum(Table[Intial Inventory]),all('Date')) + CALCULATE(SUM(Table[Ordered]),filter(date,date[date] <=maxx(date,date[date]))) - CALCULATE(SUM(Table[Sold]),filter(date,date[date] <=maxx(date,date[date])))

    recomienda

    Inventario de Power BI disponible: https://youtu.be/nKbJ9Cpb-Aw

  • Encontré la solución con esta medida y resultó ser más sencilla de lo que pensaba. Quiero agradecer a quienes me guiaron durante el proceso de resolución. ¡Muchas gracias!

    Aquí les dejo la solución:

    Stock = ROUND( CALCULATE( SUM('Inicial '[Inicial]) + SUM('Guías '[Peso_neto])/1000 - SUM('SOC'[Peso Neto]), FILTER( ALLSELECTED(Calendario[Fecha].[Día]), Calendario[Fecha].[Día] <= MAX(Calendario[Fecha].[Día]) ) ), 2 )

     

3 Replies

  • @Syndicate_Admin , Pruebe medidas como

    Inventario / OnHand
    [Inventario inicial] + CALCULAR(SUMA(Tabla[Pedido]),filtro(fecha,fecha[fecha] <=maxx(fecha,fecha[fecha]))) - CALCULAR(SUMA(Tabla[Vendido]),filtro(fecha,fecha[fecha] <=maxx(fecha,fecha[fecha])))


    Inventario / OnHand
    CALCULATE(firstnonblankvalue('Date'[Month]),sum(Table[Intial Inventory]),all('Date')) + CALCULATE(SUM(Table[Ordered]),filter(date,date[date] <=maxx(date,date[date]))) - CALCULATE(SUM(Table[Sold]),filter(date,date[date] <=maxx(date,date[date])))

    recomienda

    Inventario de Power BI disponible: https://youtu.be/nKbJ9Cpb-Aw

    • ca1uvm's avatar
      ca1uvm
      Regular Visitor

      Estoy teniendo problemas con la siguiente medida:

      Stock =
      CALCULATE(
          FIRSTNONBLANKVALUE(Calendario[Fecha], SUM('Inicial Angamos'[Inicial])),
          ALL(Calendario)
      )
      + CALCULATE(
          SUM('Guías Mes'[Peso_neto])/1000,
          FILTER(
              ALL(Calendario),
              Calendario[Fecha] <= MAXX(Calendario, Calendario[Fecha])
          )
      )
      - CALCULATE(
          SUM('Reporte SOC'[Peso Neto]),
          FILTER(
              all(Calendario),
              Calendario[Fecha] <= MAXX(Calendario, Calendario[Fecha])
          )
      )

      Por ejemplo, para el producto 11, el stock inicial es de 49,395. Sin embargo, el valor que obtengo con esta medida es diferente. Debido a que no hubo entradas ni salidas, el stock debería seguir siendo 49,395. Este valor debería mantenerse hasta el día 23. El 24 se recibieron 25,423 unidades, por lo que el stock para ese día debería ser 74,818. Para el día 25, se añadieron 24,956 unidades al stock del día anterior, por lo que el stock total hasta hoy debería ser 99,774. Sin embargo, la medida me está dando otros valores. ¿Podrías ayudarme a entender por qué?

      • ca1uvm's avatar
        ca1uvm
        Regular Visitor

        Encontré la solución con esta medida y resultó ser más sencilla de lo que pensaba. Quiero agradecer a quienes me guiaron durante el proceso de resolución. ¡Muchas gracias!

        Aquí les dejo la solución:

        Stock = ROUND( CALCULATE( SUM('Inicial '[Inicial]) + SUM('Guías '[Peso_neto])/1000 - SUM('SOC'[Peso Neto]), FILTER( ALLSELECTED(Calendario[Fecha].[Día]), Calendario[Fecha].[Día] <= MAX(Calendario[Fecha].[Día]) ) ), 2 )