diff --git a/delfland/ppo-insight/data.db b/delfland/ppo-insight/data.db index eea89aa..c2b2936 100644 Binary files a/delfland/ppo-insight/data.db and b/delfland/ppo-insight/data.db differ diff --git a/delfland/ppo-insight/ppo_insight.py b/delfland/ppo-insight/ppo_insight.py index 653e249..3221882 100644 --- a/delfland/ppo-insight/ppo_insight.py +++ b/delfland/ppo-insight/ppo_insight.py @@ -164,6 +164,8 @@ def show_result(): today = datetime.today().strftime('%Y-%m-%d') x_str = request.form.get("selected_date") + keuze_dagen_omrekenen = request.form.get( + 'keuze_dagen_omrekenen', 'D') # Default is "D" (Dagen) if x_str: try: @@ -173,7 +175,7 @@ def show_result(): return redirect(url_for("upload_file")) # **Met datum -> gebruik extrapolatie** - result = get_extrapolation(x) + result = get_extrapolation(x, keuze_dagen_omrekenen) else: # **Zonder datum -> toon ruwe databasegegevens** with sqlite3.connect(DATABASE) as conn: @@ -185,13 +187,14 @@ def show_result(): result = [dict(zip(columns, row)) for row in rows] # Zet om naar dicts voor weergave - return render_template("resultaat.html", result=result, selected_date=x_str, today=today) + return render_template("resultaat.html", result=result, selected_date=x_str, today=today, + keuze_dagen_omrekenen=keuze_dagen_omrekenen) -def get_extrapolation(x): +def get_extrapolation(x, keuze_dagen_omrekenen): if x is None: return [] - + print(f"keuze {keuze_dagen_omrekenen}") today = datetime.today() with sqlite3.connect(DATABASE) as conn: cursor = conn.cursor() @@ -205,27 +208,36 @@ def get_extrapolation(x): for row in raw_data: vervaldatum = row.get("Vervaldatum") + uom = row.get("UOM") frequentie = row.get("Frequentie", 0) + print(f"processing {vervaldatum} met {frequentie} uom{uom}") if vervaldatum: extrapolated_dates = extrapolate_vervaldatum( - vervaldatum, uom, frequentie, x) + vervaldatum, uom, frequentie, x, keuze_dagen_omrekenen) + + if not extrapolated_dates: + print( + f"Geen extrapolatie-data voor vervaldatum: {vervaldatum}") + else: + print(f"Aantal extrapolaties: {len(extrapolated_dates)}") + for i, date in enumerate(extrapolated_dates): - if date: - new_row = row.copy() - begindatum = pd.to_datetime(date) - new_row["Overtijd"] = "Ja" if begindatum.date( - ) <= today.date() else "Nee" + new_row = row.copy() + begindatum = pd.to_datetime(date) + new_row["Overtijd"] = "Ja" if begindatum.date( + ) <= today.date() else "Nee" - new_row["Begindatum"] = date - result.append(new_row) + new_row["Begindatum"] = date + print(f"Added row: {date}") + result.append(new_row) return remove_duplicates(result) # Dubbele records verwijderen def remove_duplicates(data, unique_keys=None): - + print("removing duplicates") if not data: return data @@ -250,7 +262,8 @@ def remove_duplicates(data, unique_keys=None): return unique_data -def extrapolate_vervaldatum(vervaldatum, uom, frequentie, x): +def extrapolate_vervaldatum(vervaldatum, uom, frequentie, x, keuze_dagen_omrekenen="D"): + print(f"keuze {keuze_dagen_omrekenen}") vervaldatum = pd.to_datetime(str(vervaldatum), errors="coerce") if pd.isna(vervaldatum): return [] @@ -258,10 +271,19 @@ def extrapolate_vervaldatum(vervaldatum, uom, frequentie, x): result = [] while vervaldatum <= x: result.append(vervaldatum.strftime("%Y-%m-%d")) + if uom == "D": - # vervaldatum += pd.DateOffset(days=frequentie) - # vervaldatum += pd.DateOffset(weeks=frequentie // 7) - vervaldatum += pd.DateOffset(months=frequentie // 30) + if keuze_dagen_omrekenen == "D": + vervaldatum += pd.DateOffset(days=frequentie) + elif keuze_dagen_omrekenen == "W": + vervaldatum += pd.DateOffset(weeks=frequentie//7) + elif keuze_dagen_omrekenen == "M": + vervaldatum += pd.DateOffset(months=frequentie//30) + # Als er nog restfrequentie is (zoals 28 dagen), voeg dan extra maand toe. + if frequentie % 30 > 0: + vervaldatum += pd.DateOffset(months=1) + else: + break # Onbekende keuze, stop de loop elif uom == "W": vervaldatum += pd.DateOffset(weeks=frequentie) elif uom == "M": diff --git a/delfland/ppo-insight/templates/resultaat.html b/delfland/ppo-insight/templates/resultaat.html index b48bab4..172b233 100644 --- a/delfland/ppo-insight/templates/resultaat.html +++ b/delfland/ppo-insight/templates/resultaat.html @@ -22,7 +22,24 @@
- +
+
+
+ + +
+
+ + +
+
+ + +
+