Calendario 445 Funciona muy bien hasta el 11 Mes 2019

Un usuario Pregunto ✅

Camper

Seguí el paso de una lección de Matt Allinton sobre la creación de un calendario 445 personalizado. El calendario funciona muy bien para mi empresa hasta que llegas al mes 11 de 2019. En noviembre de 2019, los últimos 2 meses del software ERP de mi empresa saltan a 4-5-5 y luego vuelven a 4-4-5.

¿Cómo puedo lograr esto?

mahoneypat

Los calendarios fiscales siempre son divertidos de descifrar. Por supuesto, podría codificarlo en Excel y traerlo a su tabla de fechas, pero eso no es muy elegante. ¿Qué otros años tienen el mismo comportamiento? ¿Cuál es la lógica para determinar años en los que noviembre tiene 5 semanas fiscales? ¿Es algún año en el que noviembre tiene 5 sábados (2013, 2014, 2019, 2024, 2025)?

Palmadita

mahoneypat

En respuesta a Camper

Me alegra saber que te funcionó. Planeo escribirlo este fin de semana y publicaré el enlace aquí cuando se publique. Por favor, márquelo como la solución, si es así.

Palmadita

mahoneypat

Los calendarios fiscales siempre son divertidos de descifrar. Por supuesto, podría codificarlo en Excel y traerlo a su tabla de fechas, pero eso no es muy elegante. ¿Qué otros años tienen el mismo comportamiento? ¿Cuál es la lógica para determinar años en los que noviembre tiene 5 semanas fiscales? ¿Es algún año en el que noviembre tiene 5 sábados (2013, 2014, 2019, 2024, 2025)?

Palmadita

Camper

En respuesta a mahoneypat

Tengo una hoja de cálculo Exel que estoy usando. Esperaba usar algo un poco mejor. También esperaba que si pudiera descubrir cómo manejar estos primeros meses problemáticos, también podría aplicarlo a otros meses. Gracias por su respuesta.

mahoneypat

En respuesta a Camper

Seguí pensando en este y creo que encontré una manera de hacerlo de manera bastante dinámica. Para ver cómo funciona, simplemente cree una consulta en blanco, abra el Editor avanzado y reemplace el texto allí con el código M a continuación. En lugar de intentar encontrar la lógica para derivar la semana fiscal correcta de una lista de fechas, primero creo la tabla fiscal y luego simplemente le agrego la lista de fechas. El código contiene dos comentarios clave en los pasos Source y ListOfDates. Puede presionar el ícono de ajustes en el paso Fuente para ver la pequeña tabla que hice para los años 2018 a 2020. Debería poder agregar más años a esa tabla según sea necesario, y luego simplemente actualizar #date() en los pasos ListOfDates para el primer día del primer año fiscal que haya ingresado.

Avíseme si esto funciona para usted, ya que planeo escribir un blog/video al respecto si es así (después de refinarlo un poco más).

let
    // Input Table of Years and # of Weeks
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwtFDSUTI1UorVAfMsQTxjKM/IACoXCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Year = _t, Weeks = _t]),
    #"Changed Type4" = Table.TransformColumnTypes(Source,{{"Weeks", Int64.Type}, {"Year", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type4", "Custom", each if [Weeks] = 53 then List.Zip({{1..12}, {4,4,5,4,4,5,4,4,5,4,5,5}}) else List.Zip({{1..12}, {4,4,5,4,4,5,4,4,5,4,4,5}})),
    #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
    #"Extracted Values" = Table.TransformColumns(#"Expanded Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ";"), type text}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Custom", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"FM", "NumWeeks"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"FM", Int64.Type}, {"NumWeeks", Int64.Type}}),
    #"Added Custom1" = Table.AddColumn(#"Changed Type", "WeekInFM", each {1..[NumWeeks]}),
    #"Expanded Custom1" = Table.ExpandListColumn(#"Added Custom1", "WeekInFM"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Custom1",{{"WeekInFM", Int64.Type}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type1", "FW_Index", 1, 1, Int64.Type),
    #"Added Custom2" = Table.AddColumn(#"Added Index", "WeekDay", each {1..7}),
    #"Expanded WeekDay" = Table.ExpandListColumn(#"Added Custom2", "WeekDay"),
    #"Changed Type2" = Table.TransformColumnTypes(#"Expanded WeekDay",{{"WeekDay", Int64.Type}}),
    FiscalTable = Table.RemoveColumns(#"Changed Type2",{"Weeks", "NumWeeks", "WeekDay"}),
    // Choose correct start date based on first day of first fiscal year entered in Source step
    ListOfDates = List.Dates(#date(2017,12,31), List.Count(FiscalTable[Year]), #duration(1,0,0,0)),
    MakeTable = Table.FromColumns(Table.ToColumns(FiscalTable)&{ListOfDates}, {"FY","FM","WeekInMonth","FW_Index","Date"}),
    #"Changed Type3" = Table.TransformColumnTypes(MakeTable,{{"Date", type date}})
in
    #"Changed Type3"

Palmadita

Camper

En respuesta a mahoneypat

Pat, esto es increíble. Me encantaría leer tu blog y ver tu video sobre este tema.

¿Podría obtener un enlace a ellos?

Muchas gracias

mahoneypat

En respuesta a Camper

Aquí está el enlace al artículo del blog, que incluye un enlace al video de YouTube.

https://hoosierbi.com/2021/07/04/445-calendar-with-53-week-years/

Palmadita

Camper

En respuesta a mahoneypat

Pat, ¿cómo agregaría el número de la semana fiscal en el año y las fechas de inicio y finalización del año fiscal, mes y trimestre?

mahoneypat

En respuesta a Camper

Me alegra saber que te funcionó. Planeo escribirlo este fin de semana y publicaré el enlace aquí cuando se publique. Por favor, márquelo como la solución, si es así.

Palmadita

Deja un comentario

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