<?php
require_once('public/lib/print/num_letras.php');
require_once('public/lib/pdf/cellfit.php');
require_once('public/lib/phpqrcode/qrlib.php');

class FPDF_CellFiti extends FPDF_CellFit
{
    function AutoPrint($dialog = false)
    {
        //Open the print dialog or start printing immediately on the standard printer 
        $param = ($dialog ? 'true' : 'false');
        $script = "print($param);";
        $this->IncludeJS($script);
    }

    function AutoPrintToPrinter($server, $printer, $dialog = false)
    {
        //Print on a shared printer (requires at least Acrobat 6)
        $script = "var pp = getPrintParams();";
        if ($dialog)
            $script .= "pp.interactive = pp.constants.interactionLevel.full;";
        else
            $script .= "pp.interactive = pp.constants.interactionLevel.automatic;";
        $script .= "pp.printerName = '\\\\\\\\" . $server . "\\\\" . $printer . "';";
        $script .= "print(pp);";
        $this->IncludeJS($script);
    }
}
// echo json_encode($this->dato->Config->pedido_comanda);
// return;
define('EURO', chr(128));

//echo "<pre>" . json_encode($this->dato, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE) . "</pre>";



$cantidad_items = count($this->dato->Detalle);
$espacioxitem = 20;
$atura_minima = 250;
$altura_actual = ($cantidad_items * $espacioxitem) + $atura_minima;


$ticketWidth = defined('TICKET_WIDTH_MM') ? (float)TICKET_WIDTH_MM : 72;
$pdf = new FPDF_CellFiti('P', 'mm', array($ticketWidth, $altura_actual));
$pdf->SetMargins(0, 0, 0);  // Debe ir ANTES de AddPage para que $this->x se fije en 0
$pdf->AddPage();
$pdf->SetTitle(utf8_decode($this->dato->ser_doc) . '-' . utf8_decode($this->dato->nro_doc));
$pdf->SetAutoPageBreak(true, 5);
$pdf->SetDrawColor(210, 214, 220);
$pdf->SetTextColor(18, 24, 32);

$metaLabelWidth = 18;
$amountValueWidth = 20;
$amountLabelWidth = $ticketWidth - $amountValueWidth;
$colQtyWidth = 10;
$colUnitWidth = 10;
$colImportWidth = 15;
$colProductWidth = $ticketWidth - $colQtyWidth - $colUnitWidth - $colImportWidth;

$printDivider = function ($marginTop = 1, $marginBottom = 1) use ($pdf, $ticketWidth) {
    if ($marginTop > 0) $pdf->Ln($marginTop);
    $pdf->Cell($ticketWidth, 0, '', 'T');
    if ($marginBottom > 0) $pdf->Ln($marginBottom);
};

$printMetaRow = function ($label, $value, $boldValue = false) use ($pdf, $ticketWidth, $metaLabelWidth) {
    $pdf->SetFont('Helvetica', 'B', 8);
    $pdf->Cell($metaLabelWidth, 4, utf8_decode($label), 0, 0, 'L');
    $pdf->SetFont('Helvetica', $boldValue ? 'B' : '', 8);
    $pdf->MultiCell($ticketWidth - $metaLabelWidth, 4, utf8_decode((string)$value), 0, 'L');
};

$printAmountRow = function ($label, $amount, $bold = false) use ($pdf, $amountLabelWidth, $amountValueWidth) {
    $pdf->SetFont('Helvetica', $bold ? 'B' : '', 9);
    $pdf->Cell($amountLabelWidth, 5, utf8_decode($label), 0, 0, 'L');
    $pdf->Cell($amountValueWidth, 5, number_format((float)$amount, 2), 0, 1, 'R');
};

