<?php

Yii::createComponent('application.extensions.fpdf181.fpdf');
Yii::import('application.models.FuncionesFpdf');

$comprobante_data = Comprobante::model()->find('id=:id_comprobante AND blnborrado=false', [':id_comprobante' => $comprobante]);

//Instancia del PDF y parametros iniciales del reporte
$fpdf = new FuncionesFpdf('P', 'mm', 'Letter');
$fpdf->AliasNbPages();
$fpdf->AddPage();
$fpdf->SetAutoPageBreak(true, 17);

$nlogo = Empresa::model()->find()->logo;
$logo = dirname(Yii::app()->getBasePath()).'/images/'.$nlogo;
$nombre_empresa = utf8_decode(Empresa::Nombre());
$rif = utf8_decode(Empresa::Rif());
$sector_registro = utf8_decode('SECTOR: '.Empresa::Sector().'      NÚMERO DE REGISTRO: '.Empresa::RegistroSUDECA());
$titulo = 'DETALLE DEL COMPROBANTE CONTABLE '.$comprobante_data->numero;
$coletilla = '(EXPRESADO EN Bs.)';
$header_text = $nombre_empresa."\n".$rif."\n".$sector_registro;
$fpdf->setLogo($logo);
$fpdf->setText($header_text);
$fpdf->Header();

$anchos_tabla1 = [30, 35, 91, 40];
$borde = 0;
$fpdf->SetFont('Arial', 'B', 8);

if ($comprobante_data) {
    //MAQUETANDO PRIMERA TABLA
    //encabezado de la tabla
    $fpdf->SetX(11);
    $fpdf->Cell($anchos_tabla1[0], 5, 'Fecha comprobante', $borde, 0, 'C');

    $x = $fpdf->GetX();
    $y = $fpdf->GetY();
    $fpdf->SetXY($x, $y);
    $fpdf->Cell($anchos_tabla1[1], 5, utf8_decode('Número Comprobante'), $borde, 0, 'C');

    $fpdf->SetXY($x = $x + $anchos_tabla1[1], $y);
    $fpdf->Cell($anchos_tabla1[2], 5, utf8_decode('Descripción'), $borde, 0, 'C');

    $fpdf->SetXY($x = $x + $anchos_tabla1[2], $y);
    $fpdf->Cell($anchos_tabla1[3], 5, 'Estatus', $borde, 0, 'C');
    $fpdf->Ln();

    //Rellenando celdas con datos
    $desc = $comprobante_data->descripcion;

    $n = 0;
    $n = max($n, $fpdf->NbLines($anchos_tabla1[2], $desc));
    $h = 5 * $n;

    $fpdf->SetFont('Arial', '', 8);
    $fpdf->SetX(11);
    $fpdf->Cell($anchos_tabla1[0], 5, Yii::app()->format->date($comprobante_data->fecha_comprobante), $borde, 0, 'C');

    $fpdf->Cell($anchos_tabla1[1], 5, $comprobante_data->num_comprobante, $borde, 0, 'C');

    $x = $fpdf->GetX();
    $y = $fpdf->GetY();
    $fpdf->SetXY($x, $y);
    $fpdf->MultiCell($anchos_tabla1[2], 5, utf8_decode($desc), $borde, 'J');

    $fpdf->SetXY($x = $x + $anchos_tabla1[2], $y);
    $fpdf->Cell($anchos_tabla1[3], 5, utf8_decode($comprobante_data->estatus->descripcion), $borde, 0, 'C');
}

$fpdf->Ln($h + 3);
$anchos_tabla2 = [45, 56, 19, 26, 26, 26];
$comprobante_data2 = $comprobante_data->detalleComprobante();

$fpdf->SetFont('Arial', 'B', 8);
$fpdf->Cell(35, 5, 'Movimientos: '.count($comprobante_data2), 0, 0, 'L');

$fpdf->SetX(90);
$fpdf->Cell(35, 5, 'ASIENTOS', 0, 0, 'C');
$fpdf->Ln(6);

$font_size = 8;
$fpdf->SetFont('Arial', 'B', 8);
//MAQUETANDO SEGUNDA TABLA
//Encabezado
$fpdf->Cell($anchos_tabla2[0], 5, 'Cod. cuenta', 0, 0, 'C');
$fpdf->Cell($anchos_tabla2[1], 5, utf8_decode('Descricpión'), 0, 0, 'C');
$fpdf->Cell($anchos_tabla2[2], 5, 'Fecha ref.', 0, 0, 'C');
$fpdf->Cell($anchos_tabla2[3], 5, 'Referencia', 0, 0, 'C');
$fpdf->Cell($anchos_tabla2[4], 5, 'Debe', 0, 0, 'C');
$fpdf->Cell($anchos_tabla2[5], 5, 'Haber', 0, 0, 'C');
$fpdf->Ln();

