Automatische Stundensatzerhöhung
Servus,
ich habe eine Tabelle in der die Stundensätze eingetragen werden und diese sich bei den meisten Kunden automatisch um 2% pro Jahr erhöhen. hierfür habe ich für jedes Jahr eine Spalte erstellt (wahrscheinlich würden einige das einfacher lösen). Dort wo die Erhöhung jährlich erfolgt, klappt das ohne Probleme. Es gibt wenige Ausnahmen, wo die Erhöhung nur alle 3 Jahre stattfindet. Es müsste also Startjahr + 3 Jahre + 3 Jahre ...... eine Erhöhung stattfinden, nicht jedoch jährlich. Beispiel bei alle drei Jahre Erhöhung: 2021-2024-2027.....
Hat jemand eine Idee wie das in der Formel abgebildet werden könnte. Relevante Felder sind:
'Entw. %' + '2022' = prozentuale Erhöhung des Stundensatzes
'Intervall' = Häufigkeit der Erhöhung, 1 ist jährlich, 2 ist alle zwei Jahre, 3 alle drei Jahre etc.
'Start Stundensatz' = Anfänglicher Stundensatz
Startjahr = Beginn der Vertragsbeziehung
'2021' = für jedes Jahr ab 2021 und fortlaufend für jedes Jahr das Feld mit dem entsprechenden erhöhten Stundensatz (2022, 2023, 2024 .....)
Das ist die Formel für 2023:
if number(Startjahr) = 2023 then
'Start Stundensatz'
else
if number(Startjahr) < 2023 then
'2022' * 'Entw. %' + '2022'
else
if number(Startjahr) > 2023 then
0
end
end
end
Ich gehe davon aus, ich habe es mir zu aufwendig gemacht.
Vielen Dank vorab für die Hilfe
6 Antworten
-
Hallo Christian. Hier mal eine Anregung für Dich. Ich würde in den Stammdaten der Kunden ein Auswahlfeld anlegen (TURNUS), in diesem dann die Auswahl für jährlich, zweijährlich, dreijährlich. Dann ein Feld STARTDATUM und ein Feld STARTPREIS, die wohl selbsterklärend sind. Wenn Du dann in ein Funktionsfeld daneben das folgende Script eingibst, dann sollte nach Auswahl des Turnus und Eintrag in die anderen Felder der korrekte Wert erscheinen und entsprechend des Turnus auch steigen.
Mirko
let endPreis := STARTPREIS; let diff := year(today()) - year(STARTDATUM); let increase := 2; switch endPreis != 0 do case TURNUS = 1: ( let endPreis := STARTPREIS; for i in range(1, diff + 1) do endPreis := endPreis + increase * endPreis / 100 end; round(endPreis, 2) ) case TURNUS = 2: ( let endPreis := STARTPREIS; for i in range(1, floor(diff / 2) + 1) do endPreis := endPreis + increase * endPreis / 100 end; round(endPreis, 2) ) case TURNUS = 3: ( let endPreis := STARTPREIS; for i in range(1, floor(diff / 3) + 1) do endPreis := endPreis + increase * endPreis / 100 end; round(endPreis, 2) ) end
-
Hallo Mirko,
durch Urlaub und Arbeit kam ich jetzt erst dazu, dass zu testen.
Vielen lieben Dank für die Hilfe. Es klappt wunderbar.
Zuerst hatte ich die Infos in einer Untertabelle, Startdatum, Entwicklung Stundensatz und Startpreis. Hier hatte mir Ninox bei der Formel Fehler bei drei Klammern angezeigt. Als ich es in die Kunden Tabelle eingegeben habe (Spalten erstellt). Hatte es sofort geklappt.
Viele Grüße
Christian
-
Versuche mal so. Ohne Zusatzfeld. Die Erhöhung beginnt im year(STARTDATUM), vorher bleibt der Startpreis erhalten. Mirko
if year(today()) < year(STARTDATUM) then STARTPREIS else let endPreis := STARTPREIS; let diff := year(today()) - year(STARTDATUM); let increase := 2; switch endPreis != 0 do case TURNUS = 1: ( let endPreis := STARTPREIS; for i in range(0, diff + 1) do endPreis := endPreis + increase * endPreis / 100 end; round(endPreis, 2) ) case TURNUS = 2: ( let endPreis := STARTPREIS; for i in range(0, floor(diff / 2) + 1) do endPreis := endPreis + increase * endPreis / 100 end; round(endPreis, 2) ) case TURNUS = 3: ( let endPreis := STARTPREIS; for i in range(0, floor(diff / 3) + 1) do endPreis := endPreis + increase * endPreis / 100 end; round(endPreis, 2) ) end end
Content aside
- Status Answered
- vor 1 JahrZuletzt aktiv
- 6Antworten
- 126Ansichten
-
3
Folge bereits