<?php
// admin/factura_afip_html.php
// Muestra la factura AFIP/ARCA autorizada en HTML lista para imprimir (A4 o Ticket 80mm)

// ---------------------------------------------------------
// 1) Configuración básica y conexión
// ---------------------------------------------------------
ini_set('display_errors', 1);
error_reporting(E_ALL);

require_once __DIR__ . '/../config.php';

try {
    $dsn = "mysql:host={$sql_details['host']};dbname={$sql_details['db']};port={$sql_details['port']};charset=utf8";
    $pdo = new PDO($dsn, $sql_details['user'], $sql_details['pass'], [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ]);
} catch (PDOException $e) {
    die("Error de conexión a la base de datos: " . htmlspecialchars($e->getMessage()));
}

// ---------------------------------------------------------
// 2) Leer parámetro factura_afip_id (id de facturas_afip_info)
// ---------------------------------------------------------
$facturaAfipId = isset($_GET['id']) ? (int)$_GET['id'] : 0;
if ($facturaAfipId <= 0) {
    die('Falta parámetro id (factura_afip_id).');
}

// Modo de impresión: a4 (default) o ticket
$modo = isset($_GET['modo']) ? strtolower(trim($_GET['modo'])) : 'a4';
if (!in_array($modo, ['a4', 'ticket'], true)) {
    $modo = 'a4';
}

// ---------------------------------------------------------
// 3) Cargar encabezado de facturas_afip_info + datos store y cliente
// ---------------------------------------------------------
$sql = "
    SELECT 
        fi.*,
        -- Datos de la venta original (opcional)
        si.created_at         AS fecha_proforma,
        si.invoice_id         AS si_invoice_id,
        -- Cliente
        c.customer_name       AS customer_name,
        c.customer_cuit       AS customer_cuit,
        c.customer_iva_cond   AS customer_iva_cond,
        c.customer_address    AS customer_address,
        c.customer_city       AS customer_city,
        c.customer_state      AS customer_state,
        c.customer_country    AS customer_country,
        c.customer_mobile     AS customer_mobile,
        c.customer_email      AS customer_email,
        -- Store / Empresa
        s.name                AS store_name_fantasia,
        s.razon_social        AS store_razon_social,
        s.address             AS store_address,
        s.zip_code            AS store_zip_code,
        s.email               AS store_email,
        s.mobile              AS store_mobile,
        s.logo                AS store_logo,
        s.afip_cuit           AS store_afip_cuit,
        s.inicio_actividades  AS store_ini_acti,
        s.afip_iva_cond       AS store_afip_iva_cond,
        s.afip_iibb           AS store_afip_iibb
    FROM facturas_afip_info fi
    LEFT JOIN selling_info si 
        ON si.invoice_id = fi.invoice_id 
       AND si.store_id   = fi.store_id
    LEFT JOIN customers c 
        ON c.customer_id = fi.customer_id
    LEFT JOIN stores s 
        ON s.store_id = fi.store_id
    WHERE fi.id = :id
";

$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => $facturaAfipId]);
$info = $stmt->fetch();

if (!$info) {
    die('No se encontró la factura AFIP con ese id.');
}

// ---------------------------------------------------------
// 4) Cargar ítems, IVA discriminado y tributos
// ---------------------------------------------------------
$sqlItems = "
    SELECT *
    FROM facturas_afip_items
    WHERE factura_afip_id = :id
    ORDER BY id
";
$stmtItems = $pdo->prepare($sqlItems);
$stmtItems->execute(['id' => $facturaAfipId]);
$items = $stmtItems->fetchAll();

$sqlIva = "
    SELECT *
    FROM facturas_afip_iva
    WHERE factura_afip_id = :id
    ORDER BY iva_id
";
$stmtIva = $pdo->prepare($sqlIva);
$stmtIva->execute(['id' => $facturaAfipId]);
$ivas = $stmtIva->fetchAll();

$sqlTrib = "
    SELECT *
    FROM facturas_afip_tributos
    WHERE factura_afip_id = :id
    ORDER BY id
";
$stmtTrib = $pdo->prepare($sqlTrib);
$stmtTrib->execute(['id' => $facturaAfipId]);
$tributos = $stmtTrib->fetchAll();

