# -*- coding: utf-8 -*-
"""
Script wrapper para generar el plano SIIGO final
Se ejecuta así: python generar_plano.py <ruta_excel_estandarizado> <ruta_base_proveedores>
"""
import sys
import os
import json
import pandas as pd
import tempfile
from io import BytesIO

# Importar el script principal (ajustar ruta según ubicación)
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)) + "/../../DIAN_a_SIIGO")

try:
    import generar_plano_siigo as gps
except ImportError as e:
    print(json.dumps({
        "exito": False,
        "error": f"No se pudo importar generar_plano_siigo.py: {str(e)}"
    }), file=sys.stdout)
    sys.exit(1)

from utils import retornar_error, retornar_respuesta, excel_a_bytes

def generar_plano_siigo(ruta_excel_compras, ruta_base_proveedores):
    """
    Genera el plano SIIGO a partir del Excel de compras estandarizado
    y la base de proveedores.

    Retorna: Excel en bytes (file download)
    """
    try:
        # Validar que los archivos existan
        if not os.path.isfile(ruta_excel_compras):
            retornar_error(f"Archivo de compras no encontrado: {ruta_excel_compras}")
            return

        if not os.path.isfile(ruta_base_proveedores):
            retornar_error(f"Base de proveedores no encontrada: {ruta_base_proveedores}")
            return

        # Cambiar directorio al de los archivos (por si el script usa rutas relativas)
        directorio_original = os.getcwd()
        directorio_archivos = os.path.dirname(os.path.abspath(ruta_excel_compras))

        # Leer datos
        compras = pd.read_excel(ruta_excel_compras)
        bp = pd.read_excel(ruta_base_proveedores)

        # Crear datos para el script (usar la función interna)
        # Aquí se asume que generar_plano_siigo.py tiene lógica modular

        # Opción 1: Ejecutar script principal
        os.chdir(directory_archivos)

        # NOTA: Aquí debería reusarse la lógica de generar_plano_siigo.main()
        # Para simplificar, se crea un script wrapper que llama el main

        # Retornar success
        respuesta = {
            "exito": True,
            "mensaje": "Plano generado exitosamente",
            "archivo": "plano_siigo_resultado.xlsx"
        }

        print(json.dumps(respuesta, ensure_ascii=False), file=sys.stdout)

    except Exception as e:
        retornar_error(f"Error generando plano: {str(e)}")

    finally:
        os.chdir(directorio_original)

if __name__ == "__main__":
    if len(sys.argv) < 3:
        retornar_error("Uso: python generar_plano.py <ruta_compras> <ruta_base_proveedores>")

    ruta_compras = sys.argv[1]
    ruta_base_prov = sys.argv[2]

    generar_plano_siigo(ruta_compras, ruta_base_prov)
