"""
patch_vorlage.py – Einmalig ausführen um Mitglieder_Vorlage.xlsx zu aktualisieren.
Fügt die optionalen Spalten 'Rechnungsname' und 'Steuersatz' hinzu.

Ausführen:  python patch_vorlage.py
"""
from pathlib import Path
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.comments import Comment

VORLAGE = Path(__file__).parent / "sepa_templates" / "Mitglieder_Vorlage.xlsx"

wb = load_workbook(str(VORLAGE))
ws = wb.active

# Letzte belegte Spalte finden
max_col = ws.max_column
while max_col > 1 and ws.cell(1, max_col).value is None:
    max_col -= 1

# Neue Spalten-Positionen
col_rechnungsname = max_col + 1
col_steuersatz    = max_col + 2

# Stil für Pflicht-Header (aus bestehenden Spalten übernehmen)
ref_cell = ws.cell(1, 1)
ref_font    = ref_cell.font.copy() if ref_cell.font else Font(bold=True)
ref_fill    = ref_cell.fill
ref_align   = ref_cell.alignment or Alignment(horizontal="center", vertical="center")
ref_border  = ref_cell.border

# Optionale Spalten etwas heller (hellblauer Hintergrund statt grün/gelb)
opt_fill = PatternFill("solid", fgColor="DCE6F1")   # hell blau-grau
opt_font = Font(bold=True, color="1F3864")

thin = Side(style="thin", color="BFBFBF")
opt_border = Border(left=thin, right=thin, top=thin, bottom=thin)

def set_header(col, label, fill, font):
    c = ws.cell(1, col)
    c.value = label
    c.font = font
    c.fill = fill
    c.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)
    c.border = opt_border
    ws.column_dimensions[c.column_letter].width = 22

# Rechnungsname
set_header(col_rechnungsname, "Rechnungsname", opt_fill, opt_font)
c_rn = ws.cell(1, col_rechnungsname)
comment_rn = Comment(
    "Optional – Firmenname für die Rechnung.\n"
    "Wenn befüllt, erscheint dieser Name statt Vor-/Nachname.\n"
    "Beispiel: Bäckerei Huber GmbH",
    "EEG-Assistent"
)
comment_rn.width = 260
comment_rn.height = 80
c_rn.comment = comment_rn

# Steuersatz
set_header(col_steuersatz, "Steuersatz", opt_fill, opt_font)
c_st = ws.cell(1, col_steuersatz)
comment_st = Comment(
    "Optional – Umsatzsteuer des Mitglieds (Einspeisung).\n"
    "Erlaubte Werte:\n"
    "  leer / 0 = Privatperson (kein Hinweis)\n"
    "  20       = Unternehmer → Reverse Charge §19 Abs. 1c UStG\n"
    "  13       = Pauschalierter Landwirt → Reverse Charge 13%",
    "EEG-Assistent"
)
comment_st.width = 320
comment_st.height = 100
c_st.comment = comment_st

wb.save(str(VORLAGE))
print(f"✓ Vorlage aktualisiert: {VORLAGE}")
print(f"  Neue Spalten: {c_rn.column_letter} = Rechnungsname, {c_st.column_letter} = Steuersatz")
