#!/usr/bin/env python3
"""ZZP Opstartplan HHC — DOCX Generator v1.0"""

from docx import Document
from docx.shared import Inches, Cm, Pt, RGBColor, Emu
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.enum.section import WD_ORIENT
from docx.oxml.ns import qn, nsdecls
from docx.oxml import parse_xml
import os
from datetime import datetime

# === CONFIG ===
OUTPUT_PATH = "/root/projects/jg/2026-zzp-opstart-hhc/deliverables/ZZP_Opstartplan_HHC_v1.0.docx"
LOGO_PATH = "/root/projects/jg/assets/branding/jvg-logo-medium.png"
PRIMARY = RGBColor(0x00, 0x33, 0x66)
TEXT_DARK = RGBColor(0x1F, 0x2F, 0x37)
ACCENT = RGBColor(0x3B, 0x82, 0xF6)

doc = Document()

# === STYLES ===
style = doc.styles['Normal']
style.font.name = 'Calibri'
style.font.size = Pt(11)
style.font.color.rgb = TEXT_DARK
style.paragraph_format.space_after = Pt(6)
style.paragraph_format.line_spacing = 1.15

for level, size, bold in [(1, 18, True), (2, 14, True), (3, 12, True)]:
    h = doc.styles[f'Heading {level}']
    h.font.name = 'Calibri'
    h.font.size = Pt(size)
    h.font.bold = bold
    h.font.color.rgb = PRIMARY
    h.paragraph_format.space_before = Pt(18 if level == 1 else 12)
    h.paragraph_format.space_after = Pt(6)

# Page margins
for section in doc.sections:
    section.top_margin = Cm(2.5)
    section.bottom_margin = Cm(2.5)
    section.left_margin = Cm(2.5)
    section.right_margin = Cm(2.5)

# Header with logo
header = doc.sections[0].header
if os.path.exists(LOGO_PATH):
    hp = header.paragraphs[0]
    hp.alignment = WD_ALIGN_PARAGRAPH.RIGHT
    run = hp.add_run()
    run.add_picture(LOGO_PATH, width=Cm(4.5), height=Cm(4.04))

# Footer
footer = doc.sections[0].footer
fp = footer.paragraphs[0]
fp.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = fp.add_run("JG Consultancy | Safety • Governance • Advisory | © 2026")
run.font.size = Pt(8)
run.font.color.rgb = RGBColor(0x6B, 0x72, 0x80)

def add_table(doc, headers, rows, col_widths=None):
    table = doc.add_table(rows=1 + len(rows), cols=len(headers))
    table.style = 'Light Grid Accent 1'
    table.alignment = WD_TABLE_ALIGNMENT.CENTER
    # Header row
    for i, h in enumerate(headers):
        cell = table.rows[0].cells[i]
        cell.text = h
        for p in cell.paragraphs:
            p.alignment = WD_ALIGN_PARAGRAPH.LEFT
            for r in p.runs:
                r.font.bold = True
                r.font.size = Pt(10)
                r.font.color.rgb = PRIMARY
    # Data rows
    for ri, row in enumerate(rows):
        for ci, val in enumerate(row):
            cell = table.rows[ri+1].cells[ci]
            cell.text = str(val)
            for p in cell.paragraphs:
                for r in p.runs:
                    r.font.size = Pt(10)
    return table

def add_checkbox_list(doc, items):
    for item in items:
        p = doc.add_paragraph()
        p.paragraph_format.space_after = Pt(3)
        p.paragraph_format.left_indent = Cm(0.5)
        run = p.add_run(f"☐  {item}")
        run.font.size = Pt(10)

# ============================================================
# TITELPAGINA
# ============================================================
for _ in range(4):
    doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("ZZP OPSTARTPLAN")
run.font.size = Pt(28)
run.font.bold = True
run.font.color.rgb = PRIMARY

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("HHC Interim Manager & Consultancy")
run.font.size = Pt(16)
run.font.color.rgb = ACCENT

doc.add_paragraph()

p = doc.add_paragraph()
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
run = p.add_run("Van HSEQ naar HHC — Strategisch Opstartplan\nvoor Zelfstandig Ondernemerschap in de Zorgsector")
run.font.size = Pt(12)
run.font.italic = True
run.font.color.rgb = TEXT_DARK

for _ in range(4):
    doc.add_paragraph()

# Meta table
meta = [
    ["Project", "ZZP Opstart HHC Interim Manager"],
    ["Type", "Strategisch Opstartplan"],
    ["Auteur", "Kas — Director of Operations"],
    ["Opdrachtgever", "Jorick Gemert"],
    ["Versie", "1.0"],
    ["Datum", "30 april 2026"],
    ["Status", "DEFINITIEF"],
    ["Classificatie", "Vertrouwelijk — JG Consultancy"],
]
add_table(doc, ["Veld", "Waarde"], meta)

doc.add_page_break()

# ============================================================
# HOOFDSTUK 1: INTRODUCTIE & DOEL
# ============================================================
doc.add_heading("1. Introductie & Doel", level=1)

doc.add_paragraph(
    "Dit document is het strategisch opstartplan voor Jorick Gemert, die per mei/juni 2026 "
    "start als zelfstandig ondernemer (ZZP'er) in de rol van HHC-deskundige en HHC Interim Manager. "
    "Het plan deckt alle juridische, fiscale, administratieve en commerciële aspecten van het "
    "oprichten en exploiteren van een eenmanszaak in de zorg- en healthconsultancy sector."
)

doc.add_heading("1.1 Achtergrond", level=2)
doc.add_paragraph(
    "Jorick Gemert is een ervaren HSEQ-professional met expertise in veiligheidsmanagement, "
    "compliance, en governance binnen de olie-, gas-, petrochemie- en offshore sector. Met deze "
    "brede basis in risicomanagement en kwaliteitszaken, verbreedt hij zijn werkveld naar de "
    "Hygiëne, Health & Care (HHC) sector — waar vergelijkbare competentiegebieden (veiligheid, "
    "kwaliteit, compliance, risicobeheersing) direct toepasbaar zijn."
)

doc.add_heading("1.2 Doelstelling", level=2)
doc.add_paragraph(
    "Binnen 8 weken een volledig operationele ZZP-onderneming oprichten, inclusief:"
)
bullets = [
    "KvK-inschrijving en rechtsvorm vaststelling",
    "Fiscale structuur en belastingregelingen optimaliseren",
    "Verzekeringen afsluiten (AVB, Beroepsaansprakelijkheid, AOV)",
    "Administratie en boekhoudsystematiek inrichten",
    "Contracten, voorwaarden en modelovereenkomsten opstellen",
    "Acquisitie starten en eerste opdrachten binnenhalen",
    "Volledige compliance met Wet DBA, AVG, Arbowet, en Wkkgv",
]
for b in bullets:
    p = doc.add_paragraph(b, style='List Bullet')
    for r in p.runs:
        r.font.size = Pt(11)