// CABECERA
if ($this->empresa['logo']) {
    $url_logo = URL_LOGO . "public/images/" . $this->empresa['logo'];
    if (@is_file($url_logo)) {
        // Ajuste defensivo: evita logos desproporcionados que se superpongan al encabezado.
        $logoWidth = defined('L_DIMENSION') ? (float)L_DIMENSION : 28;
        $logoMaxWidth = min(($ticketWidth - 16), 34);
        $logoWidth = max(18, min($logoWidth, $logoMaxWidth));
        $logoX = ($ticketWidth - $logoWidth) / 2;
        $logoY = $pdf->GetY() + 2;

        $logoHeight = 14;
        $imgInfo = @getimagesize($url_logo);
        if (is_array($imgInfo) && !empty($imgInfo[0]) && !empty($imgInfo[1])) {
            $logoHeight = $logoWidth * ((float)$imgInfo[1] / (float)$imgInfo[0]);
        }

        $pdf->Image($url_logo, $logoX, $logoY, $logoWidth, 0, L_FORMATO);
        $pdf->SetY($logoY + $logoHeight + 2);
    }
}
$pdf->SetFont('Helvetica', 'B', 10);
$pdf->MultiCell($ticketWidth, 4, utf8_decode($this->empresa['razon_social']), 0, 'C');
$pdf->SetFont('Helvetica', '', 8);
$pdf->Cell($ticketWidth, 4, utf8_decode('RUC') . ': ' . utf8_decode($this->empresa['ruc']), 0, 1, 'C');
$pdf->MultiCell($ticketWidth, 4, utf8_decode($this->empresa['direccion_comercial']), 0, 'C');
$pdf->Cell($ticketWidth, 4, 'TELF: ' . utf8_decode($this->empresa['celular']), 0, 1, 'C');
$printDivider(1, 2);

// DATOS FACTURA
if ((int)$this->dato->id_tdoc === 1) {
    // Requerimiento: la boleta siempre debe mostrarse como "BOLETA DE VENTA ELECTRONICA".
    $elec = 'ELECTRONICA';
} else {
    $elec = ((int)$this->dato->id_tdoc === 2 && $this->empresa['sunat'] == 1) ? 'ELECTRONICA' : '';
}
$pdf->SetFillColor(238, 242, 247);
$pdf->SetFont('Helvetica', 'B', 10);
$pdf->Cell($ticketWidth, 6, utf8_decode(trim($this->dato->desc_td . ' ' . $elec)), 0, 1, 'C', true);
$pdf->SetFont('Helvetica', 'B', 11);
$pdf->Cell($ticketWidth, 5, utf8_decode($this->dato->ser_doc) . '-' . utf8_decode($this->dato->nro_doc), 0, 1, 'C');
$printDivider(1, 2);

$pdf->SetFont('Helvetica', '', 8);
if (isset($this->dato->Config) && $this->dato->Config && isset($this->dato->Config->pedido_comanda) && $this->dato->Config->pedido_comanda == 1) {
    $printMetaRow('PEDIDO:', str_pad($this->dato->id_ped, 5, "0", STR_PAD_LEFT), true);
}
$printMetaRow('EMISION:', date('d-m-Y h:i A', strtotime($this->dato->fec_ven)));

$atencion = 'MESA';
if ($this->dato->id_tped == 1) {
    if (isset($this->dato->Pedido) && $this->dato->Pedido) {
        $atencion = $this->dato->Pedido->desc_salon . ' - MESA: ' . $this->dato->Pedido->nro_mesa;
    }
} else if ($this->dato->id_tped == 2) {
    $atencion = 'MOSTRADOR';
} else if ($this->dato->id_tped == 3) {
    $atencion = 'DELIVERY';
}
$printMetaRow('ATENCION:', $atencion);
$printMetaRow('CLIENTE:', $this->dato->Cliente->nombre);

if ($this->dato->Cliente->tipo_cliente == 1) {
    $printMetaRow('DNI:', $this->dato->Cliente->dni);
} else {
    $printMetaRow('RUC:', $this->dato->Cliente->ruc);
}

if ($this->dato->Cliente->telefono != '0') {
    $printMetaRow('TELEFONO:', $this->dato->Cliente->telefono);
}
$printMetaRow('DIRECCION:', $this->dato->Cliente->direccion);

if ($this->dato->Cliente->referencia != '') {
    $printMetaRow('REFERENCIA:', $this->dato->Cliente->referencia);
}
if (isset($this->dato->Pedido) && $this->dato->Pedido && isset($this->dato->Pedido->mozo)) {
    $printMetaRow('MOZO:', $this->dato->Pedido->mozo);
}

