#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Genera PDF Anexo I — Cuadro Probatorio (ReportLab)."""
from pathlib import Path
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet
from reportlab.lib.units import cm
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import (
    SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak,
)

OUT = Path(__file__).parent / "ANEXO_I_Cuadro_Probatorio_Comparativo_Diego_M_Saiz.pdf"
FONT = "ArialUnicode"
FONT_B = "ArialUnicode-Bold"


def register_fonts():
    import os
    fonts = os.path.join(os.environ.get("WINDIR", r"C:\Windows"), "Fonts")
    pdfmetrics.registerFont(TTFont(FONT, fonts + r"\arial.ttf"))
    pdfmetrics.registerFont(TTFont(FONT_B, fonts + r"\arialbd.ttf"))


def p(text, style):
    return Paragraph(text.replace("\n", "<br/>"), style)


def table(data, col_widths=None):
    t = Table(data, colWidths=col_widths, repeatRows=1)
    t.setStyle(
        TableStyle([
            ("FONTNAME", (0, 0), (-1, 0), FONT_B),
            ("FONTNAME", (0, 1), (-1, -1), FONT),
            ("FONTSIZE", (0, 0), (-1, -1), 7),
            ("BACKGROUND", (0, 0), (-1, 0), colors.HexColor("#d2e1f0")),
            ("GRID", (0, 0), (-1, -1), 0.25, colors.grey),
            ("VALIGN", (0, 0), (-1, -1), "TOP"),
            ("LEFTPADDING", (0, 0), (-1, -1), 3),
            ("RIGHTPADDING", (0, 0), (-1, -1), 3),
            ("TOPPADDING", (0, 0), (-1, -1), 2),
            ("BOTTOMPADDING", (0, 0), (-1, -1), 2),
        ])
    )
    return t