doc.add_heading("1.3 Scope", level=2)
doc.add_paragraph(
    "Dit plan is specifiek gericht op de Nederlandse situatie 2026. De inhoud is gebaseerd op "
    "actuele wetgeving en fiscale regelingen. Raadpleeg altijd een belastingadviseur of "
    "boekhouder voor jouw specifieke situatie [1]."
)

# ============================================================
# HOOFDSTUK 2: RECHTSVORM & KVK INSCHRIJVING
# ============================================================
doc.add_heading("2. Rechtsvorm & KvK-Inschrijving", level=1)

doc.add_heading("2.1 Rechtsvormkeuze: Eenmanszaak vs. BV", level=2)
doc.add_paragraph(
    "Voor een startende ZZP'er in de consultancy zijn er twee relevante rechtsvormen. "
    "De eenmanszaak is veruit de meest gekozen vorm vanwege eenvoud en lage kosten."
)

add_table(doc,
    ["Aspect", "Eenmanszaak", "BV"],
    [
        ["Oprichtingskosten", "€50 (KvK)", "€750–€1.500 (notaris + KvK)"],
        ["Aansprakelijkheid", "Persoonlijk (volledig)", "Beperkt tot bedrijfsvermogen"],
        ["Belasting", "Inkomstenbelasting (Box 1)", "Vennootschapsbelasting (15–25,8%)"],
        ["Zelfstandigenaftrek", "✅ Ja", "❌ Nee"],
        ["Startersaftrek", "✅ Ja (eerste 3 jaar)", "❌ Nee"],
        ["MKB-winstvrijstelling", "✅ Ja", "❌ Nee"],
        ["Administratie", "Eenvoudig", "Compleet (jaarrekening, DGA)"],
        ["Bestuur", "Eigenaar = bestuurder", "Aandeelhouders + bestuur"],
        ["Flexibiliteit", "Hoog", "Minder flexibel"],
        ["Advies", "✅ AANBEVOLEN voor start", "Overwegen bij >€150.000 winst"],
    ]
)
doc.add_paragraph()

doc.add_paragraph(
    "ADVIES: Start als eenmanszaak. De fiscale voordelen (zelfstandigenaftrek, startersaftrek, "
    "MKB-winstvrijstelling) compenseren ruim de persoonlijke aansprakelijkheid, zeker in de "
    "startfase. Bij structureel hoge winsten (>€150.000/jaar) kan conversie naar BV overwogen worden [2]."
)

doc.add_heading("2.2 Stappenplan KvK-Inschrijving", level=2)
steps = [
    "Controleer handelsnaam beschikbaarheid via kvk.nl/handelsregister",
    "Bereid voor: geldig ID (paspoort/rijbewijs + IDINbankrekening)",
    "Inschrijving via kvk.nl (digitaal met IDIN) of fysiek bij Kvk-kantoor",
    "Kosten: €50 eenmalig (inschrijfgeld Handelsregister)",
    "KvK-nummer ontvangen (direct beschikbaar na inschrijving)",
    "Ontvangst Uittreksel Handelsregister (per post, ~5 werkdagen)",
    "Melding aan Belastingdienst volgt automatisch via KvK",
]
for i, s in enumerate(steps, 1):
    doc.add_paragraph(f"{i}. {s}")

doc.add_heading("2.3 SBI-Codes", level=2)
doc.add_paragraph("Selecteer de volgende SBI-codes (Standaard Bedrijfsindeling) bij inschrijving:")
add_table(doc,
    ["SBI-code", "Omschrijving", "Relevantie"],
    [
        ["70221", "Adviesbureaus op het gebied van management, bedrijfsvoering en techniek", "Primaire activiteit"],
        ["74901", "Advies- en ingenieursbureaus (overig)", "HSEQ / HHC consultancy"],
        ["78200", "Uitzendbureaus en intermediairs voor tijdelijk werk", "Interim management"],
        ["86901", "Paramedische praktijken en overige gezondheidszorg", "HHC gezondheidsadvies"],
    ]
)

doc.add_heading("2.4 Handelsnaam & Bescherming", level=2)
doc.add_paragraph(
    "Kies een handelsnaam die uniek is en niet inbreuk maakt op bestaande merknamen. "
    "Controleer via: KvK Handelsregister, Benelux-Bureau voor de Intellectuele Eigendom (BOIP), "
    "en domeinnaam beschikbaarheid. Overweeg 'JG Consultancy' of 'Jorick van Gemert HHC Consultancy' [3]."
)

# ============================================================
# HOOFDSTUK 3: BELASTING & FISCALE ZAKEN
# ============================================================
doc.add_heading("3. Belasting & Fiscale Zaken", level=1)

doc.add_heading("3.1 Inkomstenbelasting (Box 1)", level=2)
doc.add_paragraph(
    "Als eenmanszaak wordt de winst belast in Box 1 van de inkomstenbelasting. "
    "De tarieven voor 2026 zijn (indicatief, controleer belastingdienst.nl):"
)
add_table(doc,
    ["Schaal", "Belastbaar inkomen", "Tarief"],
    [
        ["Schijf 1", "0 – €75.518", "36,97%"],
        ["Schijf 2", "Boven €75.518", "49,50%"],
    ]
)

doc.add_heading("3.2 Zelfstandigenaftrek 2026", level=2)
doc.add_paragraph("Voorwaarden voor zelfstandigenaftrek:")
bullets = [
    "Minimaal 1.225 uren per jaar besteed aan het ondernemen (urencriterium)",
    "In de startfase: minimaal 800 uren, waarvan 575 uren in het nieuwe bedrijf",
    "Meer dan één opdrachtgever (voorkomt schijnzelfstandigheid)",
    "Je voert het bedrijf zelfstandig (geen dienstbetrekking)",
]
for b in bullets:
    doc.add_paragraph(b, style='List Bullet')

doc.add_paragraph(
    "De zelfstandigenaftrek bedraagt in 2026 naar verwachting circa €12.420 (controleer "
    "belastingdienst.nl voor het exacte bedrag). Dit bedrag wordt van de winst afgetrokken [4]."
)

doc.add_heading("3.3 Startersaftrek", level=2)
doc.add_paragraph(
    "In de eerste drie jaar van je onderneming kom je in aanmerking voor een extra aftrekpost: "
    "de startersaftrek. In 2025 bedroeg deze €2.119; het bedrag voor 2026 wordt in het voorjaar "
    "vastgesteld (verwacht vergelijkbaar). Dit bedrag komt bovenop de reguliere zelfstandigenaftrek [4]."
)