// ---------------------------------------------------------
// 5) Helpers de formato
// ---------------------------------------------------------
function f_money($v) {
    return number_format((float)$v, 2, ',', '.');
}

function map_cbte_tipo_letra($cbteTipo, $letra) {
    $desc = '';
    switch ((int)$cbteTipo) {
        case 1:  $desc = 'Factura'; break;
        case 6:  $desc = 'Factura'; break;
        case 2:  $desc = 'Nota de Débito'; break;
        case 7:  $desc = 'Nota de Débito'; break;
        case 3:  $desc = 'Nota de Crédito'; break;
        case 8:  $desc = 'Nota de Crédito'; break;
        default: $desc = 'Comprobante'; break;
    }
    return trim($desc . ' ' . strtoupper($letra));
}

function map_iva_cond($ivaCond) {
    $ivaCond = (string)$ivaCond;
    switch ($ivaCond) {
        case 'RI':  return 'Responsable Inscripto';
        case 'MT':  return 'Monotributista';
        case 'EX':  return 'Exento';
        case 'CF':  return 'Consumidor Final';
        case 'NR':  return 'No Responsable';
        case 'RNI': return 'Responsable No Inscripto';
        default:    return $ivaCond;
    }
}

function map_doc_tipo($docTipo) {
    $docTipo = (int)$docTipo;
    switch ($docTipo) {
        case 80: return 'CUIT';
        case 86: return 'CUIL';
        case 96: return 'DNI';
        case 99: return 'Consumidor Final';
        default: return 'Documento';
    }
}

// ---------------------------------------------------------
// 6) Preparar datos encabezado / totales
// ---------------------------------------------------------
$cbteTipo   = (int)$info['cbte_tipo'];
$cbteLetra  = strtoupper($info['cbte_letra']);
$puntoVenta = (int)$info['punto_venta'];
$cbteNumero = (int)$info['cbte_numero'];
$cbteLabel  = map_cbte_tipo_letra($cbteTipo, $cbteLetra);

$pvStr  = str_pad($puntoVenta, 4, '0', STR_PAD_LEFT);
$nroStr = str_pad($cbteNumero, 8, '0', STR_PAD_LEFT);
$numeroCompleto = $pvStr . '-' . $nroStr;

$fechaCbteStr = $info['fecha_cbte'] ? date('d/m/Y', strtotime($info['fecha_cbte'])) : '';
$fechaCbteIso = $info['fecha_cbte']
    ? date('Y-m-d', strtotime($info['fecha_cbte']))
    : date('Y-m-d');

$cae       = trim($info['cae'] ?? '');
$caeVtoStr = !empty($info['cae_vto']) ? date('d/m/Y', strtotime($info['cae_vto'])) : '';

// Emisor: store + fallback facturas_afip_info
$storeRazonSocial    = $info['store_razon_social'] ?: ($info['razon_social_emisor'] ?? '');
$storeNombreFantasia = $info['store_name_fantasia'] ?: ($info['razon_social_emisor'] ?? '');

// CUIT emisor (mostrar) y limpio para QR
$storeCuitRaw = $info['store_afip_cuit']
    ?: ($info['cuit_emisor'] ?? ($info['store_cuit_db'] ?? ''));

$storeCuit  = $storeCuitRaw;                                     // para mostrar
$cuitEmisor = preg_replace('/\D+/', '', (string)$storeCuitRaw);  // solo dígitos para QR

$storeIvaCond = map_iva_cond(
    $info['store_afip_iva_cond'] ?: ($info['iva_cond_emisor'] ?? 'RI')
);
$storeIibb    = $info['store_afip_iibb'] ?? ($info['iibb_emisor'] ?? '');
$storeAddress = $info['store_address'] ?? ($info['domicilio_emisor'] ?? '');
$storeZip     = $info['store_zip_code'] ?? '';
$storeMobile  = $info['store_mobile'] ?? '';
$storeEmail   = $info['store_email'] ?? '';
$storeLogo    = $info['store_logo'] ?? '';
$storeActi    = $info['store_ini_acti'] ?? '';

// Receptor (cliente)
$razonSocialReceptor = $info['customer_name'] ?: ($info['razon_social_receptor'] ?? '');
$docTipo             = isset($info['doc_tipo']) ? (int)$info['doc_tipo'] : 99;

