/**
 * qz-print.js — Impresión silenciosa vía QZ Tray
 * Requiere qz-tray.js cargado antes de este archivo.
 * Uso: qzPrint({ url, printer })
 */
window.qzPrint = async function({ printer } = {}) {
    try {
        // 1. Conectar
        if (!qz.websocket.isActive()) {
            await qz.websocket.connect();
        }

        // 2. Firma con el servidor
        qz.security.setSignatureAlgorithm('SHA512');
        qz.security.setSignaturePromise(function(toSign) {
            return function(resolve, reject) {
                fetch('/api/qz_sign.php', { method: 'POST', body: toSign })
                    .then(r => r.text()).then(resolve).catch(reject);
            };
        });

        // 3. Certificado público
        qz.security.setCertificatePromise(function(resolve) {
            fetch('/config/qz/digital-certificate.txt')
                .then(r => r.text()).then(resolve);
        });

        // 4. Seleccionar impresora
        var p = printer || await qz.printers.getDefault();
        console.log('[QZ] Impresora:', p);

        // 5. Imprimir la página actual como HTML
        var cfg  = qz.configs.create(p);
        var data = [{
            type  : 'pixel',
            format: 'html',
            flavor: 'plain',
            data  : document.documentElement.outerHTML,
        }];

        await qz.print(cfg, data);
        console.log('[QZ] Trabajo enviado correctamente');
    } catch(e) {
        console.warn('[QZ] Error:', e.message || e);
        // Fallback al diálogo del navegador si QZ no está disponible
        window.print();
    }
};