doc.add_heading("3.4 MKB-winstvrijstelling", level=2)
doc.add_paragraph(
    "Na toepassing van de zelfstandigenaftrek en startersaftrek mag je nog eens 14,19% "
    "(2025-bedrag; 2026 wordt bevestigd) van de resterende winst vrijstellen. Dit is de "
    "MKB-winstvrijstelling (ook wel ondernemersaftrek genoemd) [4]."
)

doc.add_heading("3.5 Kleineondernemersregeling (KOR) voor BTW", level=2)
doc.add_paragraph(
    "Als je omzet (exclusief btw) per jaar onder de €20.000 blijft, mag je de "
    "Kleineondernemersregeling toepassen. Je hoeft dan geen btw in rekening te brengen "
    "en aan te geven. Nadeel: je kunt ook geen btw terugvragen op inkoopkosten. "
    "Voor een HHC-consultancy met verwachte omzet >€50.000 is de KOR NIET relevant — "
    "je valt er buiten en moet regulier btw-aangifte doen [5]."
)

doc.add_heading("3.6 BTW-aangifte", level=2)
add_table(doc,
    ["Aspect", "Details"],
    [
        ["Frequentie", "Per kwartaal (standaard)"],
        ["Tarief", "21% (standaard) op consultancy-diensten"],
        ["Deadline", "Uiterlijk de laatste dag van de maand volgend op het kwartaal"],
        ["Instorting", "Via Mijn Belastingdienst voor Ondernemers"],
        ["Betaling", "Binnen 1 maand na aangifte (automatische incasso mogelijk)"],
        ["Voorlopige teruggaaf", "Ja, bij reguliere btw-aangifte"],
    ]
)

doc.add_heading("3.7 Voorlopige Aanslag & Jaaraangifte", level=2)
doc.add_paragraph(
    "Na inschrijving bij de KvK stuurt de Belastingdienst automatisch een uitnodiging voor "
    "de voorlopige aanslag inkomstenbelasting. Dit is een schatting op basis van je verwachte "
    "winst. Na afloop van het boekjaar doe je de definitieve jaaraangifte. Eventuele meebetaalde "
    "belasting wordt verrekend of terugbetaald [6]."
)

doc.add_heading("3.8 Voorbeeldberekening — Bruto naar Netto", level=2)
doc.add_paragraph("Scenario: Jaaromzet €80.000 als startende HHC-consultancy in 2026:")
add_table(doc,
    ["Post", "Bedrag", "Toelichting"],
    [
        ["Bruto omzet", "€80.000", "Facturatie exclusief btw"],
        ["Zakelijke kosten", "–€12.000", "Boekhouder, verzekeringen, auto, kantoor, software"],
        ["Winst vóór aftrek", "€68.000", ""],
        ["Zelfstandigenaftrek", "–€12.420", "Urencriterium gehaald"],
        ["Startersaftrek", "–€2.119", "Eerste 3 jaar"],
        ["Winst na aftrek", "€53.461", ""],
        ["MKB-winstvrijstelling (14,19%)", "–€7.586", "14,19% van €53.461"],
        ["Belastbaar inkomen", "€45.875", ""],
        ["Belasting (schaal 1: 36,97%)", "€16.962", "Effectief tarief ~25% van winst"],
        ["Netto inkomen (indicatief)", "€51.038", "Winst – belasting = besteedbaar"],
    ]
)
doc.add_paragraph()
p = doc.add_paragraph()
run = p.add_run("Effectief belastingtarief: ~25% van de winst (dankzij aftrekposten)")
run.font.bold = True
run.font.color.rgb = PRIMARY
doc.add_paragraph(
    "Let op: Dit is een indicatieve berekening. Raadpleeg een boekhouder voor jouw exacte situatie. "
    "Heffingskorting en algemene heffingskorting zijn hierin niet meegenomen."
)

# ============================================================
# HOOFDSTUK 4: VERZEKERINGEN
# ============================================================
doc.add_heading("4. Verzekeringen", level=1)

doc.add_heading("4.1 Overzicht Verplichte en Aanbevolen Verzekeringen", level=2)
add_table(doc,
    ["Verzekering", "Status", "Kosten/jaar (indicatief)", "Toelichting"],
    [
        ["Zorgverzekering (basis)", "VERPLICHT", "€1.500–€2.000", "Algemeen Verplichte Zorgverzekering"],
        ["Aansprakelijkheid (AVB)", "Sterk aanbevolen", "€150–€350", "Schade aan derden of eigendommen"],
        ["Beroepsaansprakelijkheid", "Sterk aanbevolen", "€300–€800", "Adviesfouten, verkeerd advies"],
        ["AOV (Arbeidsongeschiktheid)", "Aanbevolen (verplicht 2030)", "€1.200–€3.000", "Inkomensbescherming bij ziekte"],
        ["Rechtsbijstand", "Aanbevolen", "€200–€400", "Juridische geschillen"],
        ["Aanvullende zorgverzekering", "Optioneel", "€300–€800", "Fysiotherapie, alternatieve geneeswijzen"],
    ]
)

doc.add_heading("4.2 AOV — Arbeidsongeschiktheidsverzekering", level=2)
doc.add_paragraph(
    "De verplichte AOV voor ZZP'ers is uitgesteld tot 2030. Desondanks is het sterk aanbevolen "
    "om nu al een AOV af te sluiten. Als zelfstandige heb je geen vangnet bij ziekte — geen ZW-uitkering, "
    "geen doorbetaling. Een AOV voorziet in maandelijkse uitkering (tot 80% van je inkomen) bij "
    "arbeidsongeschiktheid. Premie is aftrekbaar als zakelijke kosten [7]."
)

doc.add_heading("4.3 Kostenoverzicht Verzekeringen", level=2)
add_table(doc,
    ["Maandelijks", "Minimaal", "Optimaal"],
    [
        ["Basisverplicht", "€125–€167", "€125–€167"],
        ["AVB + Beroeps", "€38–€96", "€38–€96"],
        ["AOV", "—", "€100–€250"],
        ["Rechtsbijstand", "—", "€17–€33"],
        ["Totaal minimaal", "€163–€263", ""],
        ["Totaal optimaal", "", "€280–€546"],
    ]
)

# ============================================================
# HOOFDSTUK 5: BANK & FINANCIËN
# ============================================================
doc.add_heading("5. Bank & Financiën", level=1)

doc.add_heading("5.1 Zakelijke Betaalrekening", level=2)
doc.add_paragraph("Hoewel een eenmanszaak geen wettelijke verplichting heeft tot een zakelijke rekening, is dit sterk aanbevolen voor:")
bullets = [
    "Scheiding privé- en zakelijk verkeer (Belastingdienst eist duidelijkheid)",
    "Professionele uitstraling (bedrijfsnaam op factuur)",
    "Boekhoudkundige overzichtelijkheid",
    "Mogelijkheid tot zakelijk sparen en krediet",
]
for b in bullets:
    doc.add_paragraph(b, style='List Bullet')

