import pandas as pd
import numpy as np
import os
from datetime import date

def unificador_estoque(pasta_entrada):
    hoje = date.today().isoformat()
    caminho_saida = os.path.join(pasta_entrada, f"compilado_estoque_{hoje}.xlsx")
    print("Salvando em:", caminho_saida)

    subpastas = [
        os.path.join(pasta_entrada, d)
        for d in os.listdir(pasta_entrada)
        if os.path.isdir(os.path.join(pasta_entrada, d))
    ]

    df_list = []

    for subpasta in subpastas:
        arquivos = [f for f in os.listdir(subpasta) if f.endswith(".csv")]
        nome_pasta = os.path.basename(subpasta)

        for arquivo in arquivos:
            caminho_arquivo = os.path.join(subpasta, arquivo)
            try:
                df = pd.read_csv(caminho_arquivo, encoding="utf-8", low_memory=False)
                df["Arquivo_Origem"] = arquivo
                df["Pasta_Origem"] = nome_pasta
                df_list.append(df)
            except Exception as e:
                print(f"Erro ao ler o arquivo {arquivo}: {e}")

    if not df_list:
        raise ValueError("Nenhum arquivo CSV válido foi encontrado.")

    df_estoque = pd.concat(df_list, ignore_index=True)

    df_estoque["PDV"] = df_estoque["PDV"].astype(str)

    df_estoque["SKU_FINAL"] = np.where(
        df_estoque["SKU_PARA"] == "-",
        df_estoque["SKU"],
        df_estoque["SKU_PARA"]
    ).astype(str)

    try:
        df_estoque.to_excel(caminho_saida, index=False)
    except Exception as e:
        raise RuntimeError(f"Erro ao salvar o arquivo Excel: {e}")

    return caminho_saida