if ($this->dato->id_tped == 3 && isset($this->dato->Cliente_pedido) && $this->dato->Cliente_pedido && isset($this->dato->Cliente->id_cliente) && $this->dato->Cliente->id_cliente != $this->dato->Cliente_pedido->id_cliente) {
    $pdf->Ln(1);
    $pdf->SetFillColor(246, 248, 251);
    $pdf->SetFont('Helvetica', 'B', 8);
    $pdf->Cell($ticketWidth, 5, 'DATOS DE ENTREGA', 0, 1, 'L', true);
    $printMetaRow('NOMBRE:', $this->dato->Cliente_pedido->nombre_cliente);
    $printMetaRow('TELEFONO:', $this->dato->Cliente_pedido->telefono_cliente);
    $printMetaRow('DIRECCION:', $this->dato->Cliente_pedido->direccion_cliente);
    $printMetaRow('REFERENCIA:', $this->dato->Cliente_pedido->referencia_cliente);
}
$printDivider(1, 2);
// COLUMNAS
$pdf->SetFillColor(238, 242, 247);
$pdf->SetFont('Helvetica', 'B', 8);
$pdf->Cell($colQtyWidth, 6, 'CANT.', 0, 0, 'L', true);
$pdf->Cell($colProductWidth, 6, 'PRODUCTO', 0, 0, 'L', true);
$pdf->Cell($colUnitWidth, 6, 'P.U.', 0, 0, 'R', true);
$pdf->Cell($colImportWidth, 6, 'IMP.', 0, 1, 'R', true);
$pdf->Ln(1);

// PRODUCTOS
$total = 0;
$total_ope_gravadas = 0;
$total_igv_gravadas = 0;
$total_ope_exoneradas = 0;
$total_igv_exoneradas = 0;

$tipo_afectacion = 0;
$descuento_igv = 0;

foreach ($this->dato->Detalle as $d) {

    $cortesia = $this->dato->desc_tipo == 1 ? '(CORTESIA)' : '';

    if ($d->codigo_afectacion == '10') {
        $total_ope_gravadas = $total_ope_gravadas + $d->valor_venta;
        $total_igv_gravadas = $total_igv_gravadas + $d->total_igv;
        $total_ope_exoneradas = $total_ope_exoneradas + 0;
        $total_igv_exoneradas = $total_igv_exoneradas + 0;
    } else {
        $total_ope_gravadas = $total_ope_gravadas + 0;
        $total_igv_gravadas = $total_igv_gravadas + 0;
        $total_ope_exoneradas = $total_ope_exoneradas + $d->valor_venta;
        $total_igv_exoneradas = $total_igv_exoneradas + $d->total_igv;
    }

    if ($this->dato->consumo == '0') {
        $pdf->SetFont('Helvetica', '', 8);
        $pdf->Cell($colQtyWidth, 4, $d->cantidad, 0, 0, 'L');
        $pdf->MultiCell($colProductWidth, 4, utf8_decode($d->nombre_producto . ' '. $cortesia), 0, 'L');
        $pdf->Cell($colQtyWidth + $colProductWidth + $colUnitWidth, -4, number_format($d->precio_unitario, 2), 0, 0, 'R');
        $pdf->Cell($colImportWidth, -4, number_format(($d->cantidad * $d->precio_unitario), 2), 0, 0, 'R');
        $pdf->Ln(1);
    }


    if ($d->cantidad > 0) {
        $total = ($d->cantidad * $d->precio_unitario) + $total;
    }

    $tipo_afectacion = $d->codigo_afectacion;
    $descuento_igv = $d->total_descuento;
}

if ($this->dato->consumo == '1') {
    $pdf->SetFont('Helvetica', '', 8);
    $pdf->Cell($colQtyWidth, 4, '1.00', 0, 0, 'L');
    $pdf->MultiCell($colProductWidth, 4, utf8_decode($this->dato->consumo_desc), 0, 'L');
    $pdf->Cell($colQtyWidth + $colProductWidth + $colUnitWidth, -4, number_format(($this->dato->total), 2), 0, 0, 'R');
    $pdf->Cell($colImportWidth, -4, number_format(($this->dato->total), 2), 0, 0, 'R');
    $pdf->Ln(1);
}