$docNroRaw    = $info['doc_nro'] ?? ($info['customer_cuit'] ?? '0');
$docNro       = $docNroRaw;                                     // para mostrar
$docNroLimpio = preg_replace('/\D+/', '', (string)$docNroRaw);  // solo dígitos para QR

$docTipoStr     = map_doc_tipo($docTipo);
$ivaReceptorStr = map_iva_cond($info['customer_iva_cond'] ?? ($info['iva_cond_receptor'] ?? 'CF'));
$domReceptor    = $info['customer_address'] ?? ($info['domicilio_receptor'] ?? '');
$locReceptor    = trim(
    (($info['customer_city'] ?? '') . ' ' . ($info['customer_state'] ?? '') . ' ' . ($info['customer_country'] ?? ''))
);
$telReceptor    = $info['customer_mobile'] ?? '';
$emailReceptor  = $info['customer_email'] ?? '';

// Totales
$impNeto    = (float)$info['imp_neto'];
$impTotal   = (float)$info['imp_total'];
$impIva     = (float)$info['imp_iva'];
$impTrib    = (float)$info['imp_trib'];
$impOpEx    = (float)$info['imp_op_ex'];
$impTotConc = (float)$info['imp_tot_conc'];

// ---------------------------------------------------------
// 7) QR para ARCA
// ---------------------------------------------------------
$qrText = '';

