Kündigungsfrist 6 Wochen zum Quartal berechnen
Kündigungsfrist 6 Wochen zum Quartal berechnen
6 Antworten
-
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?
-
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
-
@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
-
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
-
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
*
-
Wow, vielen Dank für Euer FeedbackQ
Content aside
- vor 3 JahrenZuletzt aktiv
- 6Antworten
- 429Ansichten