Kalenderwochen berechnen
By Lars Mäurer on 23. Juni 2023
BeginnerClient Script zum Errechnen der Kalenderwoche:
Der Nutzer trägt irgendwo ein Datum ein, wir möchten gern die entsprechende Kalenderwoche ermitteln...
Beispiel-Script:
frappe.ui.form.on('Schichtplanung Dokument', {
validate:function(frm){
frm.set_value('kalenderwoche',moment(frm.doc.date).isoWeek())
frm.set_value('date_montag_2',frm.doc.date)
frm.set_value('date_dienstag',frappe.datetime.add_days(frm.doc.date, 1))
(...)
}
})
Entscheidend ist die Funktion isoWeek(), siehe Beispiel-Zeile 4:
frm.set_value('kalenderwoche',moment(frm.doc.date).isoWeek())
...welche tatsächlich die deutsche (!) Kalenderwoche ermittelt. Kalenderwochen in anderen Teilen der Welt können abweichen, USA ist z.B. im Allgemeinen immer eine Woche weiter. Im ERPNext wird aber korrekt die deutsche Kalenderwoche ausgerechnet.
validate:function(frm)
"validate" sorgt dafür, dass die Kalenderwoche ausgerechnet wird, bevor "Save" ausgelöst wird, die Kalenderwoche kann dann also auch zur automatischen Namensgebung einer Datei genutzt werden, weil der Wert der Variable schon vor dem Speichern da ist.
übrigens nebenbei:
die Funktion frappe.datetime.add_days macht genau das, was der Name sagt – es werden Tage zu einem Datum addiert:
Syntax: frappe.datetime.add_days(*Datum*, *Anzahl Tage, die addiert werden sollen*)
Weitere Artikel zum Customizing