add_table(doc,
    ["Bank", "Kosten/maand", "Voordeel"],
    [
        ["ING Zakelijk", "€9–€15", "Dekking heel NL, ING-app"],
        ["Rabobank Zakelijk", "€8–€12", "Sterke agrarische/zorg sector"],
        ["ABN AMRO", "€9–€15", "Good app, integratie boekhoudpakketten"],
        ["Knab Zakelijk", "€7–€10", "Goedkoop, online-first"],
        ["Bunq", "€0–€9", "Volledig digitaal, geen papieren post"],
        ["Triodos", "€8–€12", "Duurzaam, ethisch bankieren"],
    ]
)

doc.add_heading("5.2 Facturatie — Wettelijke Eisen", level=2)
doc.add_paragraph("Een factuur MOET bevatten (art. 35a Wet OB 1968):")
items = [
    "Naam en adres van jouw onderneming",
    "KvK-nummer",
    "BTW-nummer (ontvang je automatisch na KvK-inschrijving)",
    "Factuurnummer (opeenvolgend, zonder gaten)",
    "Factuurdatum",
    "Naam en adres van de opdrachtgever",
    "Omschrijving van de geleverde diensten",
    "Datum of periode van levering",
    "BTW-tarief (21%) en BTW-bedrag",
    "Totaalbedrag (inclusief en exclusief BTW)",
    "Betalingsvoorwaarden en uiterste betaldatum",
]
for i, item in enumerate(items, 1):
    doc.add_paragraph(f"{i}. {item}")

doc.add_heading("5.3 Liquiditeitsbuffer", level=2)
doc.add_paragraph(
    "Bouw een buffer op van minimaal 3–6 maanden vaste lasten voordat je fulltime ZZP gaat. "
    "Dit dekt: zorgverzekering, huur/hypotheek, auto, verzekeringen, belasting-aanslagen. "
    "Richtlijn: minimaal €10.000–€15.000 bij aanvang [8]."
)

doc.add_heading("5.4 Boekhoudsoftware", level=2)
add_table(doc,
    ["Software", "Kosten/maand", "Geschikt voor"],
    [
        ["MoneyMonk", "€15–€25", "ZZP starters, eenvoudig, inclusief btw-aangifte"],
        ["e-Boekhouden", "€12–€20", "Klein budget, btw-aangifte, facturatie"],
        ["Exact Online", "€30–€60", "Professioneel, uitgebreid, koppelingen"],
        ["WeFact", "€15–€25", "Facturatie en btw-aangifte"],
        ["Twinfield", "€25–€40", "Uitgebreide boekhouding"],
    ]
)
doc.add_paragraph()
doc.add_paragraph(
    "ADVIES: Start met MoneyMonk of e-Boekhouden. Laagdrempelig, inclusief btw-aangifte-koppeling "
    "met Belastingdienst, en voldoende voor een eenmanszaak [9]."
)

doc.add_heading("5.5 HERKOMSTcheck (Wwft)", level=2)
doc.add_paragraph(
    "Banken zijn verplicht een HERKOMSTcheck uit te voeren onder de Wet ter voorkoming van "
    "witwassen en financieren van terrorisme (Wwft). Houd ready: KvK-uittreksel, geldig ID, "
    "eventueel een korte beschrijving van je bedrijfsactiviteiten [10]."
)

# ============================================================
# HOOFDSTUK 6: WET- EN REGELGEVING
# ============================================================
doc.add_heading("6. Wet- en Regelgeving voor ZZP'ers", level=1)

doc.add_heading("6.1 Wet DBA — Deregulering Beoordeling Arbeidsrelaties", level=2)
doc.add_paragraph(
    "De Wet DBA regelt of een opdrachtgever loonheffing moet inhouden. Als jij als ZZP'er "
    "werkzaamheden verricht die in wezen een dienstbetrekking zijn, riskeert de opdrachtgever "
    "nakoming aansprakelijkheid. Om dit risico uit te sluiten: gebruik altijd een "
    "modelovereenkomst die is goedgekeurd door de Belastingdienst [11]."
)
doc.add_paragraph(
    "Belangrijk: De Wet DBA is in 2026 onderwerp van politieke discussie. Hanteer ALTIJD een "
    "modelovereenkomst en zorg voor voldoende ondernemerskenmerken (meerdere opdrachtgevers, "
    "eigen materiaal, vervanging mogelijk, eigen tarief) [11]."
)

doc.add_heading("6.2 9 Criteria voor Ondernemerschap (Belastingdienst)", level=2)
doc.add_paragraph("De Belastingdienst hanteert 9 criteria om te bepalen of je echt ondernemer bent:")
criteria = [
    "Aantal opdrachtgevers — meer dan 1 is beter",
    "Omzet en winst — structureel voldoende om van te leven",
    "Aanwezigheid van concurrentie — kun je door anderen vervangen worden",
    "Arbeidsuren — minimaal 1.225 uur per jaar",
    "Investeringen — in bedrijfsmiddelen, opleiding, marketing",
    "Reclame en acquisitie — actief klanten werven",
    "Zakelijke risico's — eigen verantwoordelijkheid voor winst/verlies",
    "Zakelijke organisatie — eigen administratie, boekhouding, correspondentie",
    "Onafhankelijkheid — geen gezagsverhouding met opdrachtgever",
]
for i, c in enumerate(criteria, 1):
    doc.add_paragraph(f"{i}. {c}")

doc.add_heading("6.3 Wkkgv — Wet Kwaliteitsregeling Zorg", level=2)
doc.add_paragraph(
    "De Wet kwaliteit, klachten en geschillen zorg (Wkkgv) stelt kwaliteitseisen aan "
    "zorgverleners en zorginstellingen. Als HHC-interim manager werk je mogelijk binnen "
    "zorginstellingen. Hoewel je als adviseur/manager geen directe patiëntenzorg verleent, "
    "moet je wel voldoen aan de kwaliteitsnormen van de instelling waar je werkt. Verzeker je "
    "ervan dat je opdrachtgever de Wkkgv-verantwoordelijkheid draagt [12]."
)

doc.add_heading("6.4 AVG/GDPR", level=2)
doc.add_paragraph(
    "Als ZZP'er verwerk je mogelijk persoonsgegevens (van opdrachtgevers, collega's, patiëntdata "
    "in zorgcontext). Je moet voldoen aan de Algemene Verordening Gegevensbescherming (AVG): "
    "verwerkingsgrondslag, verwerkersovereenkomst met opdrachtgever, beveiligingsmaatregelen, "
    "bewaartermijnen, en meldplicht bij datalekken (binnen 72 uur bij Autoriteit Persoonsgegevens) [13]."
)

