0

Kündigungsfrist 6 Wochen zum Quartal berechnen

Kündigungsfrist 6 Wochen zum Quartal berechnen

6 Antworten

null
    • Michael.3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Sorry, da habe ich zu schnell auf Enter gedrückt. Ich habe ein Datenbankfeld Vertragsbeginn, -laufzeit, ein berechnetes Datenbankfeld -ende. ein Feld für die Vertragsverlängerung.

     

    Wenn ich nun den Kündigungszeitpunk z. B 6 Wochen zum Quartalsende berechnen möchte habe ich ein Problem. Ich kann zwat zum gegenwärtigen Zeitpunkt ein Quartal berechnen, aber ich bekomme die Berechnung der Kündigungsfrist nicht hin.

     

    Hat jemand eine Idee?

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Michael,

    für ein Datumsfeld Kündigungsdatum und ein Berechnungsfeld:

    ---

    function getDate(year : number,dm : text) do
    date(year, number(last(split(dm, "."))), number(first(split(dm, "."))))
    end;
    let myQE := ["31.03", "30.06", "30.09", "31.12"];
    let myKD := ["17.02.", "19.05", "19.08", "18.11"];
    let myQ := quarter('Kündigungsdatum') - 1;
    let myY := year('Kündigungsdatum');
    let myKDD := getDate(myY, item(myKD, myQ));
    if 'Kündigungsdatum' <= myKDD then
    getDate(myY, item(myQE, myQ))
    else
    if myQ = 4 then
    getDate(myY + 1, item(myQE, 0))
    else
    getDate(myY, item(myQE, myQ + 1))
    end
    end

    ---

    Leo

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    @Leo. Guten Morgen. Ich hatte hier selbst etwas gebastelt, aber Du warst schneller. Schau doch bitte mal in Deiner Funktion auf den 20.11.21 und später, wo es einen Jahreswechsel gibt. Gruß Mirko

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Mirko,

    danke, ein Denkfehler - die Quartalszahlen sind im Array von 0 bis 3 und bei if myQ = 4 then schläg die Formel natürlich fehl:

    ---

    function getDate(year : number,dm : text) do
    date(year, number(last(split(dm, "."))), number(first(split(dm, "."))))
    end;
    let myQE := ["31.03", "30.06", "30.09", "31.12"];
    let myKD := ["17.02.", "19.05", "19.08", "18.11"];
    let myQ := quarter('Kündigungsdatum') - 1;
    let myY := year('Kündigungsdatum');
    let myKDD := getDate(myY, item(myKD, myQ));
    if 'Kündigungsdatum' <= myKDD then
    getDate(myY, item(myQE, myQ))
    else
    if myQ = 3 then
    getDate(myY + 1, item(myQE, 0))
    else
    getDate(myY, item(myQE, myQ + 1))
    end
    end

    ---

    Leo

    • mirko3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hi Leo. Ich denke, es benötigt 5 Unterscheidungen. Die Zeit vom 20.11. (Du hast 18.11.) bis Jahresende und die Zeit vom 1.1. bis 17.2 müssen getrennt werden, da bei ersterem Zeitraum das Jahr um 1 erhöht werden muß. Beim zweiten Zeitraum nicht. Das fällt in Deiner Funktion bei Eingabe von z.B. 1.1.21 auf. Ich lege jetzt mal doch meinen Versuch bei. Vielleicht hat er andere Bugs, aber die Schlüsselstellen habe ich getestet und geht auch bei Schaltjahr. Mirko

    *

    let sixWeeksLater := date(year(Kuendigungsdatum), month(Kuendigungsdatum), day(Kuendigungsdatum)) + 42;
    let numberOfQuartal := quarter(sixWeeksLater);
    if numberOfQuartal = 1 and month(Kuendigungsdatum) = 11 or month(Kuendigungsdatum) = 12 then
    date(year(Kuendigungsdatum) + 1, 3, 31)
    else
    switch numberOfQuartal do
    case 1:
    date(year(Kuendigungsdatum), 3, 31)
    case 2:
    date(year(Kuendigungsdatum), 6, 30)
    case 3:
    date(year(Kuendigungsdatum), 9, 30)
    case 4:
    date(year(Kuendigungsdatum), 12, 31)
    end
    end

    *

    • Michael.3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Wow, vielen Dank für Euer FeedbackQ