"""Benefits data-entry tab.""" from __future__ import annotations import streamlit as st from app.components.tables import df_to_values, value_editor from app.pages._helpers import report_meta, safe from core.tei_client import TEIClient def render(client: TEIClient, tool: dict) -> None: st.header("💰 Benefits") public_id = tool["id"] report = report_meta(client, tool) analysis_years = int(report.get("analysis_period_years") or 3) fields = safe(client.list_fields, report.get("id"), "benefits") or [] values = [v for v in safe(client.get_values, public_id) or [] if v.get("table") == "benefits"] if not fields: st.info("This report template has no benefit fields defined.") return edited = value_editor( "benefits", fields, values, analysis_years=analysis_years, key=f"benefits_editor_{public_id}", ) col1, col2 = st.columns([1, 4]) with col1: if st.button("💾 Save benefits", use_container_width=True): payload = df_to_values(edited, "benefits", analysis_years) result = safe(client.update_values, public_id, payload) if result is not None: st.success(f"Saved {len(payload)} benefit values.") st.cache_data.clear() with col2: st.caption( "Values are saved as nominal annual amounts. Risk adjustments are " "applied at calculate time. Use the Recalculate button in the " "sidebar after saving to refresh the summary." )