doc.add_heading("6.5 Arbowet", level=2)
doc.add_paragraph(
    "Als ZZP'er ben je zelf verantwoordelijk voor je eigen arbeidsomstandigheden. De opdrachtgever "
    "moet een veilige werkplek bieden (Arbowet art. 3). Als je op locatie werkt (zorginstelling, "
    "kantoor), moet de opdrachtgever een RI&E hebben en je instructeren over lokale risico's. "
    "Voor jezelf: zorg voor een ergonomische werkplek, beheer werkdruk, en registreer incidenten [14]."
)

# ============================================================
# HOOFDSTUK 7: CONTRACTEN & OPDRACHTGEVERS
# ============================================================
doc.add_heading("7. Contracten & Opdrachtgevers", level=1)

doc.add_heading("7.1 Modelovereenkomst", level=2)
doc.add_paragraph(
    "Download een modelovereenkomst van belastingdienst.nl/modelovereenkomsten. Kies een "
    "model dat past bij jouw situatie (advies/consultancy). Laat de opdrachtgever deze "
    "vooraf tekenen. Dit beschermt jou en de opdrachtgever tegen Wet DBA-risico's [11]."
)

doc.add_heading("7.2 Algemene Voorwaarden", level=2)
doc.add_paragraph(
    "Stel algemene voorwaarden op en depot deze bij de KvK (kosten: circa €25). "
    "Deze voorwaarden regelen: betalingsvoorwaarden, aansprakelijkheidsbeperking, "
    "intellectueel eigendom, geheimhouding, ontbindingsgronden, en geschillenbeslechting [3]."
)

doc.add_heading("7.3 Tariefstelling — HHC Consultancy 2026", level=2)
add_table(doc,
    ["Type", "Range 2026", "Gemiddeld", "Toelichting"],
    [
        ["Uurtarief", "€75–€150", "€100", "Afhankelijk ervaring en sector"],
        ["Dagtarief", "€600–€1.200", "€850", "8 uur incl. pauze"],
        ["Weektarief interim", "€2.500–€4.500", "€3.500", "Fulltime interim opdracht"],
        ["Projecttarief", "Op offerte", "Varieert", "Vast bedrag per project/deliverable"],
    ]
)
doc.add_paragraph()
doc.add_paragraph(
    "ADVIES: Start met €95–€110 per uur (onderkant markt, gezien jouw ruime ervaring in HSEQ). "
    "Na 2-3 succesvolle opdrachten kun je tarief verhogen. Bereken backwards: gewenst jaarinkomen "
    "÷ factureerbare uren (circa 1.200–1.400 per jaar na vrijwilligerswerk, ziekte, vakantie) [15]."
)

doc.add_heading("7.4 Betalingsvoorwaarden", level=2)
items = [
    "Betalingstermijn: 14 of 30 dagen na factuurdatum",
    "Herinnering na 7 dagen na vervaldatum (gratis)",
    "Aanmaning na 14 dagen (met incassokosten: wettelijk vastgesteld)",
    "Incassokosten: 15% over eerste €2.500, 10% over volgende €2.500, etc. (Wet incassokosten)",
    "Handelsrente: 8% + ECB-rente (Wet handelsrente bij B2B)",
    "Overweeg een factoring-constructie bij structureel late betalers",
]
for item in items:
    doc.add_paragraph(f"• {item}")

doc.add_heading("7.5 NDA — Geheimhoudingsovereenkomst", level=2)
doc.add_paragraph(
    "Gebruik altijd een NDA bij opdrachten waarbij je toegang krijgt tot vertrouwelijke "
    "informatie (patiëntdata, bedrijfsprocessen, strategie). Standaard NDA-templates zijn "
    "beschikbaar via de KvK of juridische uitgevers. Eenzijdige NDA (jij houdt hun gegevens "
    "geheim) is meestal voldoende [16]."
)

# ============================================================
# HOOFDSTUK 8: SUBSIDIES & VOORDELEN
# ============================================================
doc.add_heading("8. Subsidies, Voordelen & Regelingen", level=1)

doc.add_heading("8.1 Fiscale Voordelen Samengevat", level=2)
add_table(doc,
    ["Voordeel", "Bedrag/percentage", "Voorwaarde"],
    [
        ["Zelfstandigenaftrek", "~€12.420/jaar", "1.225 uren criterium"],
        ["Startersaftrek", "~€2.119/jaar", "Eerste 3 jaar ondernemerschap"],
        ["MKB-winstvrijstelling", "14,19% van winst", "Na zelfstandigenaftrek"],
        ["KOR (btw)", "Geen btw-heffing", "Omzet <€20.000 (niet relevant)"],
        ["Investeringsaftrek", "Variabel", "Bedrijfsmiddelen >€450"],
        ["Opleidingsaftrek", "Werkelijke kosten", "Schriftelijk leerovereenkomst"],
    ]
)

doc.add_heading("8.2 Gemeentelijke Startersregelingen", level=2)
doc.add_paragraph(
    "Veel gemeenten hebben specifieke ondersteuning voor startende ondernemers. "
    "Voor Heiloo en omgeving (gemeente Heiloo, regio Alkmaar):"
)
items = [
    "Starterslening: via de gemeente (tot €50.000, gunstige voorwaarden)",
    "Borgstelling MKB (BMKB): overheid staat borg voor 50% van de lening bij een bank",
    "Gratis adviesgesprek via KVK Ondernemersplein",
    "Regionale economische initiatieven via de provincie Noord-Holland",
    "Check: Heiloo.nl/ondernemen en Noord-Holland.nl/subsidies",
]
for item in items:
    doc.add_paragraph(f"• {item}")

doc.add_heading("8.3 RVO Regelingen", level=2)
doc.add_paragraph(
    "Rijksdienst voor Ondernemend Nederland (RVO) biedt diverse regelingen. "
    "Relevant voor ZZP consultancy:"
)
items = [
    "Innovatiebox (bij BV met winst uit innovatie — niet direct relevant als eenmanszaak)",
    "MIA (Milieu-investeringsaftrek) — bij duurzame investeringen",
    "Vamil (Willekeurige afschrijving milieu-investeringen)",
    "EIA (Energie-investeringsaftrek) — bij energiezuinige bedrijfsmiddelen",
    "Check rvo.nl/subsidies-regelingen voor actuele regelingen [17]",
]
for item in items:
    doc.add_paragraph(f"• {item}")

doc.add_heading("8.4 TOZO", level=2)
doc.add_paragraph(
    "De Tijdelijke Overbruggingsregeling Zelfstandig Ondernemers (TOZO) was een coronamaatregel "
    "en is inmiddels beëindigd. Er is geen vergelijkbare regeling actief in 2026. De verwachte "
    "verplichte AOV per 2030 zal deels een vangnet bieden, maar dit is nog toekomstmuziek [18]."
)