$fpdf->SetFont('Arial', '', $font_size);
if ($comprobante_data2) {
    foreach ($comprobante_data2 as $key => $value) {
        $cuenta_desc = $value['codigo_cuenta'];
        $desc2 = $value['descripcion'];

        $na = 0;
        $na = max($na, $fpdf->NbLines($anchos_tabla2[0], $cuenta_desc));
        $h1 = 5 * $na;

        $nb = 0;
        $nb = max($nb, $fpdf->NbLines($anchos_tabla2[1], $desc2));
        $h2 = 5 * $nb;
        $h_max = 0;

        $x2 = $fpdf->GetX();
        $y2 = $fpdf->GetY();

        //Se evalua que altura (h1 o h2) tiene el valor mas alto
        if ($h1 > $h2) {
            $h_max = $h1 + 1;

            $fpdf->SetXY($x2, $y2);
            // $fpdf->Rect($x2, $y2, $anchos_tabla2[0], $h1);
            $fpdf->MultiCell($anchos_tabla2[0], 5, utf8_decode($cuenta_desc), 0, 'L');

            $fpdf->SetXY($x2 = $x2 + $anchos_tabla2[0], $y2);
            // $fpdf->Rect($x2,$y2,$anchos_tabla2[1],$h1);
            $fpdf->MultiCell($anchos_tabla2[1], 5, utf8_decode($desc2), 0, 'J');
        } elseif ($h1 < $h2) {
            $h_max = $h2;

            $fpdf->SetXY($x2, $y2);
            // $fpdf->Rect($x2,$y2,$anchos_tabla2[0],$h2);
            $fpdf->MultiCell($anchos_tabla2[0], 5, utf8_decode($cuenta_desc), 0, 'J');

            $fpdf->SetXY($x2 = $x2 + $anchos_tabla2[0], $y2);
            //$fpdf->Rect($x2,$y2,$anchos_tabla2[1],$h_max);
            $fpdf->MultiCell($anchos_tabla2[1], 5, utf8_decode($desc2), 0, 'J');
        } else {
            $h_max = $h2;

            $fpdf->SetXY($x2, $y2);
            // $fpdf->Rect($x2,$y2,$anchos_tabla2[0],$h2);
            $fpdf->MultiCell($anchos_tabla2[0], 5, utf8_decode($cuenta_desc), 0, 'J');

            $fpdf->SetXY($x2 = $x2 + $anchos_tabla2[0], $y2);
            //$fpdf->Rect($x2,$y2,$anchos_tabla2[1],$h2);
            $fpdf->MultiCell($anchos_tabla2[1], 5, utf8_decode($desc2), 0, 'J');
        }

        $fpdf->SetXY($x2 = $x2 + $anchos_tabla2[1], $y2);
        $fpdf->Cell($anchos_tabla2[2], 5, Yii::app()->format->date($value['fecha_referencia']), 0, 0, 'C');

        $fpdf->SetXY($x2 = $x2 + $anchos_tabla2[2], $y2);
        //$fpdf->Rect($x2,$y2,$anchos_tabla2[3],$h_max);
        $fpdf->MultiCell($anchos_tabla2[3], 5, $value['referencia'], 0, 'J');

        $fpdf->SetXY($x2 = $x2 + $anchos_tabla2[3], $y2);
        $fpdf->Cell($anchos_tabla2[4], 5, Yii::app()->format->number($value['monto_debe']), 0, 0, 'R');
        $fpdf->Cell($anchos_tabla2[5], 5, Yii::app()->format->number($value['monto_haber']), 0, 0, 'R');

        // Espacio entre movimientos
        $fpdf->Ln($h_max+6);
        $fpdf->CheckPageBreak($h_max);

        if ($key == (count($comprobante_data2) - 1)) {
            $total_dif = DiferenciaComprobante::model()->find('clv_comprobante='.$comprobante);

            $fpdf->SetX(130);
            $fpdf->SetFont('Arial', 'BI', $font_size);
            $fpdf->Cell($anchos_tabla2[3], 5, 'Sub-Totales: ', 0, 0, 'C');

            if (! empty($total_dif)) {
                $fpdf->Cell($anchos_tabla2[4], 5, number_format($total_dif->monto_d, 2, ',', '.'), 0, 0, 'R');
                $fpdf->Cell($anchos_tabla2[5], 5, number_format($total_dif->monto_h, 2, ',', '.'), 0, 0, 'R');
            }

            $fpdf->Ln();
            $fpdf->CheckPageBreak($h_max);

            $fpdf->SetX(131);
            $fpdf->Cell($anchos_tabla2[4], 5, 'Diferencia: ', 0, 0, 'C');

            if (! empty($total_dif)) {
                $fpdf->SetX(156);
                $fpdf->Cell($anchos_tabla2[4], 5, Yii::app()->format->number(round($total_dif->diferencia)), 0, 0, 'R');
            }
        }
    }
}

$fpdf->SetFont('Arial', '', $font_size);
$fpdf->Output('Comprobante contable nro.('.$comprobante_data->numero.') - '.date('d-m-Y').'.pdf', 'D');
exit;