def build():
    register_fonts()
    doc = SimpleDocTemplate(
        str(OUT), pagesize=A4,
        leftMargin=1.2 * cm, rightMargin=1.2 * cm,
        topMargin=1.5 * cm, bottomMargin=1.5 * cm,
    )
    styles = getSampleStyleSheet()
    title = ParagraphStyle("title", parent=styles["Heading1"], fontName=FONT_B, fontSize=14, alignment=1, spaceAfter=6)
    sub = ParagraphStyle("sub", parent=styles["Normal"], fontName=FONT, fontSize=9, alignment=1, spaceAfter=3)
    h2 = ParagraphStyle("h2", parent=styles["Heading2"], fontName=FONT_B, fontSize=10, spaceBefore=10, spaceAfter=4, backColor=colors.HexColor("#e6f0fa"))
    body = ParagraphStyle("body", parent=styles["Normal"], fontName=FONT, fontSize=8, leading=10, spaceAfter=4)
    bold = ParagraphStyle("bold", parent=body, fontName=FONT_B)

    story = [
        p("CUADRO PROBATORIO COMPARATIVO", title),
        p("ANEXO I — Preparación casación unificación doctrina", sub),
        p("Expediente: Autos <b>658/2023</b> — Suplicación <b>3055/2025</b>", sub),
        p("Actor: <b>D. Diego Martínez Saiz</b> (DNI 33474056V) — Profesión: <b>ELECTRICISTA</b> (RETA)", sub),
        p("Sentencias: Instancia <b>154/2025</b> (14/05/2025) | TSJCV <b>1720/2026</b> (02/06/2026)", sub),
        Spacer(1, 8),
        p("<i>Leyenda: OK = valorado correctamente | PAR = parcial/distorsionado | NO = omitido | REP = reproducido sin comparar</i>", body),
    ]

    story.append(p("A. RESUMEN EJECUTIVO", h2))
    story.append(table([
        ["Indicador", "Instancia 154/2025", "TSJCV 1720/2026"],
        ["Prueba según sentencia", "Antecedentes: «solo documental»", "Confirma valoración instancia"],
        ["Pericial ratificada 05/03/2025", "PAR: antecedentes documental; HP6 2/7", "PAR: «refuta razonadamente»"],
        ["Conclusiones periciales HP6", "2 de 7 aceptadas", "Rechaza ampliar HP6"],
        ["Informes La Fe d13–d16", "PAR: FJ4 distorsiona", "PAR: remite a FJ4 instancia"],
        ["Docs. 4 y 5 (juicio)", "NO mencionados en fallo", "PAR: cita en suplicación; rechaza HP11"],
        ["Comparación 2019 vs 2022", "NO sistemática", "NO: confirma criterio INSS"],
        ["Omalagia bilateral EVI 2022", "PAR: en HP4 sin comparar", "REP: sin comparar cuadros"],
        ["Electricista vs empleo adaptado", "PAR: indicio laboral genérico", "PAR: repite argumento INSS"],
    ], [4.5 * cm, 5.5 * cm, 5.5 * cm]))

    story.append(p("B. INFORMES EVI — COMPARACIÓN CUADROS (ART. 200 LGSS)", h2))
    story.append(table([
        ["Ref.", "Fecha", "Decisión", "Diagnóstico nuclear", "vs 2019"],
        ["EVI-2019", "11/03/2019", "RECONOCE IPT", "Omalgia D; SLAP II; protrusiones C4-C6; limitación hombro D mod-intensa", "Basal"],
        ["EVI-2020", "29/06/2020", "Mantiene IPT", "Mismo núcleo; RNM labrum alterado", "Sin mejoría franca"],
        ["EVI-2021", "09/09/2021", "Mantiene IPT", "Labrum + discopatía cervical; rizólisis", "Mejoría parcial cervical"],
        ["EVI-2022", "05/10/2022", "Propone NO IP", "OMALGIA BILATERAL; persiste rotura labrum; rizólisis sin beneficio", "REP literal 2019 → concluye MEJORÍA"],
    ], [2 * cm, 2 * cm, 2.2 * cm, 6.5 * cm, 2.8 * cm]))
    story.append(p("<b>Conclusión pericial 3.ª:</b> Dos informes EVI sustancialmente idénticos → resoluciones opuestas (IPT 2019 / no IP 2022).", bold))
    story.append(p("<b>STSJ Murcia 2392/2024</b> (ECLI:ES:TSJMU:2024:2392): revisión por mejoría exige confrontar ambos cuadros; sin mejoría franca → mantener grado.", bold))

    story.append(PageBreak())
    story.append(p("C. DOCUMENTOS La Fe d13–d16 — DISTORSIÓN EN FJ 4", h2))
    story.append(table([
        ["ID", "Fecha", "Contenido relevante", "Inst.", "TSJCV"],
        ["d13", "23/12/2022", "PERSISTE rotura labrum glenoideo; cervicobraquialgia D; plan PRP", "PAR", "PAR"],
        ["d15", "20/01/2023", "Lesión PLB + tendinitis + infiltración PRP hombro D", "PAR", "PAR"],
        ["d16", "30/01/2023", "Rizólisis cervical C3-C7 multinivel; dolor persistente", "PAR", "PAR"],
    ], [1.2 * cm, 2 * cm, 8.5 * cm, 1.5 * cm, 1.5 * cm]))

    story.append(p("D. PRUEBA JUICIO 05/03/2025 NO REFLEJADA EN INSTANCIA", h2))
    story.append(table([
        ["Doc.", "Fecha", "Contenido", "Instancia", "TSJCV"],
        ["Doc. 4", "01/10/2024", "Infiltración facetaria cervical C3-C7 derecha (H. La Fe)", "NO mencionado", "PAR suplicación"],
        ["Doc. 5", "12/02/2025", "Cervicalgia; derivación neuro; recomendación NO esfuerzos físicos", "NO mencionado", "«No secuelas definitivas»"],
    ], [1.5 * cm, 2 * cm, 6.5 * cm, 3 * cm, 3.5 * cm]))

    story.append(p("E. INFORME PERICIAL Dr. JUAN PRECIOSO JUAN (20/06/2023)", h2))
    story.append(table([
        ["N.º", "Conclusión", "HP6", "Instancia", "TSJCV"],
        ["1", "IPT desde 05/04/2019; limitación hombro D", "NO", "Implícito", "Rechaza HP6"],
        ["2", "Baja IPT 23/11/2022 por supuesta mejoría", "NO", "Sí", "Confirma"],
        ["3", "EVI 2019/2022 idénticos → resoluciones opuestas", "NO", "NO analiza", "NO"],
        ["4", "Empeoramiento dic.2022–ene.2023 (d13–d16)", "Sí", "PAR «mejoría»", "PAR"],
        ["5", "Electricista: requerimientos elevados cervicales/hombros", "NO", "NO", "NO"],
        ["6", "Imposibilidad electricista con profesionalidad", "Sí", "«Magnifica»", "Refuta"],
        ["7", "Documentación + exploración avalan conclusiones", "NO", "NO", "NO"],
        ["Rat.", "Juicio 05/03/2025 — pericial ORAL ratificada", "PAR", "Solo «documental»", "Sin contraperitaje INSS"],
    ], [1 * cm, 5.5 * cm, 1.5 * cm, 3 * cm, 3.5 * cm]))
    story.append(p("Exploración 07/06/2023: Spurling D++; fuerza MSD 3/5; evita cargas &gt;3 kg y trabajo sobre hombros.", body))

    story.append(p("F. DISTORSIÓN FJ 4 INSTANCIA vs PRUEBA REAL", h2))
    story.append(table([
        ["Afirmación judicial", "Contenido real prueba", "Error"],
        ["EMG sin hallazgos → mejoría", "EMG SHP = sin radiculopatía; NO curación labrum/omalagia", "Confusión diagnóstica"],
        ["Artro-RNM tendones normales → mejoría", "PERSISTE rotura labrum; plan PRP activo", "Omisión hallazgo principal"],
        ["Informe 20/01/2023 «solo sospecha»", "PLB + tendinitis + PRP indicada", "Minimización"],
        ["Rizólisis «no limitación»", "Tratamiento invasivo multinivel por dolor refractario", "Ignora significado clínico"],
        ["«No consta doc. no valorado INSS»", "Docs 4 y 5 juicio NO mencionados", "Afirmación incorrecta"],
        ["Trabajo continuado = capacidad electricista", "Empleo adaptado ≠ profesión tutelada RETA", "Confusión profesional"],
    ], [5 * cm, 5.5 * cm, 3.8 * cm]))

    story.append(PageBreak())
    story.append(p("G. TABLA COMPARATIVA ART. 200 LGSS — 2019 vs 2022", h2))
    story.append(table([
        ["Elemento", "2019 (IPT)", "2022 (revisión)", "¿Mejoría?"],
        ["Hombro / labrum", "Omalgia D, SLAP II", "Omalgia BILATERAL; labrum persiste", "NO"],
        ["Cervical", "Protrusiones C4-C6", "Cervicalgia + rizólisis fallida", "NO"],
        ["Limitación funcional", "Carga biomecánica hombro D", "Misma + bilateral", "NO"],
        ["Tratamiento", "RHB post-IQ", "PRP, rizólisis, facetaria, ACDF indicada 2025", "AGRAVACIÓN"],
        ["Conclusión EVI", "IPT total electricista", "No IP sin comparar cuadros", "VICIO MÉTODO"],
    ], [3.5 * cm, 4 * cm, 4 * cm, 2.8 * cm]))

    story.append(p("H. REQUERIMIENTOS ELECTRICISTA (CNO 7510) vs LIMITACIONES", h2))
    story.append(table([
        ["Requerimiento Guía VP INSS", "Nivel", "Situación actor", "¿IPT?"],
        ["Columna cervical", "Elevado 3/4", "Cervicalgia crónica; rizólisis; Spurling++", "NO"],
        ["Hombros", "Elevado 3/4", "Omalgia bilateral; rotura labrum; fuerza 3/5", "NO"],
        ["Cargas 3–15 kg", "Moderado 2/4", "Evita &gt;3 kg (pericial)", "NO"],
        ["Posturas hombro / esfuerzo", "Frecuente construcción", "Informe 12/02/2025: evitar esfuerzos", "NO"],
    ], [4.5 * cm, 2 * cm, 5.5 * cm, 2.3 * cm]))

    story.append(p("I. JURISPRUDENCIA DE REFERENCIA", h2))
    for line in [
        "• <b>STSJ Murcia 2392/2024</b> — ECLI:ES:TSJMU:2024:2392 — no comparar cuadros → revoca baja IPT",
        "• <b>TSJ Canarias 851/2023</b> (26/03/2025) — lesiones «en esencia las mismas»",
        "• <b>TSJCV 4734/2022</b> — ECLI:ES:TSJCV:2022:4734 — mejoria efectiva exigida para cesar IPT",
        "• <b>STS 31/10/2005</b> — comparación obligatoria en revisión por mejoría",
        "• <b>STS 533/2024</b> — exigencias biomecánicas instalaciones eléctricas",
    ]:
        story.append(p(line, body))

    story.append(Spacer(1, 12))
    story.append(p(
        "<i>Documento Anexo I elaborado junio 2026. Fuente: autos 658/2023, sentencias 154/2025 y 1720/2026, "
        "informes EVI, Hospital La Fe, pericial Dr. Juan Precioso Juan. Para adjuntar a preparación casación LexNET 4625034000.</i>",
        body,
    ))

    doc.build(story)
    print(f"PDF generado: {OUT}")


if __name__ == "__main__":
    build()
