<?php
class Facturacion {
    private $bd;

    public function __construct() {
        $this->bd = new clsbdd();
    }

    public function generarXMLFactura($ven_codigo) {
        // 1. Obtener datos de la venta, cliente y emisor de la BD
        $config = $this->bd->ejecutar_array("SELECT * FROM sba_config_emisor LIMIT 1")[0];
        $venta = $this->bd->ejecutar_array("SELECT * FROM sba_ventas WHERE ven_codigo = $ven_codigo")[0];
        // ... obtener detalles y datos del profesor/alumno ...

        // 2. Crear el objeto XML
        $xml = new DOMDocument('1.0', 'UTF-8');
        $xml->formatOutput = true;

        $root = $xml->createElement('factura');
        $root->setAttribute('id', 'comprobante');
        $root->setAttribute('version', '1.1.0');
        $xml->appendChild($root);

        // --- Bloque 1: Info Tributaria (RUC, Clave Acceso, etc) ---
        $infoTrib = $xml->createElement('infoTributaria');
        $infoTrib->appendChild($xml->createElement('ambiente', $config['conf_ambiente']));
        $infoTrib->appendChild($xml->createElement('tipoEmision', '1'));
        $infoTrib->appendChild($xml->createElement('razonSocial', $config['conf_razon_social']));
        $infoTrib->appendChild($xml->createElement('ruc', $config['conf_ruc']));
        // Aquí llamarías a la función de generarClave que te pasé antes
        $infoTrib->appendChild($xml->createElement('claveAcceso', '49_DIGITOS_AQUI...'));
        $infoTrib->appendChild($xml->createElement('codDoc', '01'));
        $infoTrib->appendChild($xml->createElement('estab', $config['conf_cod_establecimiento']));
        $infoTrib->appendChild($xml->createElement('ptoEmi', $config['conf_cod_punto_emision']));
        $infoTrib->appendChild($xml->createElement('secuencial', str_pad($venta['ven_codigo'], 9, '0', STR_PAD_LEFT)));
        $infoTrib->appendChild($xml->createElement('dirMatriz', $config['conf_dir_matriz']));
        $root->appendChild($infoTrib);

        // --- Bloque 2: Info Factura (Cliente, totales, fecha) ---
        $infoFactura = $xml->createElement('infoFactura');
        $infoFactura->appendChild($xml->createElement('fechaEmision', date('d/m/Y', strtotime($venta['ven_fecha']))));
        $infoFactura->appendChild($xml->createElement('dirEstablecimiento', $config['conf_dir_establecimiento']));
        $infoFactura->appendChild($xml->createElement('obligadoContabilidad', $config['conf_obligado_contabilidad']));
        $infoFactura->appendChild($xml->createElement('tipoIdentificacionComprador', '05')); // 05 cedula, 04 RUC
        $infoFactura->appendChild($xml->createElement('razonSocialComprador', 'CONSUMIDOR FINAL'));
        $infoFactura->appendChild($xml->createElement('identificacionComprador', '9999999999999'));
        $infoFactura->appendChild($xml->createElement('totalSinImpuestos', number_format($venta['ven_total'], 2, '.', '')));
        $infoFactura->appendChild($xml->createElement('totalDescuento', '0.00'));
        // ... (Aquí faltarían impuestos y totales generales) ...
        $root->appendChild($infoFactura);

        // 3. Guardar el archivo en una carpeta temporal antes de firmarlo
        $nombre_archivo = "comprobantes/generados/factura_" . $ven_codigo . ".xml";
        $xml->save($nombre_archivo);

        return $nombre_archivo;
    }
}