# ============================================================
# HOOFDSTUK 9: MARKETING & ACQUISITIE
# ============================================================
doc.add_heading("9. Marketing & Acquisitie", level=1)

doc.add_heading("9.1 LinkedIn Profiel Optimalisatie", level=2)
doc.add_paragraph("LinkedIn is het primaire platform voor B2B consultancy acquisitie. Checklist:")
items = [
    "Koptekst: \"HHC Interim Manager | Veiligheid, Gezondheid & Zorgkwaliteit\"",
    "Samenvatting: Focus op toegevoegde waarde (HSEQ → HHC transitie)",
    "Vaardigheden toevoegen: Risicomanagement, Compliance, Interim Management, Kwaliteitszorg",
    "Netwerk opbouwen: verbind met zorgbestuurders, HHC-professionals, interim bureaus",
    "Content strategie: wekelijks 1 post over HHC/HSEQ thema's",
    "Recommendations vragen: van eerdere opdrachtgevers/collega's",
]
for item in items:
    doc.add_paragraph(f"☐ {item}")

doc.add_heading("9.2 Platformen voor Interim Opdrachten", level=2)
add_table(doc,
    ["Platform", "Type", "Toelichting"],
    [
        ["Instrador", "Interim management", "Breed netwerk, zorg & overheid"],
        ["MarketSelect", "Interim & project", "Zorg, welzijn, publieke sector"],
        ["Hays Interim", "Interim professionals", "Zorg & gezondheid"],
        ["Undutchables", "ZZP opdrachten", "Breed, ook consultancy"],
        ["Freelance.nl", "ZZP platform", "Divers, ook HHC opdrachten"],
        ["LinkedIn ProFinder", "B2B matching", "Direct via LinkedIn netwerk"],
        ["Vroedvrouw in Bedrijfsvoering", "Zorg consultancy", "Niche platform zorgadviseurs"],
    ]
)

doc.add_heading("9.3 Netwerkstrategie", level=2)
items = [
    "Lions-netwerk: benut je positie als Districtsgouverneur 110AN voor zorgsector contacten",
    "Brancheverenigingen: Word lid van relevante zorg- en HHC-verenigingen",
    "Evenementen: Bezoek zorgconferenties (Zorg & ICT, Health Valley, MedTech)",
    "Interim bureaus: registreer bij 3-5 bureaus voor interim management opdrachten",
    "Bestuurdersnetwerk: zorginstellingen bestuurders zijn je potentiële opdrachtgevers",
]
for item in items:
    doc.add_paragraph(f"• {item}")

# ============================================================
# HOOFDSTUK 10: ADMINISTRATIE & ROUTINE
# ============================================================
doc.add_heading("10. Administratie & Routine", level=1)

doc.add_heading("10.1 Archiveerplicht", level=2)
add_table(doc,
    ["Documenttype", "Bewaartermijn", "Basis"],
    [
        ["Belastingaangiftes + bijlagen", "7 jaar", "Awb / Wet OB 1968"],
        ["Facturen (in- en verkoop)", "7 jaar", "Wet OB 1968 art. 52"],
        ["Bankafschriften", "7 jaar", "Belastingdienst richtlijn"],
        ["Contracten en overeenkomsten", "7 jaar na beëindiging", "BW"],
        ["Personeelsgegevens (toekomstig)", "5 jaar na beëindiging", "AVG + Arbowet"],
        ["Loonstroken / salarisgegevens", "7 jaar", "Hwf"],
        ["KvK-documenten", "Blijvend bewaren", "Handelsregisterwet"],
    ]
)

doc.add_heading("10.2 Routine Checklist", level=2)
doc.add_heading("Wekelijks", level=3)
add_checkbox_list(doc, [
    "Bonnen en bonnetjes verzamelen en scannen",
    "Uren registreren (voor urencriterium Belastingdienst)",
    "Openstaande facturen controleren (betalingen ontvangen?)",
    "Email/post verwerken",
])

doc.add_heading("Maandelijks", level=3)
add_checkbox_list(doc, [
    "Alle facturen van de maand in boekhouding verwerken",
    "Bankafschriften matchen met boekingen",
    "Openstaande facturen opvolgen (aanmaning indien nodig)",
    "Kasboek / inkoopboek bijwerken",
    "Liquide positie beoordelen (genoeg buffer voor btw/kosten?)",
])

doc.add_heading("Kwartaal", level=3)
add_checkbox_list(doc, [
    "BTW-aangifte indienen (uiterlijk laatste dag volgende maand)",
    "Voorlopige aanslag actualiseren (indien gewijzigd)",
    "Kwartaalrapportage: omzet, kosten, winstmarge",
    "Voorzieningen beoordelen (belasting, verzekeringen, reserveringen)",
])

doc.add_heading("Jaarlijks", level=3)
add_checkbox_list(doc, [
    "Jaarrekening opstellen (winst- en verliesrekening + balans)",
    "Inkomstenbelasting aangifte doen (voor 1 mei, of via uitstel tot 1 september)",
    "AOV-premie actualiseren (inkomensopgave aan verzekeraar)",
    "Algemene voorwaarden en contracten herzien",
    "Tarief evaluatie: tarief verhogen indien gerechtvaardigd",
])

# ============================================================
# HOOFDSTUK 11: TIJDPAD & ACTIELIJST
# ============================================================
doc.add_heading("11. Tijdpad & Actielijst", level=1)

doc.add_heading("11.1 Week 1-2: Fundament Leggen", level=2)
add_checkbox_list(doc, [
    "KvK-inschrijving afronden (online via IDIN)",
    "Handelsnaam vaststellen en controleren",
    "Zakelijke bankrekening openen",
    "BTW-nummer ontvangen (automatisch via KvK)",
    "Zorgverzekering controleren/aanpassen",
    "AVB + Beroepsaansprakelijkheidsverzekering afsluiten",
    "AOV vergelijken en (overwegen) afsluiten",
    "Boekhoudsoftware kiezen en installeren",
    "Huisadres of postadres als vestigingsadres bepalen",
])

doc.add_heading("11.2 Week 3-4: Juridisch & Administratief", level=2)
add_checkbox_list(doc, [
    "Modelovereenkomst downloaden (Belastingdienst) en aanpassen",
    "Algemene voorwaarden opstellen en deponeren bij KvK",
    "NDA-template klaarzetten",
    "Factuur-template ontwerpen (voldoen aan wettelijke eisen)",
    "Betalingsvoorwaarden vaststellen (14 of 30 dagen)",
    "Herkomstcheck bank afronden",
    "Administratie-structuur inrichten (mappen, backup)",
])

