<?php

/**
 * format_nomina_compensa actions.
 *
 * @package    nomina
 * @subpackage format_nomina_compensa
 * @author     ManuelEnriqueParedesLopez
 * @version    SVN: $Id: actions.class.php 23810 2016-11-12 11:07:44Z Kris.Wallsmith $ 
 */
class format_nomina_compensaActions extends sfActions {

    /**
     * 
     * @param sfWebRequest $request
     */
    public function executePdf(sfWebRequest $request) {

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("--------------------------------------------------* Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        try {
            /*
             * Formato de fecha
             */
            //Sql
            $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD" 
EOD;
            //Ejecutar SQL
            CN_TABLE::executeSQL($sql);
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            die();
        }
    }

    /**
     * 
     * @param sfWebRequest $request
     */
    public function executeExcel(sfWebRequest $request) {



        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("--------------------------------------------------* Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");


        $headfirst = array(
            "TIPO DOCUMENTO APORTANTE",
            "NUMERO DOCUMENTO APORTANTE",
            "RAZON SOCIAL",
            "NATURALEZA JURIDICA",
            "TIPO DE APORTANTE",
            "APORTA ESAP Y MEN",
            "SUJETO PASIVO DEL IMPUESTO SOBRE LA RENTA PARA LA EQUIDAD CREE",
            "ID_EXPEDIENTE",
            "TIPO DE ACTO"
        );


        $headsecond = array(
            "Datos basicos del trabajador o asociado",
            "Periodo nomina",
            "Novedades",
            "Reporte de dias"
        );




        $head = array(
            "ORDEN",
            "TIPO COTIZANTE",
            "SUBTIPO COTIZANTE",
            "CONDICION ESPECIAL EMPRESA",
            "CONDICION ESPECIAL DEL TRABAJOR O ASOCIADO",
            "EXTRANJERO NO OBLIGADO A COTIZAR PENSION",
            "COLOMBIANO EN EL EXTERIOR",
            "ACTIVIDAD ALTO RIESGO PENSION",
            "TIPO DOCUMENTO ACTUAL DEL COTIZANTE",
            "NUMERO DOCUMENTO ACTUAL DEL COTIZANTE",
            "TIPO DOCUMENTO CON EL QUE REALIZO APORTES DEL COTIZANTE",
            "NUMERO DOCUMENTO CON EL QUE REALIZO APORTES DEL COTIZANTE",
            "NOMBRE COTIZANTE",
            "CARGO DEL TRABAJADOR O ASOCIADO",
            "ANO",
            "MES",
            "SALARIO INTEGRAL",
            "NOVEDAD INCAPACIDAD",
            "NOVEDAD LIC. MATERNIDAD O PATERNIDAD",
            "NOVEDAD DE PERMISO O LICENCIA REMUNERADA",
            "NOVEDAD DE SUSPENSION",
            "NOVEDAD VACACIONES",
            "NUMERO DE DIAS TRABAJADOS EN EL MES",
            "NUMERO DE DIAS INCAPACIDADES EN EL MES",
            "NUMERO DE DIAS LICENCIA DE MATERNIDAD O PATERNIDAD",
            "NUMERO DE DIAS DE PERMISO O LICENCIA REMUNERADAS EN EL MES",
            "NUMERO DE DIAS DE SUSPENSION, PERMISO O LICENCIA NO REMUNERADAS EN EL MES",
            "NUMERO DE DIAS VACACIONES DISFRUTADAS EN EL MES O DESCANSO ANUAL REMUNERADO",
            "NUMERO DE DIAS DE HUELGA LEGALMENTE DECLARADA",
            "TOTAL DIAS REPORTADOS EN EL MES",
            "INGRESO",
            "FECHA ING",
            "RETIRO",
            "FECHA RET",
            "FECHA DE INICIO DE VACACIONES",
            "FECHA TERMINACION DE VACACIONES",
            "FECHA INICIO PERMISO O LICENCIA REMUNERADA",
            "FECHA INICIO SUSPENSION, PERMISO O LICENCIA NO REMUNERADA",
            "FECHA INICIO HUELGA LEGALMENTE DECLARADA",
            "CALCULO ACTUARIAL",
            "VALOR CALCULO ACTUARIAL",
            "SALARIO BASICO",
            "IBC SALUD EN CONCURRENCIA DE INGRESOS CON OTROS APORTANTES",
            "IBC PENSION EN CONCURRENCIA DE INGRESOS CON OTROS APORTANTES",
            "IBC ARL EN CONCURRENCIA DE INGRESOS CON OTROS APORTANTES",
            "OBSERVACIONES APORTANTE",
            "OBSERVACIONES UGPP",
            "OBSERVACIONES APORTANTE SALUD",
            "OBSERVACIONES APORTANTE PENSION",
            "OBSERVACIONES APORTANTE FSP",
            "OBSERVACIONES APORTANTE ALTO RIESGO PENSION",
            "OBSERVACIONES APORTANTE ARL",
            "OBSERVACIONES APORTANTE CCF",
            "OBSERVACIONES APORTANTE SENA",
            "OBSERVACIONES APORTANTE ICBF",
            "CARGUE MANUAL PILA SALUD",
            "CARGUE MANUAL PILA PENSION",
            "CARGUE MANUAL PILA FSP SOLIDARIDAD",
            "CARGUE MANUAL PILA FSP SUBSISTENCIA",
            "CARGUE MANUAL PILA ALTO RIESGO PENSION",
            "CARGUE MANUAL PILA ARL",
            "CARGUE MANUAL PILA CCF",
            "CARGUE MANUAL PILA SENA",
            "CARGUE MANUAL PILA ICBF",
            "OMISION SALUD",
            "OMISION PENSION",
            "OMISION ARL",
            "OMISION CCF",
            "NOMBRE CONCEPTO DE PAGO APORTANTE"
        );

        try {





            //Funcionario num_doc
            $num_doc = null;
            $whereFuncionarioNumDoc = "";
            if (isset($request['num_doc'])) {
                $num_doc = $request['num_doc'];
                $whereFuncionarioNumDoc = " AND tab0.num_doc = '" . $request['num_doc'] . "'";
            }
            //Funcionario id_tipo_doc 
            $id_tipo_doc = null;
            $whereFuncionarioTipoDoc = "";
            if (isset($request['id_tipo_doc'])) {
                $id_tipo_doc = $request['id_tipo_doc'];
                $whereFuncionarioTipoDoc = ""; //" AND tab0.id_tipo_doc = " . $request['id_tipo_doc'];
            }

            $id_anhos = null;
            $whereAnho = "";
            if (isset($request['id_anhos'])) {
                $id_anhos = $request['id_anhos'];
                $whereAnho = " AND tab1.id_anhos = " . $request['id_anhos'];
            }


            $id_meses = null;
            $whereMes = "";
            if (isset($request['id_meses'])) {
                $id_meses = $request['id_meses'];
                $whereMes = " AND tab1.id_meses = " . $request['id_meses'];
            }










            //Sql
            $sql = <<<EOD


SELECT 
tab2.descripcion,
tab0.id_concep_nomina
FROM NO_LIQUIDA_NOMINA tab0 
LEFT JOIN NO_PERIODO tab1 ON tab0.id_periodo=tab1.id_periodo
LEFT JOIN NO_CONCEP_NOMINA tab2 ON tab2.id_concep_nomina=tab0.id_concep_nomina AND tab2.id_tipo_concepto=1
WHERE 1=1 $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc AND tab2.id_tipo_concepto=1
GROUP BY tab0.id_concep_nomina,tab2.descripcion,tab2.codigo
ORDER BY tab2.codigo                    
EOD;



            //Ejecutar SQL
            $columnas = CN_TABLE::executeSQL($sql);


            //Sql
            $sql = <<<EOD


SELECT ID,
       NOMBRE_EMPRESA,
       ABREVIATURA,
       DIRECCION,
       TELEFONO,
       NIT,
       PAIS,
       CIUDAD,
       REPRESENTANTE_LEGAL,
       SECCION_PRESUPUESTAL,
       CORREO_ELECTRONICO,
       PAGINA_WEB,
       FAX,
       JEFEPRESUPUESTO,
       CORREO_ENVIO,
       JEFE_FINANCIERO,
       CARGO_FINANCIERO,
       APLICA_RETEIVA,
       JEFE_COBRO,
       ID_CEN_OP,
       NUM_COMISIONES,
       FECHA_CIERRE
FROM DATOS_COMPANIA
EOD;



            //Ejecutar SQL
            $datos_compania = CN_TABLE::executeSQL($sql);



            //Sql
            $sql = <<<EOD

SELECT tab0.num_doc,
tab2.id_concep_nomina,
tab2.descripcion,
tab1.id_anhos,
tab1.id_meses,
sum(tab0.valor_liquidado) as valor_liquidado
FROM NO_LIQUIDA_NOMINA tab0
LEFT JOIN NO_CONCEP_NOMINA tab2 ON tab2.id_concep_nomina=tab0.id_concep_nomina
LEFT JOIN NO_PERIODO tab1 ON tab0.id_periodo=tab1.id_periodo
WHERE 1=1 and tab2.id_tipo_concepto=1 $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
GROUP BY tab0.num_doc,tab1.id_anhos,tab1.id_meses,tab2.id_concep_nomina,tab2.descripcion,tab2.codigo
ORDER BY tab2.codigo                    
EOD;



            //Ejecutar SQL
            $valor_conceptos = CN_TABLE::executeSQL($sql);




            /*
             */







            //Sql
            $sql = <<<EOD
SELECT to_char(ROWNUM) AS NUM,
    tod.* FROM (
SELECT 
to_char(min(tab0.id_tipo_doc)) as tipo_documento,
to_char(tab0.num_doc) as documento,
to_char(min(tab3.nombre_apellido)) as nombre_completo,
to_char(min(tab4.componente)) as cargo,
to_char(min(tab1.id_anhos)) as anho,
to_char(min(tab5.descripcion)) as mes,
to_char(min(tab1.id_meses)) as no_meses,
to_char(max(concept.conceptos)) as conceptos,
                    

                    
case when max(tab6.cant_incapacidad) is null then '0' else 'X' end as novedades_incapacidad,                    
case when max(tab7.cant_mater_pater) is null then '0' else 'X' end as novedades_mater_pater,
case when max(tab8.cant_remunerada) is null then '0' else 'X' end as novedades_licen_remu,
case when max(tab9.cant_nov_suspen) is null then '0' else 'X' end as novedades_suspension,
case when max(tab10.cant_vac) is null then '0' else 'X' end as novedades_vacaciones,
                    

to_char(nvl(max(diaslabora.numero_dias),0)) as dias_laborados_mes,   
                    
to_char(nvl(max(tab6.num_dias),0)) as num_dias_novedades_incapacidad,
to_char(nvl(max(tab7.num_dias),0)) as num_dias_novedades_mater_pater,
to_char(nvl(max(tab8.num_dias),0)) as num_dias_novedades_licen_remu,
to_char(nvl(max(tab9.num_dias),0)) as num_dias_novedades_suspension,
to_char(nvl(max(tab10.dias_vacaciones),0)) as num_dias_novedades_vacaciones,
nvl(max(tab6.num_dias),0)+nvl(max(tab7.num_dias),0)+nvl(max(tab8.num_dias),0)+nvl(max(tab9.num_dias),0)+nvl(max(tab10.dias_vacaciones),0) as total,
case when min(nombram.fecha_ing) is null then '0' else 'X' end as ingreso,  
to_char(min(nombram.fecha_ing),'yyyy-mm-dd') as fecha_ing,
case when max(nombram.fecha_re) is null then '0' else 'X' end as retiro,
to_char(max(nombram.fecha_re),'yyyy-mm-dd') as fecha_ret,
nvl(min(tab10.fecha_ini),'Sin fecha') as fecha_ini_vac,
nvl(max(tab10.fecha_fin),'Sin fecha ') as fecha_fin_vac,
nvl(min(tab8.fecha_ini),'Sin fecha') as fecha_ini_remu,                    
nvl(min(tab9.fecha_ini),'Sin fecha') as fecha_ini_susp                    

FROM NO_LIQUIDA_NOMINA tab0 
LEFT JOIN NO_PERIODO tab1 ON tab0.id_periodo=tab1.id_periodo
LEFT JOIN TIPO_DOCUMENTO tab2 ON tab0.id_tipo_doc=tab2.id_tipo_doc
LEFT JOIN NO_DATOS_FUNCIONARIO_V tab3 ON tab3.id_tipo_doc=tab0.id_tipo_doc AND tab3.num_doc=tab0.num_doc
LEFT JOIN MESES tab5 ON tab5.id_meses=tab1.id_meses                    
LEFT JOIN (

  SELECT 
  tab0.num_doc,
  tab1.id_anhos,
  tab1.id_meses,
  LISTAGG(tab0.id_concep_nomina  ,'-') WITHIN GROUP(ORDER BY tab0.num_doc,tab1.id_anhos,tab1.id_meses) as "CONCEPTOS"
  FROM NO_LIQUIDA_NOMINA tab0
  LEFT JOIN NO_PERIODO tab1 ON tab0.id_periodo=tab1.id_periodo
  LEFT JOIN NO_CONCEP_NOMINA tab ON tab0.id_concep_nomina=tab.id_concep_nomina
  WHERE 1=1 AND tab.id_tipo_concepto=1  $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
  group by tab0.num_doc,tab1.id_anhos,tab1.id_meses


)concept ON concept.num_doc=tab0.num_doc AND concept.id_anhos=tab1.id_anhos AND concept.id_meses=tab1.id_meses
                    
                    
LEFT JOIN(

  SELECT 
  tab0.num_doc,
  tab1.id_anhos,
  tab1.id_meses,
  sum(tab0.num_dias) as numero_dias
  FROM NO_LIQUIDA_NOMINA tab0
  LEFT JOIN NO_PERIODO tab1 ON tab1.id_periodo=tab0.id_periodo
  LEFT JOIN NO_TIPO_PERIODO tab2 ON tab1.id_tipo_periodo=tab2.id_tipo_periodo
  LEFT JOIN NO_CONCEP_NOMINA tab3 ON tab0.id_concep_nomina=tab3.id_concep_nomina
  WHERE 1=1 AND tab2.id_tipo_periodo=1 AND tab3.id_concep_nomina=1 $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
  group by tab0.num_doc,tab1.id_anhos,tab1.id_meses



)diaslabora ON diaslabora.num_doc=tab0.num_doc AND diaslabora.id_anhos=tab1.id_anhos AND diaslabora.id_meses=tab1.id_meses
                    
LEFT JOIN (

SELECT tab0.num_doc, 
tab1.id_anhos,tab1.id_meses, 
min(tab0.fecha_ingreso)  as fecha_ing,
min(tab0.fecha_termina)  as fecha_re
FROM NO_NOMBRAMIENTO tab0
LEFT JOIN NO_PERIODO tab1 ON tab0.id_periodo=tab1.id_periodo
WHERE 1=1 $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
GROUP BY tab0.num_doc,tab1.id_anhos,tab1.id_meses 


)nombram ON nombram.num_doc=tab0.num_doc AND nombram.id_anhos=tab1.id_anhos AND nombram.id_meses=tab1.id_meses 
    


LEFT JOIN (
                    SELECT 
          tab0.id_tipo_doc,
          tab0.num_doc,
          tab1.id_anhos,
          tab1.id_meses,
          tab1.id_periodo,
          LISTAGG(tab2.denominacion_comp,'-') WITHIN GROUP(ORDER BY tab0.num_doc) as "COMPONENTE"
           FROM NO_ESTADO_FUNC tab0
           LEFT JOIN NO_PERIODO tab1 ON tab1.id_periodo=tab0.periodo
           LEFT JOIN NO_DP_V tab2 ON tab2.id_dp=tab0.id_dp
           WHERE 1=1 $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
           GROUP BY tab0.num_doc,tab0.id_tipo_doc,tab1.id_anhos,tab1.id_meses,tab1.id_periodo
)tab4 ON tab4.id_tipo_doc=tab0.id_tipo_doc AND tab4.num_doc=tab0.num_doc AND tab4.id_anhos=tab1.id_anhos AND tab4.id_meses=tab1.id_meses AND tab4.id_periodo=tab1.id_periodo

LEFT JOIN (
          SELECT 
        count(tab0.id_novedad_kardex) as cant_incapacidad,
        tab0.num_doc,
        tab0.id_tipo_doc,
        sum(tab0.num_dias) as num_dias,
        tab1.id_anhos,
        tab1.id_meses
        FROM NO_NOVEDAD_KARDEX tab0
        LEFT JOIN NO_PERIODO tab1 ON tab1.id_periodo=tab0.id_periodo
        LEFT JOIN NO_TIP_NOV_KA tab2 ON tab0.id_tip_nov_ka = tab2.id_tip_nov_ka
        WHERE 1=1  AND tab2.id_tip_nov_ka=1 AND tab2.id_tip_nov_ka=2  $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
        GROUP BY tab0.num_doc,tab0.id_tipo_doc,tab1.id_anhos,tab1.id_meses
)tab6 ON tab6.id_tipo_doc=tab0.id_tipo_doc AND tab6.num_doc=tab0.num_doc AND tab6.id_anhos=tab1.id_anhos AND tab6.id_meses=tab1.id_meses 



LEFT JOIN (

        SELECT 
        count(tab0.id_novedad_kardex) as cant_mater_pater,
        tab0.num_doc,
        tab0.id_tipo_doc,
        sum(tab0.num_dias) as num_dias,
        tab1.id_anhos,
        tab1.id_meses
        FROM NO_NOVEDAD_KARDEX tab0
        LEFT JOIN NO_PERIODO tab1 ON tab1.id_periodo=tab0.id_periodo
        LEFT JOIN NO_TIP_NOV_KA tab2 ON tab0.id_tip_nov_ka = tab2.id_tip_nov_ka
        WHERE 1=1  AND tab2.id_tip_nov_ka=3 $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
        GROUP BY tab0.num_doc,tab0.id_tipo_doc,tab1.id_anhos,tab1.id_meses      

)tab7 ON tab7.id_tipo_doc=tab0.id_tipo_doc AND tab7.num_doc=tab0.num_doc AND tab7.id_anhos=tab1.id_anhos AND tab7.id_meses=tab1.id_meses 


LEFT JOIN (
         SELECT 
        count(tab0.id_novedad_kardex) as cant_remunerada,
        tab0.num_doc,
        tab0.id_tipo_doc,
        sum(tab0.num_dias) as num_dias,
        to_char(min(tab0.fecha_ini),'yyyy-mm-dd') as fecha_ini,    
        tab1.id_anhos,
        tab1.id_meses
        FROM NO_NOVEDAD_KARDEX tab0
        LEFT JOIN NO_PERIODO tab1 ON tab1.id_periodo=tab0.id_periodo
        LEFT JOIN NO_TIP_NOV_KA tab2 ON tab0.id_tip_nov_ka = tab2.id_tip_nov_ka
        WHERE 1=1  AND tab2.id_tip_nov_ka=10  $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
        GROUP BY tab0.num_doc,tab0.id_tipo_doc,tab1.id_anhos,tab1.id_meses    
)tab8 ON tab8.id_tipo_doc=tab0.id_tipo_doc AND tab8.num_doc=tab0.num_doc AND tab8.id_anhos=tab1.id_anhos AND tab8.id_meses=tab1.id_meses 


LEFT JOIN (
       SELECT 
        count(tab0.id_novedad_kardex) as cant_nov_suspen,
        tab0.num_doc,
        tab0.id_tipo_doc,
        to_char(min(tab0.fecha_ini),'yyyy-mm-dd') as fecha_ini,       
        sum(tab0.num_dias) as num_dias,
        tab1.id_anhos,
        tab1.id_meses
        FROM NO_NOVEDAD_KARDEX tab0
        LEFT JOIN NO_PERIODO tab1 ON tab1.id_periodo=tab0.id_periodo
        LEFT JOIN NO_TIP_NOV_KA tab ON tab0.id_tip_nov_ka = tab.id_tip_nov_ka
        WHERE 1=1  AND tab.id_tip_nov_ka=7 AND tab.id_tip_nov_ka=8 $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
        GROUP BY tab0.num_doc,tab0.id_tipo_doc,tab1.id_anhos,tab1.id_meses 
)tab9 ON tab9.id_tipo_doc=tab0.id_tipo_doc AND tab9.num_doc=tab0.num_doc AND tab9.id_anhos=tab1.id_anhos AND tab9.id_meses=tab1.id_meses 

LEFT JOIN (
        SELECT 
        count(tab0.id_novedad_vac) as cant_vac,
        tab0.id_tipo_doc,
        tab0.num_doc,
        sum(tab0.num_dias_vac) as dias_vacaciones,
        to_char(min(tab0.fecha_ini),'yyyy-mm-dd') as fecha_ini,
        to_char(max(tab0.fecha_fin),'yyyy-mm-dd') as fecha_fin,
        tab1.id_anhos,
        tab1.id_meses
 FROM NO_NOVEDAD_VAC tab0
 LEFT JOIN NO_PERIODO tab1 ON tab1.id_periodo=tab0.id_periodo
  WHERE 1=1 $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
  GROUP BY tab0.num_doc,tab0.id_tipo_doc,tab1.id_anhos,tab1.id_meses 

)tab10 ON tab10.id_tipo_doc=tab0.id_tipo_doc AND tab10.num_doc=tab0.num_doc AND tab10.id_anhos=tab1.id_anhos AND tab10.id_meses=tab1.id_meses 

WHERE 1=1  $whereAnho $whereMes  $whereFuncionarioNumDoc $whereFuncionarioTipoDoc
group by tab0.num_doc,tab1.id_meses
order by tab0.num_doc                    
)tod

EOD;



            //Ejecutar SQL
            $resultados = CN_TABLE::executeSQL($sql);








            $html = '<table border="1">';

            for ($f = 0; $f < 6; $f++) {

                $html .= '<tr> ';

                for ($c = 0; $c < count($head); $c++) {



                    if ($c == count($head) - 1 && $f == 0) {
                        $html .= '<td>  </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                        $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';

                        for ($i = 0; $i < count($columnas); $i++) {
                            if ($columnas[$i]['descripcion'] != null) {
                                $html .= '<td> NATURALEZA JURIDICA Y TIPO DE APORTANTE? </td>';
                            }
                        }
                    } elseif ($c == count($head) - 1 && $f == 1) {
                        $html .= '<td> Justificacion cambio de la UGPP</td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';



                        for ($i = 0; $i < count($columnas); $i++) {
                            if ($columnas[$i]['descripcion'] != null) {
                                $html .= '<td>  </td>';
                            }
                        }
                    } elseif ($c == count($head) - 1 && $f == 2) {
                        $html .= '<td> TIPO DE PAGO </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';

                        for ($i = 0; $i < count($columnas); $i++) {
                            if ($columnas[$i]['descripcion'] != null) {
                                $html .= '<td>  </td>';
                            }
                        }
                    } elseif ($c == count($head) - 9 && $f == 3) {
                        $html .= '<td> NOMBRE CONCEPTO UGPP </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';

                        for ($i = 0; $i < count($columnas); $i++) {
                            if ($columnas[$i]['descripcion'] != null) {
                                $html .= '<td>  </td>';
                            }
                        }
                    } elseif ($c == count($head) - 7 && $f == 4) {
                        $html .= '<td> Subsistema Asociado </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        for ($i = 0; $i < count($columnas); $i++) {
                            if ($columnas[$i]['descripcion'] != null) {
                                $html .= '<td>  </td>';
                            }
                        }
                    } elseif ($c == count($head) - 1 && $f == 5) {
                        $html .= '<td> cuenta contable</td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        for ($i = 0; $i < count($columnas); $i++) {
                            if ($columnas[$i]['descripcion'] != null) {
                                $html .= '<td>  </td>';
                            }
                        }
                    } elseif ($c == 1 && $f == 3) {


                        foreach ($headfirst as $cab) {

                            $html .= '<td bgcolor="#f2dcdb">' . $cab . '</td>';
                        }
                    } elseif ($c == 1 && $f == 4) {




                        $html .= '<td> NI </td>';
                        $html .= '<td bgcolor="#f2dcdb">' . $datos_compania[0]['nit'] . '</td>';



                        $html .= '<td bgcolor="#f2dcdb">' . $datos_compania[0]['nombre_empresa'] . '</td>';
                        $html .= '<td> 1 </td>';
                        $html .= '<td> 1 </td>';
                        $html .= '<td> X </td>';
                        $html .= '<td> NO </td>';
                    } else {
                        $html .= '<td> </td>';
                    }
                }

                $html .= '</tr>';
            }




