import sys
from bs4 import BeautifulSoup
from docx import Document

def html_table_to_docx_table(soup, doc, placeholder):
    table = soup.find('table')
    if not table:
        return False

    rows = table.find_all('tr')
    if not rows:
        return False

    for para in doc.paragraphs:
        if placeholder in para.text:
            p = para._element
            parent = p.getparent()
            index = parent.index(p)
            parent.remove(p)

            table_docx = doc.add_table(rows=0, cols=len(rows[0].find_all(['td', 'th'])))
            try:
                table_docx.style = 'Table Grid'
            except:
                pass

            for row in rows:
                cells = row.find_all(['td', 'th'])
                row_cells = table_docx.add_row().cells
                for i, cell in enumerate(cells):
                    row_cells[i].text = cell.get_text(strip=True)

            parent.insert(index, table_docx._tbl)
            return True
    return False

def reemplazar_variables(doc, variables):
    for p in doc.paragraphs:
        inline = p.runs
        for i in range(len(inline)):
            for key, value in variables.items():
                if f"${{{key}}}" in inline[i].text:
                    inline[i].text = inline[i].text.replace(f"${{{key}}}", value)

def main():
    if len(sys.argv) != 9:
        print("Uso: python insertar_tabla_en_plantilla.py plantilla.docx tabla.html salida.docx ANT MAT INCL FECHA CONTENIDO")
        sys.exit(1)

    plantilla_path = sys.argv[1]
    html_path = sys.argv[2]
    salida_path = sys.argv[3]
    ant = sys.argv[4]
    mat = sys.argv[5]
    incl = sys.argv[6]
    fecha = sys.argv[7]
    contenido = sys.argv[8]

    try:
        with open(html_path, 'r', encoding='utf-8') as f:
            soup = BeautifulSoup(f, 'html.parser')

        doc = Document(plantilla_path)

        reemplazar_variables(doc, {
            'ANT': ant,
            'MAT': mat,
            'INCL': incl,
            'FECHA': fecha,
            'CONTENIDO': contenido
        })

        html_table_to_docx_table(soup, doc, "{{tabla_excel}}")

        doc.save(salida_path)
        print("✅ Documento generado correctamente.")

    except Exception as e:
        print(f"❌ Error: {e}")

if __name__ == '__main__':
    main()
