<?php
$servername = "localhost"; // Cambia esto si tu servidor es diferente
$username = "ndconsulta"; // Tu nombre de usuario de MySQL
$password = "Nitro2021"; // Tu contraseña de MySQL
$dbname = "db_compranet"; // Nombre de tu base de datos

// Crear la conexión
$conn = new mysqli($servername, $username, $password, $dbname);

// Verificar la conexión
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Consulta para obtener los datos de la vista
$sql = "SELECT SKU, nombre, descripcion, descripcioncorta, ImagenPrincipal, `Color/Tipo`, ImagenVariante, inventario, PVP, PVPReducido, SKUVariante, Impuesto, Envio, alto_cm, ancho_cm, largo_cm, peso_kg, Categoria, Etiqueta FROM vw_productos_raiz WHERE wp_id IS NULL OR wp_id_variante is null ORDER BY SKU;";
$result = $conn->query($sql);

// Crear un nuevo documento XML
$xml = new DOMDocument("1.0", "UTF-8");

// Crear el elemento raíz
$root = $xml->createElement("Productos");
$xml->appendChild($root);

$productos = [];

if ($result->num_rows > 0) {
    // Recorrer los datos y agrupar por producto
    while ($row = $result->fetch_assoc()) {
        $sku = $row["SKU"];
        if (!isset($productos[$sku])) {
            $productos[$sku] = [
                "nombre" => $row["nombre"],
                "descripcion" => $row["descripcion"],
                "descripcioncorta" => $row["descripcioncorta"],
                "ImagenPrincipal" => $row["ImagenPrincipal"],
                "Impuesto" => $row["Impuesto"],
                "Envio" => $row["Envio"],
                "alto_cm" => $row["alto_cm"],
                "ancho_cm" => $row["ancho_cm"],
                "largo_cm" => $row["largo_cm"],
                "peso_kg" => $row["peso_kg"],
                "Categoria" => $row["Categoria"],
                "Etiqueta" => $row["Etiqueta"],
                "Variaciones" => []
            ];
        }
        $productos[$sku]["Variaciones"][] = [
            "ColorTipo" => $row["Color/Tipo"],
            "ImagenVariante" => $row["ImagenVariante"],
            "Inventario" => $row["inventario"],
            "PVP" => $row["PVP"],
            "PVPReducido" => $row["PVPReducido"],
            "SKUVariante" => $row["SKUVariante"]
        ];
    }

    // Construir el XML basado en los datos agrupados
    foreach ($productos as $sku => $producto) {
        $productoElement = $xml->createElement("Producto");
        
        $skuElement = $xml->createElement("SKU", htmlspecialchars($sku));
        $productoElement->appendChild($skuElement);
        
        $nombreElement = $xml->createElement("Nombre", htmlspecialchars($producto["nombre"]));
        $productoElement->appendChild($nombreElement);
        
        $descripcionElement = $xml->createElement("Descripcion");
        $descripcionCdata = $xml->createCDATASection($producto["descripcion"]);
        $descripcionElement->appendChild($descripcionCdata);
        $productoElement->appendChild($descripcionElement);

        $descripcioncortaElement = $xml->createElement("descripcioncorta");
        $descripcioncortaCdata = $xml->createCDATASection($producto["descripcioncorta"]);
        $descripcioncortaElement->appendChild($descripcioncortaCdata);
        $productoElement->appendChild($descripcioncortaElement);
       
        $imagenPrincipalElement = $xml->createElement("ImagenPrincipal", htmlspecialchars($producto["ImagenPrincipal"]));
        $productoElement->appendChild($imagenPrincipalElement);

        $impuestoElement = $xml->createElement("Impuesto", htmlspecialchars($producto["Impuesto"]));
        $productoElement->appendChild($impuestoElement);

        $envioElement = $xml->createElement("Envio", htmlspecialchars($producto["Envio"]));
        $productoElement->appendChild($envioElement);

        $altoElement = $xml->createElement("Alto_cm", htmlspecialchars($producto["alto_cm"]));
        $productoElement->appendChild($altoElement);

        $anchoElement = $xml->createElement("Ancho_cm", htmlspecialchars($producto["ancho_cm"]));
        $productoElement->appendChild($anchoElement);

        $largoElement = $xml->createElement("Largo_cm", htmlspecialchars($producto["largo_cm"]));
        $productoElement->appendChild($largoElement);

        $pesoElement = $xml->createElement("Peso_kg", htmlspecialchars($producto["peso_kg"]));
        $productoElement->appendChild($pesoElement);

        $categoriaElement = $xml->createElement("Categoria", htmlspecialchars($producto["Categoria"]));
        $productoElement->appendChild($categoriaElement);

        $variacionesElement = $xml->createElement("Variaciones");
        foreach ($producto["Variaciones"] as $variacion) {
            $variacionElement = $xml->createElement("Variacion");

            $colorTipoElement = $xml->createElement("ColorTipo", htmlspecialchars($variacion["ColorTipo"]));
            $variacionElement->appendChild($colorTipoElement);

            $imagenVarianteElement = $xml->createElement("ImagenVariante", htmlspecialchars($variacion["ImagenVariante"]));
            $variacionElement->appendChild($imagenVarianteElement);

            $inventarioElement = $xml->createElement("Inventario", htmlspecialchars($variacion["Inventario"]));
            $variacionElement->appendChild($inventarioElement);

            $pvpElement = $xml->createElement("PVP", htmlspecialchars($variacion["PVP"]));
            $variacionElement->appendChild($pvpElement);

            $pvpReducidoElement = $xml->createElement("PVPReducido", htmlspecialchars($variacion["PVPReducido"]));
            $variacionElement->appendChild($pvpReducidoElement);

            $skuVarianteElement = $xml->createElement("SKUVariante", htmlspecialchars($variacion["SKUVariante"]));
            $variacionElement->appendChild($skuVarianteElement);

            $variacionesElement->appendChild($variacionElement);
        }
        $productoElement->appendChild($variacionesElement);

        $root->appendChild($productoElement);
    }
} else {
    echo "No se encontraron registros.";
}

// Cerrar la conexión
$conn->close();

// Establecer el encabezado para XML y mostrar el contenido
header("Content-Type: application/xml");
echo $xml->saveXML();
?>
