Werte eines Monats -> Wochenweise darstellen = Auszahlungsliste
Hallo!
Für eine Auszahlungsliste muß ich ein ausgewähltes Monat in einzelne Wochenblöcke darstellen. Grundsätzlich funktioniert die Berechnung so, dass immer 7 Tage genommen werden und zum Schluss, die restlichen Tage des jew. Monats.
Im ausgewählten Monat kommen dann zwischen 4 und 6 Wochenblöcke zusammen.
1. WochenBlock:
Zeige alle Datums mit start vom 1. des Monats bis inkl. 1.Sonntag im Monat (vom ausgewählten Monat). --kann je nach Monat auch nur 1 Tag in diesem Block sein
2. - letzter WochenBlock:
Zeige die nächsten Datums dann beginnend mit Montag wieder bis einschließlich Sonntag. Wenn beim letzten Wochenblock der letzte Sonntag bereits im nächsten Monat liegt, dann zeige nur noch die Tage bis zum letzten des ausgewählten Monats an.
Es gibt dann noch ein paar Abhängigkeiten, aber im Prinzip würde hier eine Lösung sehr helfen. Meine Lösung funktioniert leider nicht zu 100% -> aber vielleicht hilft es zum Verständnis meines Problems.
Vielen DANK
Für jeden Wochenblock habe ich je ein "StartWoche" sowie "EndWoche" FX Feld erstellt:
"StartWoche:"
if weekday(Firstmonth) < 7 and Firstmonth > 'Anmeldung Land von MH' then
Firstmonth
else
date('Anmeldung Land von MH')
end
----
"EndWoche"
let kWweek := 'fx_week1_verwaltung start';
let endmonat := date(year('Auswahl Betrachtungsmonat'), month('Auswahl Betrachtungsmonat') + 1, 1) - 1;
let tagimmonat := day(kWweek);
let auswahl := if day(kWweek) > 0 then
date(year(kWweek), month(kWweek) + 0, 0)
end;
let nextSunday := kWweek + if weekday(kWweek) < 7 then 6 else 13 end - weekday(kWweek);
if weekday(Firstmonth) < 7 and kWweek > Firstmonth then
if nextSunday > 'Abmeldung Land lt. Land-Abmeldung (Ist)' then
'Abmeldung Land lt. Land-Abmeldung (Ist)'
else
if nextSunday > endmonat then
endmonat
else
nextSundday
end
end
else
Abrechnung.NSonntag
end
8 Antworten
-
Hallo Bernhard. Was wäre im Idealfall Dein Wunsch für die Ausgabe des Scripts? Gruß Mirko
-
Hallo Bernhard, mir ist nicht klar, was mit den Tagesdaten der Wochenblöcke passieren soll. Deshalb hier einfach mal ein einfaches Beispiel, in dem die Daten wochenweise untereinander in ein Funktionsfeld geschrieben werden. Dabei bin ich davon ausgegangen, dass es zwei numerische Felder für 'Jahr' und 'Monat' gibt:
let myDay := date(Jahr, Monat, 0); let myLast := date(Jahr, Monat + 1, 0); let myWeek := 1; let myList := "Woche 1" + " "; while myDay < myLast do myDay := myDay + 1; myList := myList + format(myDay, "ddd, DD.MM.YYYY") + " "; if weekday(myDay) = 6 then myWeek := myWeek + 1; myList := myList + "Woche " + text(myWeek) + " " end end; myList
-
vielen Dank für die rasche Antwort:
Das Ergebnis soll als Ansicht einer bestehenden Tabelle angezeigt werden.
Beginnend mit
1. Block alle Tage bis Sonntag, dann
2. Block alle Tage ab Montag
3. Block alle Tage ab Montag
4. Block alle Tage ab Montag
5. Block alle Tage ab Montag
6. Block restlichen Tage in dem Monat in der letzten Woche (manche Monate haben 6 Wochen wenn man vom 01. Sonntag im Monat ausgeht.Anbei ein Anhang wie das aussehen sollte :)
-
Hallo planlox. pro,
vielen herzlichen Dank für deine super Hilfe und Bemühungen.Das mit den vielen Funktionsfelder ist korrekt, ich konnte es bisher noch nicht anders lösen. Aus diesen vielen Felder habe ich derzeit eine View gebaut, die dann mit Hilfstabellen ausgedruckt werden kann.
Ich muß keine neuen Werte in einer neuen Tabelle… generieren, es geht darum vorhandene Werte in den jeweilig beschriebenen Wochenzeitblöcken zusammenzufassen bzw. über eine View so in den einzelnen Blöcken Wochenweise darstellen.
Situation:
Alle bereits vorhandenen Datensätze besitzen ein Datumsfeld. Ich muß jetzt „nur“ eine View bauen, die dann aus diesen Datensätzen, je nach BetrachtungsMonat der view - die vorhandenen Daten aus der Quelle in den einzelnen Wochenblöcken darstellen.
In dieser Darstellung erfolgen dann innerhalb dieser Wochenblöcke - Berechnungen…Meine Lösung mit den vielen Funktionsfelder funktioniert denke ich mittlerweile, ist aber gar nicht elegant, deshalb sind deine Vorschläge natürlich auf einem ganz anderen Level :).
Hier mein Code, so wie es jetzt läuft, mit dem Beispiel „Woche1 Start“ und Woche1 Stop“ usw. Das Ergebnis sieht dann so wie im Screenshot weiter oben aus.
Code:
Woche1 Start:
let x := if Abrechnung.Firstmonth >= 'Entlassung laut Bescheid' then
true
end;
if weekday(Abrechnung.Firstmonth) < 7 and Abrechnung.Firstmonth > 'Anmeldung Land von MH' and x != true then
Abrechnung.Firstmonth
else
if 'fx_Entlassung laut Bescheid minus eins' < Abrechnung.Firstmonth then
date("")
else
date('Anmeldung Land von MH')
end——-
endWoche1 Ende:
let kWweek := 'fx_week1 verwaltung start';
let anfangmonat := Abrechnung.Firstmonth;
let endmonat := date(year(Abrechnung.'Auswahl Betrachtungsmonat'), month(Abrechnung.'Auswahl Betrachtungsmonat') + 1, 1) - 1;
let nextSunday := kWweek + if weekday(kWweek) < 7 then 6 else 13 end - weekday(kWweek);
let tagimmonat := day(kWweek);
if weekday(anfangmonat) < 7 and kWweek > anfangmonat then
if nextSunday > 'Entlassung laut Bescheid' - 1 and < endmonat then
'fx_Entlassung laut Bescheid minus eins'
else
if nextSunday > endmonat then
endmonat
else
if nextSunday > endmonat or nextSunday > 'fx_Entlassung laut Bescheid minus eins'
then
'fx_Entlassung laut Bescheid minus eins'
else
nextSunday
end
end
end
else
let check := Asyl_Abrechnung.NSonntag;
if kWweek = null then
date("")
else
if Abrechnung.NSonntag < 'Entlassung laut Bescheid' then
Abrechnung.NSonntag
else
if kWweek <= 'fx_Entlassung laut Bescheid minus eins' then
'fx_Entlassung laut Bescheid minus eins'
else
nextSunday
end
end
end
end——
Woche2 Start:
let kWweek := 'fx_week1 verwaltung ende';
let endmonat := date(year(Abrechnung.'Auswahl Betrachtungsmonat'), month(Abrechnung.'Auswahl Betrachtungsmonat') + 1, 1) - 1;
if weekday(kWweek) < 7 then
if 'Entlassung laut Bescheid' <= kWweek + 1 then
date("")
else
if kWweek + 1 <= endmonat then
kWweek + 1
end
end
else
if 'fx_Entlassung laut Bescheid minus eins' < Abrechnung.Firstmonth then
date("")
else
date('Anmeldung Land von MH')
end
end——
„Woche2 Ende“ = wie Woche1 nur mit „Woche2 Start“
…
-
So sieht der Druck aus
Content aside
- vor 2 JahrenZuletzt aktiv
- 8Antworten
- 93Ansichten
-
2
Folge bereits