$pdf->Ln(0);
// SUMATORIO DE LOS PRODUCTOS Y EL IVA
// NOTA: $this->dato->total (almacenado en DB) YA incluye comis_del (delivery) y,
// en ciertos flujos, también puede incluir comis_tar (comisión de tarjeta).
// Por eso comis_del NO se vuelve a sumar aquí; solo se detecta si falta comis_tar.
$pagosRegistrados = (float)$this->dato->pago_efe + (float)$this->dato->pago_tar + (float)$this->dato->pago_yape + (float)$this->dato->pago_plin + (float)$this->dato->pago_tran;
// Base sin comisión de tarjeta: total ya incluye delivery, no se agrega comis_del.
$importeBaseSinComTar = (float)$this->dato->total; // desc_monto ya está descontado en total
$importeBaseConComTar = $importeBaseSinComTar + (float)$this->dato->comis_tar;
$comisTarFaltanteEnTotal = 0.0;

if ((float)$this->dato->comis_tar > 0) {
    $esperadoSinComTar = (float)$total + (float)$this->dato->comis_del - (float)$this->dato->desc_monto;
    $esperadoConComTar = $esperadoSinComTar + (float)$this->dato->comis_tar;
    $deltaTotalSinComTar = abs((float)$this->dato->total - $esperadoSinComTar);
    $deltaTotalConComTar = abs((float)$this->dato->total - $esperadoConComTar);

    if ($deltaTotalSinComTar + 0.01 < $deltaTotalConComTar) {
        $comisTarFaltanteEnTotal = (float)$this->dato->comis_tar;
    } else if (!($deltaTotalConComTar + 0.01 < $deltaTotalSinComTar) && $pagosRegistrados > 0) {
        // Fallback cuando el total no permite inferir claramente el escenario.
        $deltaSinComTar = abs($pagosRegistrados - $importeBaseSinComTar);
        $deltaConComTar = abs($pagosRegistrados - $importeBaseConComTar);
        if ($deltaConComTar + 0.01 < $deltaSinComTar) {
            $comisTarFaltanteEnTotal = (float)$this->dato->comis_tar;
        }
    }
}

// Definido aquí para poder usarlo en la sección RESUMEN (OP.EXONERADA).
$esDescTipoUno = ((string)$this->dato->desc_tipo === '1' || (int)$this->dato->desc_tipo === 1);

$pdf->SetFont('Helvetica', 'B', 8);
$pdf->SetFillColor(246, 248, 251);
$pdf->Cell($ticketWidth, 5, 'RESUMEN', 0, 1, 'L', true);
// $total = suma de (cantidad * precio_unitario) del loop de productos = solo productos, sin delivery ni descuento.
$printAmountRow('SUB TOTAL', $total);

if (isset($this->dato->icbper) && $this->dato->icbper != '0.00') {
    $printAmountRow('ICBPER', $this->dato->icbper);
}


if ($this->dato->comis_del > 0) {
    $printAmountRow('COSTO DELIVERY', $this->dato->comis_del);
}



$printDivider(1, 1);

if ($this->dato->id_tdoc == 1 || $this->dato->id_tdoc == 2 || $this->dato->id_tdoc == 3) {
    if ($total_ope_gravadas > 0) {
        $printAmountRow('OP. GRAVADA', $total_ope_gravadas - $descuento_igv);
        // total ya incluye delivery; no se suma comis_del nuevamente.
        $montoIgv = ((float)$this->dato->total + $comisTarFaltanteEnTotal)
                    - ((float)$this->dato->total + $comisTarFaltanteEnTotal) / igv_dec2;
        $printAmountRow('IGV ' . igv_int . '%', $montoIgv);
    } else {
        // Para cortesía (desc_tipo=1), OP.EXONERADA debe ser 0 (el cliente no paga nada).
        // OP. EXONERADA muestra el monto bruto (sin descontar); DESCUENTO se muestra en línea separada.
        $printAmountRow('OP. EXONERADA', $esDescTipoUno ? 0 : ($total_ope_exoneradas + $this->dato->comis_del + $comisTarFaltanteEnTotal));
    }

    if ($this->dato->desc_monto > 0) {
        $montoDesc = ($tipo_afectacion == "10" ? $descuento_igv : $this->dato->desc_monto);
        $printAmountRow('DESCUENTO', -abs((float)$montoDesc));
    }
}
// total ya incluye delivery y descuento; no se resta desc_monto nuevamente.
$importeBase = (float)$this->dato->total + $comisTarFaltanteEnTotal;