doc.add_heading("11.3 Week 5-6: Zichtbaarheid & Acquisitie", level=2)
add_checkbox_list(doc, [
    "LinkedIn-profiel optimaliseren (kop, samenvatting, vaardigheden)",
    "Foto sessie: professionele profielfoto laten maken",
    "Netwerk activeren: connectieverzoeken naar zorgprofessionals",
    "Registreren bij 3-5 interim bureaus",
    "Eerste LinkedIn post plaatsen over HHC expertise",
    "Website/landingspagina overwegen (optioneel, niet urgent)",
    "Lions-netwerk benoemen: wie werkt in de zorgsector?",
])

doc.add_heading("11.4 Week 7-8: Eerste Opdrachten", level=2)
add_checkbox_list(doc, [
    "Proactief solliciteren op interim opdrachten via platformen",
    "Netwerkevenement bijwonen (zorg/consultancy)",
    "Eerste offerte of voorstel uitbrengen",
    "Modelovereenkomst ondertekenen bij eerste opdracht",
    "Facturatieproces testen met eerste factuur",
    "Back-up regeling: vervanging bij ziekte (AOV-voorwaarde)",
])

doc.add_heading("11.5 Maand 3-6: Optimalisatie", level=2)
add_checkbox_list(doc, [
    "Eerste btw-aangifte indienen (na afloop eerste kwartaal)",
    "Voorlopige aanslag beoordelen en eventueel aanpassen",
    "Boekhouder of administratiekantoor inschakelen (indien gewenst)",
    "Tarief evalueren na eerste opdrachten",
    "Procesevaluatie: wat werkt, wat niet?",
    "AOV alsnog afsluiten als je dit nog niet had gedaan",
    "Jaardoelstellingen bijstellen op basis van ervaring",
])

# ============================================================
# HOOFDSTUK 12: RISICO'S & VALKUILEN
# ============================================================
doc.add_heading("12. Risico's & Valkuilen", level=1)

add_table(doc,
    ["Risico", "Impact", "Mitigatie"],
    [
        ["Eén opdrachtgever", "HOOG (Wet DBA, afhankelijkheid)", "Minimaal 3 opdrachtgevers streven"],
        ["Te laag tarief", "HOOG (onderschatting, moeilijk te verhogen)", "Backwards berekenen, niet vanuit angst"],
        ["Geen AOV", "HOOG (geen inkomen bij ziekte)", "AOV afsluiten NU, niet wachten tot 2030"],
        ["Late betalers", "MIDDEN (cashflow problemen)", "Duidelijke betalingsvoorwaarden + aanmaning"],
        ["Wet DBA risico", "MIDDEN (opdrachtgever trekt zich terug)", "Modelovereenkomst + ondernemersgedrag"],
        ["BTW niet op tijd", "MIDDEN (boetes, rente)", "Kalender reminders, automatische incasso"],
        ["Geen buffer", "HOOG (belasting aanslag kan niet betaald worden)", "3-6 maanden buffer opbouwen"],
        ["Onderaanneming", "LAAG (inlenersaansprakelijkheid)", "Contracten goed lezen, voorwaarden checken"],
        ["Burn-out", "MIDDEN (te veel uren, te weinig rust)", "Max 1.800 uren/jaar, vakantie inplannen"],
        ["AVG-overtreding", "HOOG (boetes tot €870.000)", "Verwerkersovereenkomst, beveiliging, bewaartermijnen"],
    ]
)

doc.add_heading("12.1 Gouden Regels", level=2)
rules = [
    "NOOIT voor één opdrachtgever werken — altijd meerdere klanten",
    "ALTIJD een getekende modelovereenkomst VOORDAT je start",
    "NOOIT facturen laat versturen — factureer direct na levering",
    "ALTIJD uren registreren — elke dag, zonder uitzondering",
    "ALTIJD btw reserveren — aparte spaarrekening opened",
    "NOOIT privé- en zakelijke kosten mengen op één rekening",
    "ALTIJD een financiële buffer aanhouden (3-6 maanden)",
]
for r in rules:
    p = doc.add_paragraph()
    run = p.add_run(f"⚠ {r}")
    run.font.bold = True
    run.font.size = Pt(10)

# ============================================================
# BIJLAGEN
# ============================================================
doc.add_page_break()
doc.add_heading("Bijlagen", level=1)

# BIJLAGE A
doc.add_heading("Bijlage A: Model Opdrachtbevestiging", level=2)
doc.add_paragraph("Onderstaande opdrachtbevestiging fungeert als basisdocument per opdracht:")
doc.add_paragraph()

add_table(doc,
    ["Veld", "Invulling"],
    [
        ["Opdrachtgever", "[Naam bedrijfsnaam, KvK-nummer, adres]"],
        ["Opdrachtnemer", "Jorick van Gemert, [KvK-nummer], [adres]"],
        ["Opdrachtomschrijving", "[Concrete omschrijving werkzaamheden]"],
        ["Startdatum", "[Datum]"],
        ["Einddatum / doorlooptijd", "[Datum / aantal weken]"],
        ["Uurtarief / Dagtarief", "€[bedrag] exclusief 21% btw"],
        ["Maximale omvang", "[Uren / dagen]"],
        ["Betalingsvoorwaarden", "Betaling binnen 14/30 dagen na factuurdatum"],
        ["Modelovereenkomst", "Bijgevoegd (Belastingdienst model Y2019-xx)"],
        ["Geheimhouding", "NDA van toepassing (ja/nee)"],
        ["Aansprakelijkheid", "Beperkt tot directe schade, max. [bedrag]"],
        ["Geschillen", "Bevoegde rechtbank: [plaats]"],
        ["Handtekening opdrachtgever", "_________________________ Datum: ________"],
        ["Handtekening opdrachtnemer", "_________________________ Datum: ________"],
    ]
)

# BIJLAGE B
doc.add_page_break()
doc.add_heading("Bijlage B: Checklist Startende ZZP'er", level=2)
doc.add_paragraph("Volledige checklist — vink af na afronding:")

categories = {
    "KvK & Rechtsvorm": [
        "Handelsnaam gecontroleerd op beschikbaarheid",
        "KvK-inschrijving voltooid",
        "KvK-nummer ontvangen",
        "BTW-nummer ontvangen",
        "SBI-codes geselecteerd",
        "Uittreksel Handelsregister ontvangen",
    ],
    "Bank & Financiën": [
        "Zakelijke bankrekening geopend",
        "Herkomstcheck bank voltooid",
        "BTW-spaarrekening geopend",
        "Boekhoudsoftware geïnstalleerd en geconfigureerd",
        "Liquiditeitsbuffer opgebouwd (min. €10.000)",
    ],
    "Verzekeringen": [
        "Zorgverzekering geactiveerd/overzetten",
        "AVB afgesloten",
        "Beroepsaansprakelijkheid afgesloten",
        "AOV aangevraagd (of bewuste keuze niet, gedocumenteerd)",
        "Rechtsbijstand overwogen",
    ],
    "Juridisch & Contracten": [
        "Modelovereenkomst gedownload en aangepast",
        "Algemene voorwaarden opgesteld",
        "Algemene voorwaarden gedeponeerd bij KvK",
        "NDA-template klaargezet",
        "Factuur-template ontworpen (wettelijk compleet)",
    ],
    "Acquisitie & Marketing": [
        "LinkedIn-profiel geoptimaliseerd",
        "Professionele profielfoto geplaatst",
        "Geregistreerd bij interim bureaus (min. 3)",
        "Eerste netwerk-uitnodigingen verstuurd",
        "Eerste LinkedIn post gepubliceerd",
    ],
    "Administratie & Routine": [
        "Urenregistratie-systeem actief",
        "Bonnen-map (digitaal) ingericht",
        "Btw-aangifte kalender ingesteld",
        "Backup-regeling geactiveerd (cloud + lokaal)",
    ],
}