if (!empty($cuitEmisor) && !empty($cae)) {
    $qrPayload = [
        'ver'        => 1,
        'fecha'      => $fechaCbteIso,          // YYYY-MM-DD
        'cuit'       => (int)$cuitEmisor,       // CUIT emisor como número
        'ptoVta'     => (int)$puntoVenta,
        'tipoCmp'    => (int)$cbteTipo,
        'nroCmp'     => (int)$cbteNumero,
        'importe'    => (float)$impTotal,
        'moneda'     => 'PES',
        'ctz'        => 1,
        'tipoDocRec' => (int)$docTipo,
        'nroDocRec'  => (int)$docNroLimpio,
        'tipoCodAut' => 'E',
        'codAut'     => (int)$cae,
    ];

    $qrJson    = json_encode($qrPayload, JSON_UNESCAPED_SLASHES);
    $qrJsonB64 = base64_encode($qrJson);

    // URL oficial de ARCA
    $qrText = "https://www.arca.gob.ar/fe/qr/?p={$qrJsonB64}";
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title><?= htmlspecialchars($cbteLabel . ' ' . $numeroCompleto); ?></title>
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Librería QR en navegador -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js"></script>

    <style>
        :root {
            --primary: #2563eb;
            --primary-soft: #e0edff;
            --border-soft: #d4d4d8;
            --bg-soft: #f9fafb;
            --danger: #dc2626;
            --text-muted: #6b7280;
        }

        * { box-sizing: border-box; }

        body {
            font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
            font-size: 11pt;
            margin: 0;
            padding: 16px;
            background: #e5e7eb;
        }

        /* PAGE: estructura flex para poder pegar el footer abajo */
        .page {
            display: flex;
            flex-direction: column;
        }

        .page-content {
            flex: 1 0 auto;
        }

        .page-footer {
            flex-shrink: 0;
            margin-top: auto; /* empuja al pie cuando hay altura extra */
        }

        /* A4 modo escritorio / general */
        body.a4 .page {
            max-width: 800px;
            margin: 0 auto;
            background: white;
            padding: 20px 24px 24px;
            border-radius: 8px;
            box-shadow: 0 8px 20px rgba(15, 23, 42, 0.12);
            min-height: 260mm; /* garantiza altura de hoja y que el pie quede abajo */
        }

        /* Ticket 80mm: más angosto y compacto */
        body.ticket {
            background: #ffffff;
            padding: 8px;
            font-size: 10pt;
        }

        body.ticket .page {
            width: 80mm;
            max-width: 80mm;
            margin: 0 auto;
            background: #ffffff;
            padding: 6px 6px 10px;
            border-radius: 0;
            box-shadow: none;
            min-height: auto; /* la térmica va según contenido */
        }

        .toolbar {
            display: flex;
            justify-content: flex-end;
            margin-bottom: 12px;
        }

        .btn-print {
            background: var(--primary);
            color: #fff;
            border: none;
            padding: 6px 16px;
            border-radius: 20px;
            cursor: pointer;
            font-size: 11px;
            letter-spacing: 0.03em;
            text-transform: uppercase;
        }

        .btn-print:hover {
            background: #1d4ed8;
        }

        .header {
            border-bottom: 2px solid var(--primary-soft);
            padding-bottom: 10px;
            margin-bottom: 10px;
        }

        .header-grid {
            display: grid;
            grid-template-columns: 1.8fr 1fr 1.2fr;
            gap: 12px;
            align-items: stretch;
        }

        body.ticket .header-grid {
            grid-template-columns: 1.4fr 0.6fr;
            gap: 6px;
        }

        body.ticket .header-grid > div:last-child {
            grid-column: 1 / span 2;
        }

        .logo-box {
            display: flex;
            gap: 10px;
        }

        .logo-box img {
            max-height: 60px;
            max-width: 100px;
            object-fit: contain;
        }

        body.ticket .logo-box img {
            max-height: 40px;
            max-width: 80px;
        }

        .emisor-data {
            font-size: 10pt;
        }

        body.ticket .emisor-data {
            font-size: 9pt;
        }

        .emisor-data .fantasia {
            font-size: 11pt;
            font-weight: 600;
            color: #111827;
        }

        body.ticket .emisor-data .fantasia {
            font-size: 10pt;
        }

        .emisor-data .razon {
            font-size: 10pt;
            font-weight: 500;
            color: var(--text-muted);
        }

        .emisor-data small {
            color: var(--text-muted);
        }

        .tipo-comprobante {
            border-radius: 8px;
            border: 1px solid var(--primary);
            background: linear-gradient(135deg, #eff6ff, #ffffff);
            text-align: center;
            padding: 4px 4px 6px;
            display: flex;
            flex-direction: column;
            justify-content: center;
            gap: 2px;
        }

        .tipo-comprobante .letra {
            font-size: 28pt;
            font-weight: 700;
            color: var(--primary);
            line-height: 1;
        }

        body.ticket .tipo-comprobante .letra {
            font-size: 20pt;
        }

        .tipo-comprobante .codigo {
            font-size: 9pt;
            color: var(--text-muted);
        }

        body.ticket .tipo-comprobante .codigo {
            font-size: 8pt;
        }

        .tipo-comprobante .texto {
            font-size: 10pt;
            font-weight: 600;
        }

        body.ticket .tipo-comprobante .texto {
            font-size: 9pt;
        }

        .datos-comprobante {
            border-radius: 8px;
            border: 1px solid var(--border-soft);
            background: var(--bg-soft);
            padding: 6px 8px;
            font-size: 9pt;
        }

        body.ticket .datos-comprobante {
            font-size: 8.5pt;
            padding: 4px 6px;
        }

        .datos-comprobante strong {
            font-size: 9pt;
        }

        .section {
            border-radius: 8px;
            border: 1px solid var(--border-soft);
            margin-top: 10px;
            overflow: hidden;
        }

        body.ticket .section {
            margin-top: 6px;
            border-radius: 4px;
        }

        .section-header {
            background: var(--primary-soft);
            padding: 4px 8px;
            font-size: 9pt;
            font-weight: 600;
            color: #111827;
        }

        body.ticket .section-header {
            font-size: 8.5pt;
            padding: 3px 6px;
        }

        .section-body {
            padding: 6px 8px;
            font-size: 9pt;
        }

        body.ticket .section-body {
            padding: 4px 6px;
            font-size: 8.5pt;
        }

        .section-body table {
            width: 100%;
            border-collapse: collapse;
            font-size: 9pt;
        }

        .section-body td {
            padding: 2px 4px;
            vertical-align: top;
        }

        body.ticket .section-body td {
            padding: 1px 2px;
        }

        .muted { color: var(--text-muted); }

        table.items {
            width: 100%;
            border-collapse: collapse;
            margin-top: 6px;
            font-size: 9pt;
        }

        body.ticket table.items {
            font-size: 8pt;
        }

        table.items th,
        table.items td {
            border: 1px solid var(--border-soft);
            padding: 3px 4px;
        }

        body.ticket table.items th,
        body.ticket table.items td {
            padding: 2px 2px;
        }

        table.items thead th {
            background: #eff6ff;
            font-weight: 600;
        }

        .text-right { text-align: right; }
        .text-center { text-align: center; }

        .resumen-totales {
            margin-top: 8px;
            width: 100%;
            font-size: 9pt;
        }

        body.ticket .resumen-totales {
            font-size: 8.5pt;
        }

        .resumen-totales td {
            padding: 2px 4px;
        }

        body.ticket .resumen-totales td {
            padding: 1px 2px;
        }

        .resumen-totales .tit {
            text-align: right;
            color: var(--text-muted);
        }

        .resumen-totales .imp {
            text-align: right;
            min-width: 80px;
        }

        .resumen-totales .total {
            border-top: 2px solid var(--border-soft);
            font-weight: 700;
            font-size: 10pt;
        }

        body.ticket .resumen-totales .total {
            font-size: 9pt;
        }

        .footer-grid {
            display: grid;
            grid-template-columns: 2.3fr 1.2fr;
            gap: 10px;
            margin-top: 14px;
            align-items: center;
        }

        body.ticket .footer-grid {
            grid-template-columns: 1.5fr 1fr;
            gap: 6px;
            margin-top: 8px;
        }

        .bloque-cae {
            border-radius: 8px;
            border: 1px solid var(--border-soft);
            padding: 6px 8px;
            font-size: 9pt;
        }

        body.ticket .bloque-cae {
            font-size: 8.5pt;
            padding: 4px 6px;
        }

        .bloque-cae strong {
            font-size: 9pt;
        }

        .bloque-cae .agency {
            font-size: 8pt;
            color: var(--text-muted);
        }

        .qr-block {
            text-align: center;
            font-size: 8pt;
        }

        .qr-debug {
            font-size: 8px;
            color: #6b7280;
            word-break: break-all;
            margin-top: 4px;
        }

       /* Pie de software dentro de rectángulo separado */
.footer-software-box {
    margin-top: 10px;
    border-radius: 6px;
    border: 1px solid var(--border-soft);
    background: #f9fafb;
    padding: 6px 8px;
    font-size: 8pt;
    line-height: 1.4;
    text-align: left;      /* <-- alineado a la izquierda */
}

body.a4 .footer-software-box {
    font-size: 7.5pt;
}

body.ticket .footer-software-box {
    font-size: 7pt;
    padding: 4px 6px;
}

.footer-software-box strong {
    font-weight: 600;
}


        @media print {
            body {
                background: white;
                padding: 0;
            }

            .toolbar {
                display: none;
            }

            body.a4 .page {
                box-shadow: none;
                border-radius: 0;
                margin: 0 auto;
                max-width: 210mm;
            }

            @page {
                size: A4 portrait;
                margin: 10mm 10mm 12mm 10mm;
            }

            body.ticket .page {
                width: 80mm;
                max-width: 80mm;
                margin: 0;
                box-shadow: none;
                border-radius: 0;
            }
        }

        /* Ajuste responsive para móviles: una sola columna */
        @media (max-width: 600px) {
            .header-grid {
                grid-template-columns: 1fr;
            }
        }
    </style>
</head>
<body class="<?= htmlspecialchars($modo); ?>">
<div class="toolbar">
    <button class="btn-print" onclick="window.print()">
        Imprimir
    </button>
</div>

<div class="page">
    <div class="page-content">
        <!-- Encabezado principal -->
        <div class="header">
            <div class="header-grid">

                <!-- Logo + datos emisor -->
                <div>
                    <div class="logo-box">
                        <?php if (!empty($storeLogo)): ?>
                            <div>
                                <img src="<?= htmlspecialchars($storeLogo); ?>" alt="Logo">
                            </div>
                        <?php endif; ?>
                        <div class="emisor-data">
                            <div class="fantasia">
                                <?= htmlspecialchars($storeNombreFantasia); ?>
                            </div>
                            <div class="razon">
                                Razón social: <?= htmlspecialchars($storeRazonSocial); ?>
                            </div>
                            <small>
                                CUIT: <?= htmlspecialchars($storeCuit); ?><br>
                                Cond. IVA: <?= htmlspecialchars($storeIvaCond); ?><br>
                                Domicilio: <?= htmlspecialchars($storeAddress); ?>
                                <?php if (!empty($storeZip)): ?>
                                    (CP <?= htmlspecialchars($storeZip); ?>)
                                <?php endif; ?><br>
                                <?php if (!empty($storeMobile)): ?>
                                    Tel: <?= htmlspecialchars($storeMobile); ?><br>
                                <?php endif; ?>
                                <?php if (!empty($storeEmail)): ?>
                                    Email: <?= htmlspecialchars($storeEmail); ?><br>
                                <?php endif; ?>
                                <?php if (!empty($storeIibb)): ?>
                                    IIBB: <?= htmlspecialchars($storeIibb); ?><br>
                                <?php endif; ?>
                                <?php if (!empty($storeActi)): ?>
                                    Inicio de actividades: <?= htmlspecialchars($storeActi); ?><br>
                                <?php endif; ?>
                            </small>
                        </div>
                    </div>
                </div>

                <!-- Tipo de comprobante (centrado) -->
                <div>
                    <div class="tipo-comprobante">
                        <div class="letra"><?= htmlspecialchars($cbteLetra); ?></div>
                        <div class="texto"><?= htmlspecialchars($cbteLabel); ?></div>
                        <div class="codigo">Cód. <?= htmlspecialchars($cbteTipo); ?></div>
                    </div>
                </div>

                <!-- Datos del comprobante -->
                <div>
                    <div class="datos-comprobante">
                        <div>
                            <strong>Punto de venta:</strong><br>
                            <?= $pvStr; ?>
                        </div>
                        <div style="margin-top:4px;">
                            <strong>Comp. N°:</strong><br>
                            <?= $nroStr; ?>
                        </div>
                        <div style="margin-top:4px;">
                            <strong>Fecha emisión:</strong><br>
                            <?= $fechaCbteStr; ?>
                        </div>
                    </div>
                </div>

            </div>
        </div>

        <!-- Datos del receptor -->
        <div class="section">
            <div class="section-header">
                Datos del receptor
            </div>
            <div class="section-body">
                <table>
                    <tr>
                        <td style="width: 45%;">
                            <strong>Razón social / Apellido y Nombre</strong><br>
                            <?= htmlspecialchars($razonSocialReceptor); ?>
                        </td>
                        <td style="width: 25%;">
                            <strong><?= htmlspecialchars($docTipoStr); ?></strong><br>
                            <?= htmlspecialchars($docNro); ?>
                        </td>
                        <td style="width: 30%;">
                            <strong>Condición frente al IVA</strong><br>
                            <?= htmlspecialchars($ivaReceptorStr); ?>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <strong>Domicilio</strong><br>
                            <?= htmlspecialchars($domReceptor); ?>
                            <?php if (!empty($locReceptor)): ?>
                                <br><span class="muted"><?= htmlspecialchars($locReceptor); ?></span>
                            <?php endif; ?>
                        </td>
                        <td>
                            <?php if (!empty($telReceptor)): ?>
                                <strong>Teléfono</strong><br>
                                <?= htmlspecialchars($telReceptor); ?><br>
                            <?php endif; ?>
                            <?php if (!empty($emailReceptor)): ?>
                                <strong>Email</strong><br>
                                <?= htmlspecialchars($emailReceptor); ?>
                            <?php endif; ?>
                        </td>
                    </tr>
                </table>
            </div>
        </div>

        <!-- Ítems -->
        <div class="section" style="margin-top: 10px;">
            <div class="section-header">
                Detalle de conceptos
            </div>
            <div class="section-body" style="padding-top:4px; padding-bottom:4px;">
                <table class="items">
                    <thead>
                        <tr>
                            <th style="width: 10%;">Código</th>
                            <th style="width: 38%;">Descripción</th>
                            <th style="width: 8%;" class="text-right">Cant.</th>
                            <th style="width: 12%;" class="text-right">P. Unit.</th>
                            <th style="width: 8%;" class="text-right">% IVA</th>
                            <th style="width: 12%;" class="text-right">Importe IVA</th>
                            <th style="width: 12%;" class="text-right">Neto</th>
                        </tr>
                    </thead>
                    <tbody>
                    <?php if ($items): ?>
                        <?php foreach ($items as $it): ?>
                            <tr>
                                <td><?= htmlspecialchars($it['selling_item_id'] ?? ''); ?></td>
                                <td><?= htmlspecialchars($it['descripcion']); ?></td>
                                <td class="text-right"><?= f_money($it['cantidad']); ?></td>
                                <td class="text-right"><?= f_money($it['precio_unitario']); ?></td>
                                <td class="text-right">
                                    <?= isset($it['iva_porcentaje']) ? number_format((float)$it['iva_porcentaje'], 2, ',', '.') : '0,00'; ?>
                                </td>
                                <td class="text-right">
                                    <?= isset($it['importe_iva']) ? f_money($it['importe_iva']) : '0,00'; ?>
                                </td>
                                <td class="text-right">
                                    <?= isset($it['importe_neto']) ? f_money($it['importe_neto']) : '0,00'; ?>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    <?php else: ?>
                        <tr>
                            <td colspan="7" class="text-center muted">Sin ítems cargados.</td>
                        </tr>
                    <?php endif; ?>
                    </tbody>
                </table>
            </div>
        </div>

        <!-- Totales -->
        <div class="section" style="margin-top: 10px;">
            <div class="section-header">
                Resumen de importes
            </div>
            <div class="section-body">
                <table class="resumen-totales">
                    <tr>
                        <td style="width: 55%;"></td>
                        <td class="tit">Neto gravado:</td>
                        <td class="imp"><?= f_money($impNeto); ?></td>
                    </tr>

                    <?php if ($impTotConc != 0.0): ?>
                    <tr>
                        <td></td>
                        <td class="tit">No gravado / no alcanzado:</td>
                        <td class="imp"><?= f_money($impTotConc); ?></td>
                    </tr>
                    <?php endif; ?>

                    <?php if ($impOpEx != 0.0): ?>
                    <tr>
                        <td></td>
                        <td class="tit">Operaciones exentas:</td>
                        <td class="imp"><?= f_money($impOpEx); ?></td>
                    </tr>
                    <?php endif; ?>

                    <?php if ($impIva != 0.0): ?>
                    <tr>
                        <td></td>
                        <td class="tit">IVA:</td>
                        <td class="imp"><?= f_money($impIva); ?></td>
                    </tr>
                    <?php endif; ?>

                    <?php if ($impTrib != 0.0): ?>
                    <tr>
                        <td></td>
                        <td class="tit">Otros tributos:</td>
                        <td class="imp"><?= f_money($impTrib); ?></td>
                    </tr>
                    <?php endif; ?>

                    <tr>
                        <td></td>
                        <td class="tit total"><strong>Total:</strong></td>
                        <td class="imp total"><strong><?= f_money($impTotal); ?></strong></td>
                    </tr>
                </table>
            </div>
        </div>
    </div><!-- /.page-content -->

    <!-- FOOTER pegado abajo -->
    <div class="page-footer">
        <!-- Pie: CAE + QR ARCA -->
        <div class="footer-grid">
            <div class="bloque-cae">
                <strong>CAE:</strong> <?= htmlspecialchars($cae); ?><br>
                <strong>Vencimiento CAE:</strong> <?= htmlspecialchars($caeVtoStr); ?><br>
                <div style="margin-top:2px;">
                    <span class="small">
                        Comprobante autorizado por <strong>ARCA</strong> Agencia de Recaudación y Control Aduanero
                    </span><br>
                    <span class="agency">
                        Agencia de Recaudación: ARCA
                    </span>
                </div>
            </div>

            <div class="qr-block">
                <div id="qr-afip" style="display:inline-block; margin-top:2px;"></div>
            </div>
        </div>

        <!-- Pie de software / facturador en rectángulo -->
       <!-- Pie de software / facturador en rectángulo -->
<div class="footer-software-box">
    <div>
        <strong>INTERLINK SYS 2.0</strong> - Software de Gestión y Facturación Electrónica.
    </div>
    <div>
        Desarrollado por Soluciones DC - CUIT 20-27749674-8 - Tel. 0387-6834044 - www.solucionesdc.com.ar
    </div>
</div>


<script>
document.addEventListener('DOMContentLoaded', function () {
    var qrContainer = document.getElementById('qr-afip');
    var qrText = <?php echo json_encode($qrText); ?>;
    var isTicket = document.body.classList.contains('ticket');

    if (qrContainer && qrText) {
        new QRCode(qrContainer, {
            text: qrText,
            width: isTicket ? 100 : 160,
            height: isTicket ? 100 : 160
        });

        setTimeout(function () {
            window.print();
        }, 800);
    } else {
        setTimeout(function () {
            window.print();
        }, 800);
    }
});
</script>
</body>
</html>