// Si desc_tipo == 1, total mostrado en 0 y texto fijo
$importeMostrar = $esDescTipoUno ? 0.00 : $importeBase;
$textoSon      = 'SON: ' . ($esDescTipoUno ? 'CERO CON 00/100 SOLES' : numtoletras($importeBase));

$printDivider(1, 1);
$printAmountRow('TOTAL', $importeMostrar, true);
$pdf->Ln(1);
$pdf->SetFont('Helvetica', '', 8);
$pdf->MultiCell($ticketWidth, 4, $textoSon, 0, 'L');

$printDivider(1, 1);
$pdf->SetFillColor(246, 248, 251);
$pdf->SetFont('Helvetica', 'B', 8);
$pdf->Cell($ticketWidth, 5, 'PAGOS', 0, 1, 'L', true);

if ($this->dato->id_tpag == 1) {
    $printAmountRow('EFECTIVO', $this->dato->pago_efe);
} else if ($this->dato->id_tpag == 2) {
    // pago_tar incluye la comisión de tarjeta; mostrarla separada evita que parezca duplicada.
    $printAmountRow('TARJETA', $this->dato->pago_tar - $this->dato->comis_tar);
    if ($this->dato->comis_tar != 0) {
        $printAmountRow('COMISION', $this->dato->comis_tar);
    }
} else if ($this->dato->id_tpag == 3) {
    $printAmountRow('EFECTIVO', $this->dato->pago_efe);
    if ($this->dato->pago_tar != 0) {
        // Ídem: mostrar importe neto de tarjeta para evitar duplicar la comisión visualmente.
        $printAmountRow('TARJETA', $this->dato->pago_tar - $this->dato->comis_tar);
    }
    if ($this->dato->comis_tar != 0) {
        $printAmountRow('COMISION', $this->dato->comis_tar);
    }
    if ($this->dato->pago_culqui != 0) {
        $printAmountRow('CULQI', $this->dato->pago_culqui);
    }
    if ($this->dato->pago_tran != 0) {
        $printAmountRow('TRANSFERENCIA', $this->dato->pago_tran);
    }
    if ($this->dato->pago_plin != 0) {
        $printAmountRow('PLIN', $this->dato->pago_plin);
    }
    if ($this->dato->pago_yape != 0) {
        $printAmountRow('YAPE', $this->dato->pago_yape);
    }
}

if ($this->dato->id_tpag == 1) {
    $printDivider(1, 1);
    $pagoCon = (float)$this->dato->pago_efe_none;
    $pagoEfectivo = (float)$this->dato->pago_efe;
    if ($pagoCon < $pagoEfectivo) {
        $pagoCon = $pagoEfectivo;
    }
    $printAmountRow('PAGO CON', $pagoCon);
    $vuelto = $pagoCon - $pagoEfectivo;
    if ($vuelto < 0) {
        $vuelto = 0;
    }
    $printAmountRow('VUELTO', $vuelto, true);
}
// MIXTO: cada medio ya está desglosado arriba; no hay concepto de vuelto.

if ($this->dato->id_tpag > 3) {
    $montoMetodo = (float) $this->dato->pago_tar;
    if ((int) $this->dato->id_tpag === 5) {
        $montoMetodo = (float) $this->dato->pago_yape;
    } elseif ((int) $this->dato->id_tpag === 7) {
        $montoMetodo = (float) $this->dato->pago_tran;
    } elseif ((int) $this->dato->id_tpag === 8) {
        $montoMetodo = (float) $this->dato->pago_plin;
    }

    $printAmountRow('PAGO CON ' . strtoupper((string)$this->dato->desc_tp), $montoMetodo);
}