            $html .= '<tr>';
            foreach ($head as $val) {
                $html .= '<td bgcolor="#c7e6a4">' . $val . '</td>';
            }


            $arrat = array();
            $co = 0;
            for ($i = 0; $i < count($columnas); $i++) {

                if ($columnas[$i]['descripcion'] != null) {
                    $html .= '<td bgcolor="#c7e6a4">' . $columnas[$i]['descripcion'] . '</td>'; //
                    $arrat[$co]['descripcion'] = $columnas[$i]['descripcion'];
                    $arrat[$co]['id_concep_nomina'] = $columnas[$i]['id_concep_nomina'];
                    $co++;
                }
            }

            $html .= '</tr>';






            foreach ($resultados as $resul) {
                $html .= '<tr>';

                foreach ($resul as $key => $va) {



                    if ($key == 'num') {

                        $html .= '<td>' . $va . '</td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                        $html .= '<td> </td>';
                    }

                    if ($key == 'tipo_documento') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'documento') {

                        $html .= '<td>' . $va . '</td>';

                        $html .= '<td></td>';
                        $html .= '<td></td>';
                    }

                    if ($key == 'nombre_completo') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'cargo') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'anho') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'mes') {

                        $html .= '<td>' . $va . '</td>';
                        $html .= '<td></td>';
                    }





                    if ($key == 'novedades_incapacidad') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'novedades_mater_pater') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'novedades_licen_remu') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'novedades_suspension') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'novedades_vacaciones') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'dias_laborados_mes') {

                        $html .= '<td>' . $va . '</td>';
                    }





                    if ($key == 'num_dias_novedades_incapacidad') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'num_dias_novedades_mater_pater') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'num_dias_novedades_licen_remu') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'num_dias_novedades_suspension') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'num_dias_novedades_vacaciones') {

                        $html .= '<td>' . $va . '</td>';
                        $html .= '<td></td>';
                    }


                    if ($key == 'total') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'ingreso') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'fecha_ing') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'retiro') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'fecha_ret') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'fecha_ini_vac') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'fecha_fin_vac') {

                        $html .= '<td>' . $va . '</td>';
                    }


                    if ($key == 'fecha_ini_remu') {

                        $html .= '<td>' . $va . '</td>';
                    }

                    if ($key == 'fecha_ini_susp') {

                        $html .= '<td>' . $va . '</td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                        $html .= '<td></td>';
                    }
                }
                //$html.='<td>'.$resul.'</td>';

                $arregloo = array();

                $arregloo = $this->findByDocument($valor_conceptos, $resul['documento']);
                    for ($y = 0; $y < count($arrat); $y++) {
                        
                        $valor_liq=$this->findByConcepto($arregloo, $arrat[$y]['id_concep_nomina']);
                        $html .= '<td>' . $valor_liq . '</td>';
                      
                    }
            

                $html .= '</tr>';
            }


            $html .= '</table>';





            $nombre = "Formato de nomina y compensacion.xls";
            header("Content-type: application/vnd.ms-excel; name='excel'");
            header("Content-Disposition: filename=" . $nombre);
            header("Pragma: no-cache");
            header("Expires: 0");
            echo $html;
            die();
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            die();
        }
    }

    public function findByDocument($array, $cedula) {

        $arre = array();
        $cont = 0;
        foreach ($array as $concep) {
            if ($concep['num_doc'] == $cedula) {
                $arre[$cont]['valor_liquidado'] = $concep['valor_liquidado'];
                $arre[$cont]['id_concep_nomina'] = $concep['id_concep_nomina'];
                $arre[$cont]['descripcion'] = $concep['descripcion'];
            }

            $cont++;
        }




        return $arre;
    }
    
    
    public function findByConcepto($arraay,$concepto){
        $valor_liquidado=0;
        
        foreach ($arraay as $val){
            if($val['id_concep_nomina']==$concepto){
                
                $valor_liquidado= $val['valor_liquidado'];
                
            }
            
        }
        
        
        return $valor_liquidado;
    }

}
