diff --git a/scripts/match_payments.py b/scripts/match_payments.py index 76beace..96f9f63 100644 --- a/scripts/match_payments.py +++ b/scripts/match_payments.py @@ -249,16 +249,31 @@ def fetch_sheet_data(spreadsheet_id: str, credentials_path: str) -> list[dict]: def get_val(idx): return row[idx] if idx != -1 and idx < len(row) else "" + def get_str(idx): + v = get_val(idx) + if isinstance(v, float) and v.is_integer(): + return str(int(v)) + return str(v) + + def get_float(idx): + v = get_val(idx) + if isinstance(v, (int, float)): + return float(v) + try: + return float(str(v).strip()) + except (ValueError, TypeError): + return 0.0 + tx = { "date": format_date(get_val(idx_date)), - "amount": get_val(idx_amount), + "amount": get_float(idx_amount), "manual_fix": get_val(idx_manual), "person": get_val(idx_person), "purpose": get_val(idx_purpose), "inferred_amount": get_val(idx_inferred_amount), "sender": get_val(idx_sender), - "vs": get_val(idx_vs), - "message": get_val(idx_message), + "vs": get_str(idx_vs), + "message": get_str(idx_message), "bank_id": get_val(idx_bank_id), "sync_id": get_val(idx_sync_id), } diff --git a/scripts/views.py b/scripts/views.py index 05e5055..c63f67e 100644 --- a/scripts/views.py +++ b/scripts/views.py @@ -310,8 +310,9 @@ def build_juniors_view_model( cell_text = "-" amount_to_pay = 0 - if expected == "?" or (isinstance(expected, int) and expected > 0): - if expected == "?": + is_unknown = original_expected == "?" + if is_unknown or (isinstance(expected, int) and expected > 0): + if is_unknown: status = "empty" cell_text = f"?{count_str}" elif paid >= expected: @@ -339,7 +340,7 @@ def build_juniors_view_model( status = "surplus" cell_text = f"PAID {paid}" - if (isinstance(expected, int) and expected > 0) or paid > 0: + if (not is_unknown and isinstance(expected, int) and expected > 0) or paid > 0: tooltip = f"Received: {paid}, Expected: {expected}" else: tooltip = ""