if ($this->dato->desc_tipo == 1) {
    // Mostrar el valor real consumido (suma de items), no el total financiero (que es 0).
    // $total es la suma acumulada de (cantidad * precio_unitario) del bucle de Detalle.
    $printAmountRow('CORTESIA', $total);
}
if ($this->dato->desc_tipo == 3) {
    $printAmountRow('CREDITO PERSONAL', $this->dato->desc_monto);
}

$printDivider(1, 2);
$pdf->SetFont('Helvetica', 'B', 8);
$pdf->Cell($ticketWidth, 4, utf8_decode('CONDICION DE PAGO: CONTADO'), 0, 1, 'L');
$printDivider(1, 2);

if (!empty($this->dato->observacion)) {
    // Titulo
    $pdf->SetFont('Helvetica', 'B', 9);
    $pdf->Cell($ticketWidth, 0, utf8_decode('OBSERVACIONES:'), 0, 1, 'L');
    $pdf->Ln(2);

    // Texto multi-linea
    $pdf->SetFont('Helvetica', '', 9);
    // 0 = ancho hasta margen derecho
    // 5 = altura de linea
    // 0 = sin borde, 'L' = alineacion izquierda
    $pdf->MultiCell(0, 5, utf8_decode($this->dato->observacion), 0, 'L');

    $pdf->Ln(2);
    $pdf->Cell($ticketWidth, 0, '', 'T');
    $pdf->Ln(3);
}

// CODIGO QR
$pdf->SetFont('Helvetica', 'B', 7);
if ($this->dato->id_tdoc == 3) {

    $pdf->MultiCell($ticketWidth, 4, utf8_decode('Puede ser cambiado o canjeado por otro documento de compra.'), 0, 'C');
    $pdf->Ln(2);
}