for cat, items in categories.items():
    doc.add_heading(cat, level=3)
    add_checkbox_list(doc, items)

# BIJLAGE C
doc.add_page_break()
doc.add_heading("Bijlage C: Voorbeeld Factuur", level=2)
doc.add_paragraph()

add_table(doc,
    ["", ""],
    [
        ["Jorick van Gemert — HHC Consultancy", ""],
        ["[Straatnaam 1, 1851 KE Heiloo]", ""],
        ["KvK: [nummer] | BTW: NL[nummer]", ""],
        ["Bank: NL[IBAN] | Tel: [nummer]", ""],
        ["", ""],
        ["FACTUUR", ""],
        ["Factuurnummer:", "2026-001"],
        ["Factuurdatum:", "[datum]"],
        ["Vervaldatum:", "[datum + 30 dagen]"],
        ["", ""],
        ["Opdrachtgever:", "[Bedrijfsnaam]"],
        ["[Adres opdrachtgever]", ""],
        ["", ""],
        ["Omschrijving", "Bedrag"],
        ["Interim management HHC — Week 22 (40 uur × €100)", "€4.000,00"],
        ["", ""],
        ["Subtotaal exclusief btw", "€4.000,00"],
        ["BTW 21%", "€840,00"],
        ["TOTAAL", "€4.840,00"],
        ["", ""],
        ["Betaling:", "Binnen 30 dagen op NL[IBAN] t.n.v. J. van Gemert"],
        ["Referentie:", "Factuurnummer 2026-001"],
    ]
)

# BIJLAGE D
doc.add_page_break()
doc.add_heading("Bijlage D: Bronverwijzingen", level=2)

refs = [
    "[1] Belastingdienst — Ondernemers en btw-aangifte: belastingdienst.nl",
    "[2] Kamer van Koophandel — Rechtsvormen vergelijken: kvk.nl",
    "[3] Kamer van Koophandel — Algemene voorwaarden: kvk.nl/algemene-voorwaarden",
    "[4] Belastingdienst — Zelfstandigenaftrek, startersaftrek, MKB-winstvrijstelling: belastingdienst.nl",
    "[5] Belastingdienst — Kleineondernemersregeling: belastingdienst.nl",
    "[6] Belastingdienst — Voorlopige aanslag: belastingdienst.nl",
    "[7] Rijksoverheid — AOV verplichting per 2030: rijksoverheid.nl",
    "[8] KVK — Financiële planning voor starters: kvk.nl",
    "[9] KVK — Boekhoudsoftware vergelijken: kvk.nl/advies-informatie",
    "[10] DNB — Wet ter voorkoming van witwassen (Wwft): dnb.nl",
    "[11] Belastingdienst — Wet DBA en modelovereenkomsten: belastingdienst.nl/modelovereenkomsten",
    "[12] Rijksoverheid — Wet kwaliteit, klachten en geschillen zorg (Wkkgv): rijksoverheid.nl",
    "[13] Autoriteit Persoonsgegevens — AVG/GDPR: autoriteitpersoonsgegevens.nl",
    "[14] Rijksoverheid — Arbowet: rijksoverheid.nl/arbowet",
    "[15] Interim Planet — Tarieven interim management zorg 2026: interim-planet.nl",
    "[16] KVK — NDA en geheimhouding: kvk.nl",
    "[17] RVO — Subsidies en regelingen: rvo.nl/subsidies-regelingen",
    "[18] Rijksoverheid — TOZO beëindigd: rijksoverheid.nl",
]
for ref in refs:
    p = doc.add_paragraph(ref)
    for r in p.runs:
        r.font.size = Pt(9)

# BIJLAGE E
doc.add_heading("Bijlage E: TierVerify Log", level=2)
add_table(doc,
    ["Check", "Bron", "Status", "Opmerking"],
    [
        ["KvK-inschrijving kosten", "kvk.nl", "✅ Geverifieerd", "€50 standaard"],
        ["Zelfstandigenaftrek 2026", "belastingdienst.nl", "⚠ Indicatief", "Exact bedrag 2026 nog bevestigen"],
        ["Startersaftrek 2026", "belastingdienst.nl", "⚠ Indicatief", "Gebaseerd op 2025 bedrag"],
        ["MKB-winstvrijstelling %", "belastingdienst.nl", "⚠ Indicatief", "14,19% (2025), 2026 bevestigen"],
        ["BTW-tarief consultancy", "Wet OB 1968", "✅ Geverifieerd", "21% standaard"],
        ["AOV verplichting", "rijksoverheid.nl", "✅ Geverifieerd", "Uitgesteld tot 2030"],
        ["Wet DBA modelovereenkomst", "belastingdienst.nl", "✅ Geverifieerd", "Actueel 2026"],
        ["Wkkgv", "wetten.nl", "✅ Geverifieerd", "Actueel"],
        ["Archiveerplicht 7 jaar", "Belastingdienst richtlijn", "✅ Geverifieerd", "7 jaar standaard"],
        ["KOR drempelbedrag", "belastingdienst.nl", "✅ Geverifieerd", "€20.000"],
    ]
)

# ============================================================
# SAVE
# ============================================================
os.makedirs(os.path.dirname(OUTPUT_PATH), exist_ok=True)
doc.save(OUTPUT_PATH)
print(f"✅ Document opgeslagen: {OUTPUT_PATH}")

# Changelog
changelog_path = "/root/projects/jg/2026-zzp-opstart-hhc/logs/changelog.md"
os.makedirs(os.path.dirname(changelog_path), exist_ok=True)
with open(changelog_path, "w") as f:
    f.write(f"# Changelog — ZZP Opstartplan HHC\n\n")
    f.write(f"## v1.0 — 30 april 2026\n")
    f.write(f"- Initiële versie: Compleet ZZP opstartplan (12 hoofdstukken + 5 bijlagen)\n")
    f.write(f"- DOCX gegenereerd met JG Consultancy branding\n")
print(f"✅ Changelog bijgewerkt: {changelog_path}")
