<?php

header("Content-Type: text/html;charset=utf-8");
require_once('../estructura_apropiacion.php');
require_once('../estructura_saldo_obligacion.php');
require '../fpdf/fpdf.php';
require '../Conexion/conexion.php';
require_once('../Conexion/ConexionPDO.php');

session_start();
$con  = new ConexionPDO();
$compania   = $_SESSION['compania'];
$conexion = $_SESSION['conexion'];
##################### COMPANIA #######################
$rowC = $con->Listar("SELECT 
                ter.ruta_logo
FROM gf_tercero ter
LEFT JOIN   gf_tipo_identificacion ti ON ter.tipoidentificacion = ti.id_unico
LEFT JOIN       gf_direccion dir ON dir.tercero = ter.id_unico
LEFT JOIN   gf_telefono  tel ON tel.tercero = ter.id_unico
LEFT JOIN       gf_ciudad c ON ter.ciudadresidencia = c.id_unico 
LEFT JOIN       gf_ciudad c2 ON ter.ciudadidentificacion = c2.id_unico 
LEFT JOIN       gf_departamento d1 ON c.departamento = d1.id_unico 
LEFT JOIN       gf_departamento d2 ON c2.departamento = d2.id_unico 
WHERE ter.id_unico = $compania");

$ruta_logo   = $rowC[0][0];

#########################Modificaciones#######################
#08-02-2017|4:34|Jhon Numpaque
#Cambio de tipo de nombre
$rowComp = $con->Listar("SELECT comp.id_unico, comp.numero, comp.fecha, comp.descripcion, comp.fechavencimiento, comp.tipocomprobante, tipCom.codigo, tipCom.nombre, comp.tercero 
      FROM gf_comprobante_pptal comp, gf_tipo_comprobante_pptal tipCom
      WHERE comp.tipocomprobante = tipCom.id_unico 
      AND comp.id_unico = " . $_SESSION['id_comp_pptal_EO'] . "");
$nomcomp = $rowComp[0][1]; //Número de comprobante      
$fechaComp = $rowComp[0][2]; //Fecha       
$descripcion = $rowComp[0][3]; //Descripción  
$fechaVen = $rowComp[0][4]; //Fecha de vencimiento  
$tipocomprobante = $rowComp[0][5]; //id tipo comprobante  
$codigo = $rowComp[0][6]; //Código de tipo comprobante  
$nombre = $rowComp[0][7]; //Nombre de tipo comprobante  
$terceroComp = intval($rowComp[0][8]); //Tercero del comprobante
$idComp = $rowComp[0][0];
$rowT = $con->Listar("SELECT nombreuno, nombredos, apellidouno, apellidodos, razonsocial, numeroidentificacion 
      FROM gf_tercero
      WHERE id_unico = " . $terceroComp . "");
if ($rowT[0][0] != null || $rowT[0][1] != null || $rowT[0][2] != null || $rowT[0][3] != null) {
  $razonSoc = $rowT[0][0] . ' ' . $rowT[0][1] . ' ' . $rowT[0][2] . ' ' . $rowT[0][3];
} else {
  $razonSoc = $rowT[0][4];
}

$nit = $rowT[0][5];

class PDF_MC_Table extends FPDF
{
  var $widths;
  var $aligns;
  function SetWidths($w)
  {
    //Set the array of column widths
    $this->widths = $w;
  }
  function SetAligns($a)
  {
    //Set the array of column alignments
    $this->aligns = $a;
  }
  function fill($f)
  {
    //juego de arreglos de relleno
    $this->fill = $f;
  }
  function Row($data)
  {
    //Calculate the height of the row
    $nb = 0;
    for ($i = 0; $i < count($data); $i++)
      $nb = max($nb, $this->NbLines($this->widths[$i], $data[$i]));
    $h = 5 * $nb;
    //Issue a page break first if needed
    $this->CheckPageBreak($h);
    //Draw the cells of the row
    for ($i = 0; $i < count($data); $i++) {
      $w = $this->widths[$i];
      $a = isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';
      //Save the current position
      $x = $this->GetX();
      $y = $this->GetY();
      //Draw the border
      $this->Rect($x, $y, $w, $h, $style);
      //Print the text
      $this->MultiCell($w, 5, $data[$i], 'LTR', $a, $fill);
      //Put the position to the right of the cell
      $this->SetXY($x + $w, $y);
    }
    //Go to the next line
    $this->Ln($h - 5);
  }
  function CheckPageBreak($h)
  {
    //If the height h would cause an overflow, add a new page immediately
    if ($this->GetY() + $h > $this->PageBreakTrigger)
      $this->AddPage($this->CurOrientation);
  }
  function NbLines($w, $txt)
  {
    //Computes the number of lines a MultiCell of width w will take
    $cw = &$this->CurrentFont['cw'];
    if ($w == 0)
      $w = $this->w - $this->rMargin - $this->x;
    $wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
    $s = str_replace('\r', '', $txt);
    $nb = strlen($s);
    if ($nb > 0 and $s[$nb - 1] == '\n')
      $nb–;
    $sep = -1;
    $i = 0;
    $j = 0;
    $l = 0;
    $nl = 1;
    while ($i < $nb) {
      $c = $s[$i];
      if ($c == '\n') {
        $i++;
        $sep = -1;
        $j = $i;
        $l = 0;
        $nl++;
        continue;
      }
      if ($c == '')
        $sep = $i;
      $l += $cw[$c];
      if ($l > $wmax) {
        if ($sep == -1) {
          if ($i == $j)
            $i++;
        } else
          $i = $sep + 1;
        $sep = -1;
        $j = $i;
        $l = 0;
        $nl++;
      } else
        $i++;
    }
    return $nl;
  }
  #Función de pie de pagina
  function Footer()
  {
    // Posición: a 1,5 cm del final
    $this->SetY(-15);
    // Arial italic 8
    $this->SetFont('Arial', 'B', 8);
    // Número de página 
    $dia = date('d');
    $mes = date('m');
    $anio = date('Y');
    $fecha = $dia . '/' . $mes . '/' . $anio;
    //$this->Cell(25,10,'Fecha: '.date('d-m-Y'),0,0,'L');
    $this->Cell(25, 10, 'Fecha: ' . $fecha, 0, 0, 'L');
    $this->Cell(50);
    $this->Cell(35, 10, 'Maquina ' .  gethostname(), 0);
    $this->Cell(40);
    $this->Cell(30, 10, 'Usuario ' . get_current_user(), 0);
    $this->Cell(50);
    $this->Cell(0, 10, 'Pagina ' . $this->PageNo() . '/{nb}', 0, 0);
  }
  #Funcón cabeza de la página
  function Header()
  {
    $dia = date('d');
    $mes = date('m');
    $anio = date('Y');
    $fecha = $dia . '/' . $mes . '/' . $anio;
    // Logo

    $this->SetFont('Arial', 'B', 10);
    $this->Cell(100);
    // Título


    /* */
    $this->Ln(4);
  }
}
// Creación del objeto de la clase heredada
$pdf = new PDF_MC_Table();        //Cabeza


$nb = $pdf->AliasNbPages();

$pdf->AddPage();
$pdf->AliasNbPages();
$pdf->SetFont('Arial', 'B', 10);

//Cabecera para Página 1
$pdf->SetXY(22, 8);
$pdf->SetFont('Arial', 'B', 8);
if ($ruta_logo != '') {
  $pdf->Image('../' . $ruta_logo, 12, 1, 28);
}

$pdf->SetXY(180, 8);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(20, 5, utf8_decode('Código SGC'), 0, 0, 'L'); // Fecha: Descripción

$pdf->SetXY(180, 14);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(20, 5, utf8_decode('Versión SGC'), 0, 0, 'L'); // Fecha: Descripción

$pdf->SetXY(180, 20);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(20, 5, utf8_decode('Fecha SGC'), 0, 0, 'L'); // Fecha: Descripción


//Cabecera para Página 1
//$pdf->SetXY(125,13);
$pdf->SetXY(10, 13);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(190, 5, utf8_decode(ucwords(strtolower($nombre))), 0, 0, 'C');

$pdf->SetXY(10, 26);
$pdf->Cell(190, 0, '', 1, 0, ''); //Línea 


$pdf->SetXY(10, 28);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(30, 5, 'Fecha Comprobante: ', 1, 0, 'L'); // Fecha: Descripción

$pdf->SetXY(40, 28);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(20, 5, $fechaComp, 1, 0, 'L'); // Fecha: Descripción

///===================================================
$pdf->SetXY(132, 28);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(35, 5, 'No. Comprobante: ', 1, 0, 'L'); // Fecha: Descripción

$pdf->SetXY(10, 34);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(30, 5, 'Fecha vencimiento: ', 1, 0, 'L'); // Fecha: Descripción

$pdf->SetXY(40, 34);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(20, 5, $fechaVen, 1, 0, 'L'); // Fecha: Descripción

//======================================================

$pdf->SetXY(132, 34);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(35, 5, 'Comprobante Afectado: ', 1, 0, 'L'); // Fecha: Descripción
//Fin Cabecera Página 1

$pdf->SetXY(167, 34);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(30, 5, 55555, 1, 0, 'L'); // Fecha: Descripción

$pdf->SetXY(167, 28);
$pdf->SetFont('Arial', 'B', 8);
$pdf->Cell(30, 5, $nomcomp, 1, 0, 'L'); // Fecha: Descripción

$pdf->Ln(15);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(190, 5, utf8_decode('Información Tercero'), 1, 0, 'C');

$pdf->Ln(5);


$pdf->Ln(1);
$pdf->Cell(50, 5, utf8_decode('Cédula / NIT:'), 0, 0, 'L');
$pdf->Cell(40, 5, utf8_decode($GLOBALS['nit']), 0, 0, 'L');

$pdf->Ln(5);
$pdf->Cell(50, 2, utf8_decode('Razón Social:'), 0, 0, 'L');
$pdf->Cell(50, 5, utf8_decode($GLOBALS['razonSoc']), 0, 0, 'L');

$pdf->Ln(5);
$pdf->Cell(50, 5, utf8_decode('Objeto:'), 0, 0, 'L');
$pdf->MultiCell(120, 5, utf8_decode(ucwords(mb_strtolower($GLOBALS['descripcion']))), 0, 'L');


$pdf->Ln(5);
$pdf->Cell(50, 5, utf8_decode('Dirección:'), 0, 0, 'L');
$pdf->Ln(10);
// rubro1, fuente4, tercero, proyecto5, valor2, valor afectado.
$pdf->SetFont('Arial', 'B', 7, 0, 'C');

$pdf->Cell(40, 5, 'Rubro', 1, 0, 'C');
$pdf->Cell(50, 5, 'Fuente', 1, 0, 'C');
$pdf->Cell(30, 5, 'Tercero', 1, 0, 'C');
$pdf->Cell(30, 5, 'Proyecto', 1, 0, 'C');
$pdf->Cell(20, 5, 'Valor', 1, 0, 'C');
$pdf->Cell(20, 5, 'Valor Afectado', 1, 0, 'C');
$pdf->Ln();

$pdf->SetFont('Arial', '', 7);

//Consulta SQL
$detalle = $con->Listar("SELECT detComP.id_unico, rub.nombre, detComP.valor, rubFue.id_unico, fue.nombre, proy.nombre, detComP.tercero, detComP.proyecto      
      FROM gf_detalle_comprobante_pptal detComP
      left join gf_rubro_fuente rubFue on detComP.rubrofuente = rubFue.id_unico 
      left join gf_rubro_pptal rub on rubFue.rubro = rub.id_unico 
      left join gf_concepto_rubro conRub on conRub.id_unico = detComP.conceptorubro
      left join gf_concepto con on con.id_unico = conRub.concepto 
      left join gf_fuente fue on fue.id_unico = rubFue.fuente 
      left join gf_tercero terc on terc.id_unico = detComP.tercero 
      left join gf_proyecto proy on proy.id_unico = detComP.proyecto
      where detComP.comprobantepptal =  " . $_SESSION['id_comp_pptal_EO'] . "");

// Los tipos de perfiles que se encunetran en la tabla gf_tipo_perfil.
$natural = array(2, 3, 5, 7, 10);
$juridica = array(1, 4, 6, 8, 9);

// rubro, fuente, tercero, proyecto, valor, valor afectado.
for ($rowDetall = 0; $rowDetall < count($detalle); $rowDetall++) {
  $rowTer = $con->Listar("SELECT ter.id_unico, ter.nombreuno, ter.nombredos, ter.apellidouno, ter.apellidodos, ter.razonsocial, ter.numeroidentificacion, perTer.perfil     
                        FROM gf_tercero ter 
                        LEFT JOIN gf_perfil_tercero perTer ON perTer.tercero = ter.id_unico 
                        WHERE ter.id_unico = " . $detalle[$rowDetall][6] . "");

  if (in_array($rowTer[0][7], $natural)) {
    $tercero = ucwords(strtolower($rowTer[0][1])) . ' ' . ucwords(strtolower($rowTer[0][2])) . ' ' . ucwords(strtolower($rowTer[0][3])) . ' ' . ucwords(strtolower($rowTer[0][4])) . ' ' . $rowTer[0][6];
  } elseif (in_array($rowTer[0][7], $juridica)) {
    $tercero = ucwords(strtolower($rowTer[0][5])) . ' ' . $detalle[$rowTer][0][6];
  }

  $codp = $codp + 1;
  #$pdf->Cell(40,5,utf8_decode($rowDetall[1]),0,0,'L'); //Rubro
  #$pdf->Cell(30,5,utf8_decode($rowDetall[4]),0,0,'L'); //Fuente
  #$pdf->Cell(30,5,utf8_decode($tercero),0,0,'L'); //Tercero
  #$pdf->Cell(30,5,utf8_decode($rowDetall[5]),0,0,'L'); //Proyecto
  $valor = number_format($detalle[$rowDetall][2], 2, '.', ',');
  #$pdf->Cell(20,5,$valor,0,0,'R'); //Valor

  $valorAfectado = afectacionRegistro($detalle[$rowDetall][0], $detalle[$rowDetall][3], 14);
  $valorAfectado = number_format($valorAfectado, 2, '.', ',');
  #$pdf->Cell(20,5,$valorAfectado,0,0,'R'); //Valor Afectado
  $pdf->SetWidths(array(40, 50, 30, 30, 20, 20));
  #Definición de alinamientos y cosntrucción de array
  $pdf->SetAligns(array('L', 'L', 'L', 'R', 'R'));
  #Llamado de clase filla y consutrucción de array con datos a imprimir
  $pdf->Row(array(utf8_decode($detalle[$rowDetall][1]), utf8_decode($detalle[$rowDetall][4]), utf8_decode($tercero), utf8_decode($detalle[$rowDetall][5]), $valor, $valorAfectado));
  $pdf->Ln(5);
}

//Consulta SQL
switch ($conexion) {
  case 1:
    $tipComp = $con->Listar("SELECT   
            IF(CONCAT_WS(' ',
            tr.nombreuno,
            tr.nombredos,
            tr.apellidouno,
            tr.apellidodos) 
            IS NULL OR CONCAT_WS(' ',
            tr.nombreuno,
            tr.nombredos,
            tr.apellidouno,
            tr.apellidodos) = '',
            (tr.razonsocial),
            CONCAT_WS(' ',
            tr.nombreuno,
            tr.nombredos,
            tr.apellidouno,
            tr.apellidodos)) AS NOMBRE , tr.numeroidentificacion,c.nombre
    FROM gf_responsable_documento rd 
    LEFT JOIN gf_tercero tr ON rd.tercero = tr.id_unico
    LEFT JOIN gf_cargo_tercero ct ON ct.tercero = tr.id_unico
    LEFT JOIN gf_cargo c ON ct.cargo = c.id_unico
    LEFT JOIN gf_tipo_documento td ON rd.tipodocumento = td.id_unico
    WHERE td.nombre = 'Registro Obligacion Solo Presupuestal'
    ORDER BY rd.orden ASC");
    break;
  case 2:
    $tipComp = $con->Listar("SELECT
    TRIM(tr.nombreuno || ' ' || tr.nombredos || ' ' || tr.apellidouno || ' ' || tr.apellidodos || ' ' || tr.razonsocial) AS NOMBRE,
     tr.numeroidentificacion,
     c.nombre
    FROM gf_responsable_documento rd
    LEFT JOIN gf_tercero tr ON rd.tercero = tr.id_unico
    LEFT JOIN gf_cargo_tercero ct ON ct.tercero = tr.id_unico
    LEFT JOIN gf_cargo c ON ct.cargo = c.id_unico
    LEFT JOIN gf_tipo_documento td ON rd.tipodocumento = td.id_unico
    WHERE td.nombre = 'Registro Obligacion Solo Presupuestal'
    ORDER BY rd.orden ASC");
    break;
  default:
    break;
}

$altofinal = $pdf->GetY();
$altop = $pdf->GetPageHeight();
$altofirma = $altop - $altofinal;

//$rowTipComp = mysqli_fetch_array($tipComp);
$pdf->SetY(-33);
$c = count($tipComp);

$tfirmas = ($c / 2) * 33;

if ($tfirmas > $altofirma)
  $pdf->AddPage();
$pdf->SetY(-33);
$xt = 10;
for ($firma = 0; $firma < count($tipComp); $firma++) {
  if ($xt < 50) {
    #Construcción de linea firma
    $xm = 10;
    $pdf->setX($xm);
    $pdf->SetFont('Arial', 'B', 10);
    #Linea para firma
    $pdf->Cell(60, 0, '', 1);
    #Varibles x,y
    $x = $pdf->GetX();
    $y = $pdf->GetY();
    #Salto de linea
    $pdf->Ln(3);
    $pdf->setX($xm);
    #Impresión de responsable de documento
    $pdf->Cell(190, 2, utf8_decode($tipComp[$firma][0]), 0, 0, 'L');
    #Salto de linea
    $pdf->Ln(3);
    $pdf->setX($xm);
    #Tipo de texto
    $pdf->SetFont('Arial', '', 8);
    #Impresión de tipo de documento y numero documento
    #$pdf->Cell(190,2,$firma[2].utf8_decode(PHP_EOL.':'.PHP_EOL.$firma[3]),0,0,'L');
    #$pdf->Cell(190,2,utf8_decode($firma[1]),0,0,'L');
    #Salto de linea
    $pdf->Ln(3);
    $pdf->setX($xm);
    #Tipo de texto
    $pdf->SetFont('Arial', 'B', 8);
    #Impresión de cargo de responsable de documento
    $pdf->Cell(190, 2, utf8_decode($tipComp[$firma][2]), 0, 0, 'L');
    $pdf->setX($xm);
    #Obtención de alto final        
    $x2 = $pdf->GetX();
    #Posición final de firma 2    
    $pdf->Ln(0);
    $xt = 120;
  } else {
    $xn = 120;
    $pdf->SetY($y);
    #Construcción de linea firma
    $pdf->SetFont('Arial', 'B', 10);
    $pdf->setX($xn);
    #Linea para firma
    $pdf->Cell(60, 0, '', 1);
    #Varibles x,y
    $x = $pdf->GetX();
    #alto inicial
    $y = $pdf->GetY();
    #Salto de linea
    $pdf->Ln(3);
    $pdf->setX($xn);
    #Impresión de responsable de documento
    $pdf->Cell(190, 2, utf8_decode($tipComp[$firma][0]), 0, 0, 'L');
    #Salto de linea
    $pdf->Ln(3);
    $pdf->setX($xn);
    #Tipo de texto
    $pdf->SetFont('Arial', '', 8);
    #Impresión de tipo de documento y numero documento
    #$pdf->Cell(190,2,$tipComp[$firma][2].utf8_decode(PHP_EOL.':'.PHP_EOL.$tipComp[$firma][3]),0,0,'L');
    #$pdf->Cell(190,2,utf8_decode($tipComp[$firma][1]),0,0,'L');
    #Salto de linea
    $pdf->Ln(3);
    $pdf->setX($xn);
    #Tipo de texto
    $pdf->SetFont('Arial', 'B', 8);
    #Impresión de cargo de responsable de documento
    $pdf->Cell(190, 2, utf8_decode($tipComp[$firma][2]), 0, 0, 'L');
    #Obtención de alto final      
    $x2 = $pdf->GetX();
    #Posición del ancho     
    $posicionY = $y - 20;
    #Ubicación firma 2
    $pdf->SetXY($x2, $posicionY);
    #Posición final de firma
    $xt = 0;
  }
}

ob_end_clean();
$pdf->Output(0, 'Informe_obligacion_presupuestal (' . $nomcomp . ').pdf', 0);