if (footercpe == true) {


    if ($this->dato->id_tdoc == 1 || $this->dato->id_tdoc == 2 || $this->dato->id_tdoc == 3) {
        $td = "";
        $tc = "";
        $tdc = "";
        $tdd = "";
        if ($this->dato->id_tdoc == 1) {
            $tc = "03";
            $tdd = "1";
            $tdc = $this->dato->Cliente->dni;
        }
        if ($this->dato->id_tdoc == 2) {
            $tc = "01";
            $tdd = "6";
            $tdc = $this->dato->Cliente->ruc;
        }
        if ($this->dato->id_tdoc == 3) {
            $tc = "NV";
            $tdd = $this->dato->Cliente->tipo_cliente == 2 ? "6" : "1";
            $tdc = $this->dato->Cliente->tipo_cliente == 2 ? $this->dato->Cliente->ruc : $this->dato->Cliente->dni;
        }
        $nombreqr = $tc . "-" . $td . $this->dato->ser_doc . "-" . $this->dato->nro_doc;
        $text_qr = $this->empresa['ruc'] . '|' . $tc . '|' . $this->dato->ser_doc . '|' . $this->dato->nro_doc . '|' . number_format(($total_igv_gravadas + $total_igv_exoneradas), 2) . '|' . number_format(($this->dato->total), 2) . '|' . date('Y-m-d', strtotime($this->dato->fec_ven)) . '|' . $tdd . '|' . $tdc . '|' . $this->dato->hash_cdr;
        $qrDir = 'api_fact/UBL21/archivos_xml_sunat/imgqr';
        if (!is_dir($qrDir)) {
            @mkdir($qrDir, 0775, true);
        }
        $ruta_qr = $qrDir . '/QR_' . $nombreqr . '.png';
        $qr = $ruta_qr;

        if (!file_exists($ruta_qr)) {
            @QRcode::png($text_qr, $qr, 'Q', 15, 0);
        }
        if (file_exists($ruta_qr)) {
            $pdf->Cell(25, 10, $pdf->Image($ruta_qr, 2, $pdf->GetY(), 20), 0);
        }
    }

    $copyright = '';

    if (desarrollador != '') {
        $copyright .= copyright;
        $copyright .= "\n";
    }
    if (webdesarrollador != '') {
        $copyright .= webdesarrollador;
        $copyright .= "\n";
    }
    if (descripcion != '') {
        $copyright .= descripcion;
    }

    if ($this->dato->id_tdoc == 3) {
        $pdf->MultiCell(70, 5, $copyright, 0, 'C');
    } else {
        $pdf->MultiCell(45, 5, $copyright, 0, 'C');
    }

    $pdf->Ln(7);
} else {


    if ($this->dato->id_tdoc == 1 || $this->dato->id_tdoc == 2 || $this->dato->id_tdoc == 3) {
        $td = "";
        $tc = "";
        $tdc = "";
        $tdd = "";
        if ($this->dato->id_tdoc == 1) {
            $tc = "03";
            $tdd = "1";
            $tdc = $this->dato->Cliente->dni;
        }
        if ($this->dato->id_tdoc == 2) {
            $tc = "01";
            $tdd = "6";
            $tdc = $this->dato->Cliente->ruc;
        }
        if ($this->dato->id_tdoc == 3) {
            $tc = "NV";
            $tdd = $this->dato->Cliente->tipo_cliente == 2 ? "6" : "1";
            $tdc = $this->dato->Cliente->tipo_cliente == 2 ? $this->dato->Cliente->ruc : $this->dato->Cliente->dni;
        }
        $nombreqr = $tc . "-" . $td . $this->dato->ser_doc . "-" . $this->dato->nro_doc;
        $text_qr = $this->empresa['ruc'] . '|' . $tc . '|' . $this->dato->ser_doc . '|' . $this->dato->nro_doc . '|' . number_format(($total_igv_gravadas + $total_igv_exoneradas), 2) . '|' . number_format(($this->dato->total), 2) . '|' . date('Y-m-d', strtotime($this->dato->fec_ven)) . '|' . $tdd . '|' . $tdc . '|' . $this->dato->hash_cdr;
        $qrDir = 'api_fact/UBL21/archivos_xml_sunat/imgqr';
        if (!is_dir($qrDir)) {
            @mkdir($qrDir, 0775, true);
        }
        $ruta_qr = $qrDir . '/QR_' . $nombreqr . '.png';
        $qr = $ruta_qr;

        if (!file_exists($ruta_qr)) {
            @QRcode::png($text_qr, $qr, 'Q', 15, 0);
        }
        //	$pdf->Cell(25, 10,$pdf->Image($ruta_qr,2,$pdf->GetY(),20), 0); 
    }

    $pdf->Ln(20);
}

$pdf->MultiCell($ticketWidth, 4, utf8_decode('Representacion impresa de la ' . $this->dato->desc_td) . ' ' . $elec . ' consulte en', 0, 'C');
// $pdf->Cell(25, 10,' ',0);
//$pdf->MultiCell(72,4,URL.'consulta',0,'C'); // ACTIVAR PARA CONSULTAS ONLINE
$pdf->MultiCell($ticketWidth, 4, 'https://bit.ly/ConsultaValidezCPE', 0, 'C'); //ACTIVAR PARA CONSULTAS OFFLINE
$pdf->Ln(2);

if ($this->empresa['amazonas'] == 1) {
    if ($total_ope_exoneradas > 0) {
        $pdf->SetFont('Helvetica', '', 7);
        $pdf->MultiCell($ticketWidth, 4, utf8_decode('BIENES TRANSFERIDOS EN LA AMAZONIA PARA SER CONSUMIDOS EN LA MISMA'), 0, 'C');
        $pdf->Ln(5);
    }
}
// $pdf->SetFont('Helvetica', 'B', 9);
// $pdf->Cell(72,0,'GRACIAS POR SU PREFERENCIA',0,1,'C');
// $pdf->Ln(10);
//$pdf->Output('ticket.pdf','F');
// $pdf->Output('ticket.pdf','I');
$pdf->Output(utf8_decode($this->dato->ser_doc) . '-' . utf8_decode($this->dato->nro_doc) . '.pdf', 'I');
?>
