Análisis de envejecimiento de existencias mediante cálculo FIFO

Un usuario Pregunto ✅

Anónimo

Hola gente inteligente,

He estado luchando por crear una vista de envejecimiento de las existencias disponibles en mis dos tiendas minoristas.

Tengo el Stock disponible diario (SOH) y Ventas para cada tienda por fecha y SKU, también tengo los Despachos del DC que abastece a las tiendas, no tengo recibo del stock cuando llega a la tienda por lo que asumirá que el bien llega al stock el mismo día en que se envía.

Había algo de stock disponible en la tienda en la fecha de inicio de mi informe (01/01/2020) y consideraré que todo este stock tiene 1 día de antigüedad el 01/01/2020.

El resultado que estoy buscando es completar un conjunto de Age Buckets con la cantidad de unidades y el valor de las existencias en cada bucket. Los baldes tienen entre 0 y 15 días, entre 16 y 30 días, entre 31 y 45 días, etc.

Encontré muchos ejemplos en SQL sobre cómo lograr esto, pero desafortunadamente, no tengo experiencia en SQL y estoy seguro de que esto se puede crear en DAX si alguien pudiera guiarme en la dirección correcta.

He creado un conjunto de datos de prueba y lo he colocado en la siguiente ubicación: https://drive.google.com/drive/folders/1LaCQk2WwaUl9Wskd-8PyfO0CNcVbvZEi?usp=sharing

Por favor, avíseme si necesita información adicional para poder ayudarlo.

Salud,

Phil

daxer

Hola.

Dices «He encontrado muchos ejemplos en SQL sobre cómo lograr esto […]». ¿Podría darme un enlace a este SQL? Además, sería aconsejable que publique su modelo aquí. Puede simplificarse solo a las tablas y relaciones que importan para esta tarea. Además, podría quitar el modelo de cualquier columna que sea simplemente una molestia. Eso definitivamente ayudaría.

Gracias.

PD. No puedo acceder a archivos en unidades compartidas como Google o OneDrive desde el trabajo.

Anónimo

En respuesta a daxer

Hola Daxer,

Gracias por su interés en ayudar, ¡se lo agradezco mucho! No tengo permiso en el foro para cargar archivos (no estoy seguro de por qué Microsoft no permite que todos hagan esto)

El modelo es bastante simple:

Phil-Bowen_0-1598564424665.png

Tablas de búsqueda:

Fechas: tabla de fechas simple con fechas, meses, años, etc.

Rango: tabla de rango de productos con SKU y nombre del producto

Tiendas: ID de tienda y nombre de tienda

Tablas de hechos:

Despachos desde DC:

SOH (tenga en cuenta que este es el saldo de cierre de cada día)

Phil-Bowen_1-1598564747577.png

Ventas:

Phil-Bowen_2-1598564778959.png

Despachos desde DC

Phil-Bowen_3-1598564820074.png

Finalmente, tengo una tabla con los grupos de edad en los que me gustaría clasificar el SOH:

Phil-Bowen_4-1598565193520.png

El resultado final se vería así:

Phil-Bowen_5-1598565540075.png

Creo que la consulta SQL que coincide con mi requisito más cercana es http://www.kodyaz.com/sap-abap/stock-aging-using-sqlscript-on-sap-hana-database.aspx

Salud,

Phil

daxer

En respuesta a Anónimo

¿Es esta la lógica de tu problema?

https://docs.microsoft.com/en-us/dynamics365/supply-chain/cost-management/inventory-aging-report

Amitchandak

@Anónimo, consulte si estos pueden ayudar

https://radacad.com/dax-inventory-or-stock-valuation-using-fifo

https://community.powerbi.com/t5/Desktop/FIFO-Stock-Calculation/td-p/458160

https://forum.enterprisedna.co/t/share-valuation-using-fifo-method/3853

Anónimo

En respuesta a Amitchandak

Hola Amitchandak,

Gracias por los enlaces … Desafortunadamente, ya los revisé todos durante la semana pasada y no resuelven el mismo problema.

Amitchandak

En respuesta a Anónimo

@Anónimo, intento marcar la opción de agrupar como

https://www.daxpatterns.com/dynamic-segmentation/
https://radacad.com/grouping-and-binning-step-towards-better-data-visualization

algo como esto

Suma de cantidad de cubos de edad = CALCULAR (Sumx (filtro (VALORES (SOH[Invtid]), [Age] > = min (‘Agebucket'[Age bucket start]) && [Age] <= max ('Agebucket'[Age bucket end])),SOL[Value Unit]))

Pero dudo del nivel más bajo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *