Instantly share code, notes, and snippets.

Embed
What would you like to do?
let
fn = (MyDate as date, StartMonat as text) =>
let
Startmonatsnummer =
List.PositionOf(
{"januar", "februar","märz","april","mai","juni", "juli", "august", "september", "oktober", "november", "dezember"},
Text.Lower(StartMonat)
) + 1,
Offset = Startmonatsnummer -1,
AtuellerKalendermonat = Date.Month(MyDate),
Geschaeftsmonat =
if AtuellerKalendermonat < Startmonatsnummer then
Text.PadStart(Number.ToText(13 - Startmonatsnummer + AtuellerKalendermonat), 2, "0") &"_"& Number.ToText(Date.Year(MyDate)-1)
else
Text.PadStart(Number.ToText(AtuellerKalendermonat - Offset), 2, "0") &"_"& Number.ToText(Date.Year(MyDate))
in
"GM"& Geschaeftsmonat,
fnType = type function(
MyDate as (type date meta [Documentation.LongDescription="Hier wird das zu prüfende Datum (meist aus einer Datumsspalte) übergeben."]),
Startmonat as (type text meta
[
Documentation.LongDescription="Hier wird der Monat als Text eingegeben, mit dem das Geschäftsjahr beginnt",
Documentation.AllowedValues = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}
]
)
) as text meta [
Documentation.Name = "fnGeschaeftsMonatUndJahr",
Documentation.LongDescription =
"Gibt die Nummer und das Jahr des aktuellen Geschäftsmonats wieder. Dies ist sinnvoll bei von Kalenderjahr abweichenden geschäftsjahren",
Documentation.Author = "Lars Schreiber, www.ssbi-blog.de"
]
in
Value.ReplaceType(fn, fnType)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment