<?php

/**
 * lista_comisiones_form_pago actions.
 *
 * @package    radicacionVirtualCuentas
 * @subpackage lista_comisiones_form_pago
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class lista_comisiones_form_pagoActions extends sfActions {

    /**
     * Executes list action
     *
     * @param sfRequest $request A request object
     */
    public function executeList(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");

        //Obtenemos la entidad
        /*
         * (SGC-1, ANM-2, SGR-3, CYC-4, COL-5, INCI-6, LOCAL-7)
         */
        $array = sfYaml::load(dirname(__FILE__) . '/../../../../api/config/app-gwt.yml');
        $int = 0;
        foreach ($array as $routeName => $routeData) {
            //echo $routeName . "\n";
            if ('entidad_cliente' == $routeName) {
                foreach ($routeData as $key => $value) {
                    //echo $value . "\n";
                    if ($key == 'value') {
                        $entidadCliente = $value;
                    }
                }
            }
            $int++;
        }

        /*
         * Paginacion
         */
        if (isset($request['_startRow'])) {
            $rowStart = $request['_startRow'];
        } else {
            $rowStart = 0;
        }

        if (isset($request['_endRow'])) {
            $rowEnd = $request['_endRow'];
        } else {
            $rowEnd = 75;
        }

        //ordenar consulta
        if (isset($request['_sortBy'])) {
            $sortBy = " Order by " . $request['_sortBy'];
        } else {
            $sortBy = ' order by tab0.vigencia desc, tab0.sgr desc, tab0.id_rp_comis desc ';
        }


        /*
         * Manejo de errores
         */
        try {

            $fecha_proceso = CN_TABLE::fechaSistema();

            /*
             * Variables obligatorias
             */
            $fecha_ini = $request['fecha_ini'];
            $fecha_fin = $request['fecha_fin'];
            $nitocc = $request['nitocc'];


            /*
             * Variables opcionales
             */
            //ultimo_pago variable que indica que es el ultimo pago
            $ultimo_pago = 0;
            if (isset($request['ultimo_pago'])) {
                $ultimo_pago = $request['ultimo_pago'];
            }
            //id_formato_pago - Para traer asi ya este en el archivo asociado - 20181101
            if (isset($request['id_formato_pago'])) {
                $whereIdFormatoPago = " AND tab0.id_formato_pago = " . $request['id_formato_pago'];
                $tag_FormatoPago = "or comfor.id_formato_pago = " . $request['id_formato_pago'];
            } else {
                $whereIdFormatoPago = ' ';
                $tag_FormatoPago = ' ';
            }
            //id_contratista
            if (isset($request['id_contratista'])) {
                $whereIdContratista = " AND tab0.id_contratista = " . $request['id_contratista'];
            } else {
                $whereIdContratista = ' ';
            }
            //id_contrato
            if (isset($request['id_contrato'])) {

                $id_contrato = $request['id_contrato'];
                $whereIdContrato = " AND tab0.id_contrato = " . $request['id_contrato'];

                //Validacion para solo formato de pago final segun fecha de contrato - 20181101
                $sql = <<<EOD
SELECT

*

FROM rvc_contrato
where
id_contrato = $id_contrato
and to_date('$fecha_fin','YYYY-MM-DD') = fecha_fin 
EOD;
                //ejecuta y obtiene el resultado del sql
                $resultado_contrato = CN_TABLE::executeSQL($sql);

                if (count($resultado_contrato) > 0) {
                    $tag_contrato_ini = 'last_day(';
                    $tag_contrato_fin = ')';
                } else {
                    $tag_contrato_ini = '';
                    $tag_contrato_fin = '';
                }
            } else {
                $whereIdContrato = ' ';
                $tag_contrato_ini = '';
                $tag_contrato_fin = '';
            }

            //Consultar el ultimo contrato del contratista - 20210901::LAVILA
            $sql = <<<EOD
select
EXTRACT(MONTH FROM to_date('$fecha_fin','YYYY-MM-DD')) as mes_fecha_fin,                    
                    
id_contrato,
to_char(fecha_ini,'YYYY-MM-DD') as fecha_ini_cont,
to_char(fecha_fin,'YYYY-MM-DD') as fecha_fin_cont
from rvc_contrato
where
id_contratista in (
    SELECT
    id_contratista
    FROM rvc_contratista
    where
    num_doc = '$nitocc'
)
order by
estado desc,
id_contrato desc                    
EOD;
            //ejecuta y obtiene el resultado del sql
            $resultado_contrato = CN_TABLE::executeSQL($sql);

            $fecha_ini_cont = '';
            $fecha_fin_cont = '';
            $mes_fecha_fin = 0;
            if (count($resultado_contrato) > 0) {
                $fecha_ini_cont = $resultado_contrato[0]['fecha_ini_cont'];
                $fecha_fin_cont = $resultado_contrato[0]['fecha_fin_cont'];
                $mes_fecha_fin = $resultado_contrato[0]['mes_fecha_fin'];
            }

            //sentencia sql
            $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD"
EOD;


            /**
             * Se deja para SGC solo vigencia actual - 20210723::LAVILA
             * Incidente #33685, Se deja para SGC que si tome año anterior $tag_vig_ant - 20220103::LAVILA
             */
            $tag_ent_sgr = '';
            $tag_vig_ant = '0';
            $whereSGCdesde = '';
            $whereSGCcomis = '';
            $whereSGCestado = '';
            $whereId_tipo_nov_comis = 'and cierre.id_tipo_nov_comis in (28,29,32)';
            $whereViaticoLeg = "where prleg.id_elementos_gasto in (32,82,35,36,38) or ele.viatico=1 ";
            //Para SGC toma comisiones desde Julio de 2021 - 20210813::LAVILA
            if ($entidadCliente == "1") {
                $whereSGCdesde = 'and (EXTRACT(YEAR FROM tab0.fecha) * 100) + EXTRACT(month FROM tab0.fecha) >= 202101';
                /*
                 * 20210901::LAVILA
                 * Validacion de comisiones con la fecha de salida a comision. 
                 * Validacion: si la fecha de salida a comision es mayor o igual a la fecha de inicio contrato y menor o igual a la fecha de terminacion contrato
                 */
                $whereSGCcomis = "and tab0.fecha_ini_comi between to_date('$fecha_ini_cont','YYYY-MM-DD') and to_date('$fecha_fin_cont','YYYY-MM-DD')";
                /*
                 * 20210901::LAVILA
                 * La fecha de estado tesoreria, este dentro del rango de la cuenta, es decir de la mensualidad
                 */
                $whereSGCestado = "and cierre.fecha_proceso between trunc(to_date('$fecha_ini','YYYY-MM-DD'),'MM') and to_date('$fecha_fin','YYYY-MM-DD')";
                /*
                 * 20210902::LAVILA
                 * Los estados son Cerrado y Reintegro tesorería, el estado Radicado no aplica, porque en esta instancia no se ha revisado la documentación y pueden presentarse devoluciones
                 * Incidente #27398, Se agrega id:28 Radicada ya que ahora si las debe tener siempre en cuenta - 20220127::LAVILA
                 * 20231211::DORTEGA El sistema solo debe sumar las comisiones en el formato de pago, si se encuentran 
                 * en los estado son:
                  - CERRADO
                  - REINTEGRO TESORERÍA
                  - REGRESA REINTEGRO TESORERIA
                  - RADICADO
                  - VO.BO LEGALIZACIÓN
                  - EN REVISION DE SOPORTES FINANCIERA - ticke 37139, Incidente #37828 - 20240313::LAVILA
                 */
                // $whereId_tipo_nov_comis = 'and cierre.id_tipo_nov_comis in (28,29,32)';
                $whereId_tipo_nov_comis = 'and cierre.id_tipo_nov_comis in (37,29,32,28,49,36)';
                /**
                 * Incidente #26078  - 20211214::LAVILA
                 * Cuentas de Diciembre 2021, únicamente cuando estén cobrando periodo 1 de diciembre a 31 diciembre 2021, el sistema debe:
                  1.Validar que no tenga comisiones en estado PENDIENTE O LEGALIZANDO, si las tiene en este estado no permitir guardar el pago.
                  2.Cargar las comisiones en cualquier estado menos PENDIENTE Y LEGALIZANDO.
                 */
                if (12 == $mes_fecha_fin) {
                    // $whereId_tipo_nov_comis = 'and cierre.id_tipo_nov_comis in (28,29,32)';
                    $whereId_tipo_nov_comis = 'and cierre.id_tipo_nov_comis in (37,29,32,28,49,36)';
                    $whereSGCestado = "and cierre.fecha_proceso between trunc(to_date('$fecha_ini_cont','YYYY-MM-DD'),'MM') and to_date('$fecha_fin','YYYY-MM-DD')";
                }

                /**
                 * ULTIMO VALOR
                 */
                /*
                 * 20211013::LAVILA
                 * Validacion de comisiones con la fecha de salida a comision. 
                 * Validacion: si la fecha de salida a comision es mayor o igual a la fecha de inicio contrato y menor o igual a la fecha de terminacion contrato
                 * Corresponde a comisiones que solo correspondan al rango del contrato.
                 */
                $whereSGCcomis_ult = "and tab0.fecha_ini_comi between to_date('$fecha_ini_cont','YYYY-MM-DD') and to_date('$fecha_fin_cont','YYYY-MM-DD')";

                /**
                 * Incidente #29503, para SGC suma todos los gastos: no solo viaticos - 20220429::LAVILA
                 */
                $whereViaticoLeg = " ";
                $tag_vig_ant = 'EXTRACT(YEAR FROM sysdate)-1';
            }
            if ($entidadCliente == "2") {
                $tag_ent_sgr = '.ANM.LOCAL';
                $tag_vig_ant = 'EXTRACT(YEAR FROM sysdate)-1';
            }
            //ejecuta y obtiene el resultado del sql
            CN_TABLE::executeSQL($sql);

            /**
             * 
             * 1. De acuerdo a fecha de llegada de la comisión, el contratista tiene tres (3) días hábiles para la Radicacion de los 
             * documentos de legalización, pasado este tiempo, el sistema no debe permitir al momento de la elaboración de la cuenta.

             * 2. Si la comisión ya se encuentra asociada a un Formato de pago que se encuentre en estado Aprobado, 
             * no se debe mostrar mas esta comisión para legalizar.

             * 3. Se deben mostrar las comisiones que se encuentren en estado "RADICADO" 
             * Puede estar cerrado - 20180808
             * id_tipo_nov_comis in (28,29,32)

             * 4. Una vez hecha la revisión de los documentos de la legalización, y de quedar en estado "BLOQUEADA", 
             * el sistema no debe permitir al momento de la elaboración de la siguiente cuenta hasta que el comisionada (o) haya la respectiva subsanación.

             * Recurso: 0-ANM 1-SGR
             * 
             * Se cambia a fecha inicial del cumplido y no de fin - 20180810
             * Incidente #9843,Que la fecha de la comisión seleccionada Fecha de terminación 
             * de la comisión más 3 días habiles legales para legalizar, sea menor a la 
             * Fecha de terminación de la cuenta que estén programando.
             * Se toma valor legalizado id 32,82, estado=1 - 20180827
             * Incidente #9895, menor o igual - 20180831
             * Incidente #10083, filtro de vigencia y valor de taxis - 20180925
             * Incidente #10247, solo si el valor del RP es mayor a 0 - 20181012
             * Se coloca id-32 en tipo nov comis para validar en estado reintegro tesoreria - 20181120
             * Incidente #31223, se quita join con prrpcomp ya que duplicaba registros de valores, se toman de las comisiones no del compromiso - 20220809::LAVILA
             * CASO ARANDA 83418 IMPLEMENTACIÓN LEGALIZACIONES CANCELADAS.docx - 20240110::LAVILA
             */
            //20190409 Si no es ultimo pago usa la consulta existente si es ultimo pago se actualiza para que obtenga todas las posibles comisiones
            if ($ultimo_pago == "1") {
                $consulta_sql = <<<EOD
SELECT
tab0.*
FROM (

    SELECT distinct

    0 as sgr,
    rp.id as id_rp_comis,
    rp.id_vigencia,
    rp.vigencia,
    rp.fecha,
    res.resolucion,
    res.id_comision,
    tab5.id_tipo_nov_comis,
    case when tipo.descripcion is null then 'PENDIENTE' else tipo.descripcion end as estado_text,
    nvl(prleg.val_sum,nvl(prrpc2.val_sum,0)) as valor,

    avanc.fecha_ini_comi,
    avanc.fecha_fin_comi

    FROM pr_rp_comis rp

    join pr_resol_comis res
    on rp.no_acto_admin = res.id
    and rp.id_vigencia = res.id_vigencia
    and rp.vigencia = res.vigencia

    LEFT JOIN PR_AVANCES_COMISIONES avanc 
    ON rp.id = avanc.id_rp_comis 
    and rp.vigencia = avanc.vigencia 
    and rp.ID_VIGENCIA = avanc.id_vigencia 

    left join (
      SELECT
       aut.*,
       ROW_NUMBER() OVER (
        partition by aut.id_rp_comis
        ORDER BY aut.id_rp_comis desc, aut.vigencia desc, aut.fecha_sys desc, aut.id_cierre_comision desc
       ) AS rn
      from pr_cierre_comision aut
    )tab5
    ON rp.ID = tab5.id_rp_comis 
    and rp.id_vigencia=tab5.id_vigencia 
    and rp.vigencia=tab5.vigencia
    and tab5.rn = 1

    left join pr_tipo_nov_comis tipo
    on tipo.id_tipo_nov_comis = tab5.id_tipo_nov_comis

    JOIN ( 
        SELECT 
        prrpc.ID,prrpc.id_vigencia,prrpc.vigencia, 
        /*SUM(prrpcomp.VALOR) AS val_sum*/
        SUM(comobj.viaticos) + SUM(comobj.taxis) AS val_sum
        
        
        FROM PR_RP_COMIS prrpc 
        --JOIN PR_RP_COMPROMISO prrpcomp ON prrpc.ID = prrpcomp.ID_RP 
        --AND prrpc.ID_VIGENCIA = prrpcomp.ID_VIGENCIA AND prrpc.VIGENCIA = prrpcomp.VIGENCIA 

        join pr_resol_comis res
        on prrpc.no_acto_admin = res.id
        and prrpc.id_vigencia = res.id_vigencia
        and prrpc.vigencia = res.vigencia

        left join comisionados_objs comobj
        on comobj.id_comision = res.id_comision
        and comobj.vigencia = prrpc.vigencia
        and comobj.nitocc = prrpc.id_tercero
        
        GROUP BY prrpc.ID ,prrpc.id_vigencia,prrpc.vigencia,prrpc.id_cdp
    ) prrpc2 
    ON rp.ID = prrpc2.ID 
    and rp.id_vigencia=prrpc2.id_vigencia 
    and rp.vigencia=prrpc2.vigencia

    left JOIN ( 
        SELECT 
        prrpc.ID,prrpc.id_vigencia,prrpc.vigencia, 
        /*SUM(prrpcomp.VALOR) AS val_sum*/
        SUM(prleg.v_neto) AS val_sum
        
        
        FROM PR_RP_COMIS prrpc 
        
        JOIN pr_legalizacion_comis prleg 
        ON prrpc.ID = prleg.id_rp_comis 
        AND prrpc.ID_VIGENCIA = prleg.ID_VIGENCIA 
        AND prrpc.VIGENCIA = prleg.VIGENCIA
        AND prrpc.id_mae_ter = prleg.id_tercero
        
        left join pr_elementos_gasto ele on ele.id_elementos_gasto =prleg.id_elementos_gasto
        
        $whereViaticoLeg
        
        GROUP BY 
        prrpc.ID ,
        prrpc.id_vigencia,
        prrpc.vigencia,
        prrpc.id_cdp
    ) prleg 
    ON rp.ID = prleg.ID 
    and rp.id_vigencia=prleg.id_vigencia 
    and rp.vigencia=prleg.vigencia
    
    left join (    
        select 
        comfor.* 
        from rvc_comision_form_pago comfor
    
        left join rvc_formato_pago_v forpag
        on forpag.id_formato_pago = comfor.id_formato_pago
    
        where
        comfor.sgr = 0
        and forpag.estado = 1
    ) comfor   
    on comfor.id_rp_comis = rp.ID
    and comfor.id_vigencia = rp.id_vigencia
    and comfor.vigencia = rp.vigencia
    
    left join pr_cierre_comision cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia = cierre.id_vigencia 
    and rp.vigencia = cierre.vigencia
    $whereId_tipo_nov_comis

    where
    rp.id_tercero = '$nitocc'
    and rp.estado=1
    --and (
    --    dias_habiles(avanc.fecha_fin_comi,3) <= $tag_contrato_ini to_date('$fecha_fin','YYYY-MM-DD') $tag_contrato_fin
    --)
    and ( comfor.id_comision_form_pago is null $tag_FormatoPago ) 
    and rp.vigencia in (EXTRACT(YEAR FROM sysdate),$tag_vig_ant)
    and tipo.id_tipo_nov_comis not in (select id_tipo_nov_comis from pr_tipo_nov_comis where estado = 1 and cancelada = 1) 
        
    union

    SELECT distinct

    1 as sgr,
    rp.id as id_rp_comis,
    rp.id_vigencia,
    rp.vigencia,
    rp.fecha,
    res.resolucion,
    res.id_comision,
    tab5.id_tipo_nov_comis,
    case when tipo.descripcion is null then 'PENDIENTE' else tipo.descripcion end as estado_text,
    nvl(prleg.val_sum,nvl(prrpc2.val_sum,0)) as valor,

    avanc.fecha_ini_comi,
    avanc.fecha_fin_comi

    FROM pr_rp_comis@PNG_SGR$tag_ent_sgr rp

    join pr_resol_comis@PNG_SGR$tag_ent_sgr res
    on rp.no_acto_admin = res.id
    and rp.id_vigencia = res.id_vigencia
    and rp.vigencia = res.vigencia

    LEFT JOIN PR_AVANCES_COMISIONES@PNG_SGR$tag_ent_sgr avanc 
    ON rp.id = avanc.id_rp_comis 
    and rp.vigencia = avanc.vigencia 
    and rp.ID_VIGENCIA = avanc.id_vigencia 

    left join (
      SELECT
       aut.*,
       ROW_NUMBER() OVER (
        partition by aut.id_rp_comis
        ORDER BY aut.id_rp_comis desc, aut.vigencia desc, aut.fecha_sys desc, aut.id_cierre_comision desc
       ) AS rn
      from pr_cierre_comision@PNG_SGR$tag_ent_sgr aut
    )tab5
    ON rp.ID = tab5.id_rp_comis 
    and rp.id_vigencia=tab5.id_vigencia 
    and rp.vigencia=tab5.vigencia
    and tab5.rn = 1

    left join pr_tipo_nov_comis@PNG_SGR$tag_ent_sgr tipo
    on tipo.id_tipo_nov_comis = tab5.id_tipo_nov_comis

    JOIN ( 
        SELECT 
        prrpc.ID,prrpc.id_vigencia,prrpc.vigencia, 
        /*SUM(prrpcomp.VALOR) AS val_sum*/
        SUM(comobj.viaticos) + SUM(comobj.taxis) AS val_sum
        
        FROM PR_RP_COMIS@PNG_SGR$tag_ent_sgr prrpc 
        --JOIN PR_RP_COMPROMISO@PNG_SGR$tag_ent_sgr prrpcomp ON prrpc.ID = prrpcomp.ID_RP 
        --AND prrpc.ID_VIGENCIA = prrpcomp.ID_VIGENCIA AND prrpc.VIGENCIA = prrpcomp.VIGENCIA 

        join pr_resol_comis@PNG_SGR$tag_ent_sgr res
        on prrpc.no_acto_admin = res.id
        and prrpc.id_vigencia = res.id_vigencia
        and prrpc.vigencia = res.vigencia

        left join comisionados_objs@PNG_SGR$tag_ent_sgr comobj
        on comobj.id_comision = res.id_comision
        and comobj.vigencia = prrpc.vigencia
        and comobj.nitocc = prrpc.id_tercero
        
        GROUP BY prrpc.ID ,prrpc.id_vigencia,prrpc.vigencia,prrpc.id_cdp
    ) prrpc2 
    ON rp.ID = prrpc2.ID 
    and rp.id_vigencia=prrpc2.id_vigencia 
    and rp.vigencia=prrpc2.vigencia

    left JOIN ( 
        SELECT 
        prrpc.ID,prrpc.id_vigencia,prrpc.vigencia, 
        /*SUM(prrpcomp.VALOR) AS val_sum*/
        SUM(prleg.v_neto) AS val_sum
        
        
        FROM PR_RP_COMIS@PNG_SGR$tag_ent_sgr prrpc 
        
        JOIN pr_legalizacion_comis@PNG_SGR$tag_ent_sgr prleg 
        ON prrpc.ID = prleg.id_rp_comis 
        AND prrpc.ID_VIGENCIA = prleg.ID_VIGENCIA 
        AND prrpc.VIGENCIA = prleg.VIGENCIA
        AND prrpc.id_mae_ter = prleg.id_tercero
        
        left join pr_elementos_gasto@PNG_SGR$tag_ent_sgr ele on ele.id_elementos_gasto =prleg.id_elementos_gasto
        
        $whereViaticoLeg
        
        GROUP BY 
        prrpc.ID ,
        prrpc.id_vigencia,
        prrpc.vigencia,
        prrpc.id_cdp
    ) prleg 
    ON rp.ID = prleg.ID 
    and rp.id_vigencia=prleg.id_vigencia 
    and rp.vigencia=prleg.vigencia
    
    left join (    
        select 
        comfor.* 
        from rvc_comision_form_pago comfor
    
        left join rvc_formato_pago_v forpag
        on forpag.id_formato_pago = comfor.id_formato_pago
    
        where
        comfor.sgr = 1
        and forpag.estado = 1
    ) comfor   
    on comfor.id_rp_comis = rp.ID
    and comfor.id_vigencia = rp.id_vigencia
    and comfor.vigencia = rp.vigencia
    
    left join pr_cierre_comision@PNG_SGR$tag_ent_sgr cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia = cierre.id_vigencia 
    and rp.vigencia = cierre.vigencia
    $whereId_tipo_nov_comis

    where
    rp.id_tercero = '$nitocc'
    and rp.estado=1
    --and (
    --    dias_habiles(avanc.fecha_fin_comi,3) <= $tag_contrato_ini to_date('$fecha_fin','YYYY-MM-DD') $tag_contrato_fin
    --)
    and ( comfor.id_comision_form_pago is null $tag_FormatoPago )
    and rp.vigencia > 2017
    and rp.vigencia in (EXTRACT(YEAR FROM sysdate),$tag_vig_ant)
    and tipo.id_tipo_nov_comis not in (select id_tipo_nov_comis from pr_tipo_nov_comis where estado = 1 and cancelada = 1) 
        
)tab0 
                    
where
tab0.valor > 0  
$whereSGCcomis_ult
    
EOD;
            } else { //No es ultimo pago
                $consulta_sql = <<<EOD
SELECT
tab0.*
FROM (

    SELECT distinct

    0 as sgr,
    rp.id as id_rp_comis,
    rp.id_vigencia,
    rp.vigencia,
    rp.fecha,
    res.resolucion,
    res.id_comision,
    tab5.id_tipo_nov_comis,
    tipo.descripcion as estado_text,
    nvl(prleg.val_sum,0) as valor,

    avanc.fecha_ini_comi,
    avanc.fecha_fin_comi

    FROM pr_rp_comis rp

    join pr_resol_comis res
    on rp.no_acto_admin = res.id
    and rp.id_vigencia = res.id_vigencia
    and rp.vigencia = res.vigencia

    LEFT JOIN PR_AVANCES_COMISIONES avanc 
    ON rp.id = avanc.id_rp_comis 
    and rp.vigencia = avanc.vigencia 
    and rp.ID_VIGENCIA = avanc.id_vigencia 

    join (
      SELECT
       aut.*,
       ROW_NUMBER() OVER (
        partition by aut.id_rp_comis
        ORDER BY aut.id_rp_comis desc, aut.vigencia desc, aut.fecha_sys desc, aut.id_cierre_comision desc
       ) AS rn
      from pr_cierre_comision aut
    )tab5
    ON rp.ID = tab5.id_rp_comis 
    and rp.id_vigencia=tab5.id_vigencia 
    and rp.vigencia=tab5.vigencia
    and tab5.rn = 1

    left join pr_tipo_nov_comis tipo
    on tipo.id_tipo_nov_comis = tab5.id_tipo_nov_comis

    JOIN ( 
        SELECT 
        prrpc.ID,prrpc.id_vigencia,prrpc.vigencia, 
        /*SUM(prrpcomp.VALOR) AS val_sum*/
        SUM(comobj.viaticos) + SUM(comobj.taxis) AS val_sum
        
        
        FROM PR_RP_COMIS prrpc 
        --JOIN PR_RP_COMPROMISO prrpcomp ON prrpc.ID = prrpcomp.ID_RP 
        --AND prrpc.ID_VIGENCIA = prrpcomp.ID_VIGENCIA AND prrpc.VIGENCIA = prrpcomp.VIGENCIA 

        join pr_resol_comis res
        on prrpc.no_acto_admin = res.id
        and prrpc.id_vigencia = res.id_vigencia
        and prrpc.vigencia = res.vigencia

        left join comisionados_objs comobj
        on comobj.id_comision = res.id_comision
        and comobj.vigencia = prrpc.vigencia
        and comobj.nitocc = prrpc.id_tercero
        
        GROUP BY prrpc.ID ,prrpc.id_vigencia,prrpc.vigencia,prrpc.id_cdp
    ) prrpc2 
    ON rp.ID = prrpc2.ID 
    and rp.id_vigencia=prrpc2.id_vigencia 
    and rp.vigencia=prrpc2.vigencia

    left JOIN ( 
        SELECT 
        prrpc.ID,prrpc.id_vigencia,prrpc.vigencia, 
        /*SUM(prrpcomp.VALOR) AS val_sum*/
        SUM(prleg.v_neto) AS val_sum
        
        
        FROM PR_RP_COMIS prrpc 
        
        JOIN pr_legalizacion_comis prleg 
        ON prrpc.ID = prleg.id_rp_comis 
        AND prrpc.ID_VIGENCIA = prleg.ID_VIGENCIA 
        AND prrpc.VIGENCIA = prleg.VIGENCIA
        AND prrpc.id_mae_ter = prleg.id_tercero
        
        left join pr_elementos_gasto ele on ele.id_elementos_gasto =prleg.id_elementos_gasto
        
        $whereViaticoLeg
        
        GROUP BY 
        prrpc.ID ,
        prrpc.id_vigencia,
        prrpc.vigencia,
        prrpc.id_cdp
    ) prleg 
    ON rp.ID = prleg.ID 
    and rp.id_vigencia=prleg.id_vigencia 
    and rp.vigencia=prleg.vigencia
    
    left join (    
        select 
        comfor.* 
        from rvc_comision_form_pago comfor
    
        left join rvc_formato_pago_v forpag
        on forpag.id_formato_pago = comfor.id_formato_pago
    
        where
        comfor.sgr = 0
        and forpag.estado = 1
    ) comfor   
    on comfor.id_rp_comis = rp.ID
    and comfor.id_vigencia = rp.id_vigencia
    and comfor.vigencia = rp.vigencia
    
    join pr_cierre_comision cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia = cierre.id_vigencia 
    and rp.vigencia = cierre.vigencia
    $whereId_tipo_nov_comis
    $whereSGCestado   

    where
    rp.id_tercero = '$nitocc'
    and rp.estado=1
    and (
        dias_habiles(avanc.fecha_fin_comi,3) <= $tag_contrato_ini to_date('$fecha_fin','YYYY-MM-DD') $tag_contrato_fin
    )
    and ( comfor.id_comision_form_pago is null $tag_FormatoPago ) 
    and rp.vigencia in (EXTRACT(YEAR FROM sysdate),$tag_vig_ant)
    and tipo.id_tipo_nov_comis not in (select id_tipo_nov_comis from pr_tipo_nov_comis where estado = 1 and cancelada = 1)   
        
    union

    SELECT distinct

    1 as sgr,
    rp.id as id_rp_comis,
    rp.id_vigencia,
    rp.vigencia,
    rp.fecha,
    res.resolucion,
    res.id_comision,
    tab5.id_tipo_nov_comis,
    tipo.descripcion as estado_text,
    nvl(prleg.val_sum,0) as valor,

    avanc.fecha_ini_comi,
    avanc.fecha_fin_comi

    FROM pr_rp_comis@PNG_SGR$tag_ent_sgr rp

    join pr_resol_comis@PNG_SGR$tag_ent_sgr res
    on rp.no_acto_admin = res.id
    and rp.id_vigencia = res.id_vigencia
    and rp.vigencia = res.vigencia

    LEFT JOIN PR_AVANCES_COMISIONES@PNG_SGR$tag_ent_sgr avanc 
    ON rp.id = avanc.id_rp_comis 
    and rp.vigencia = avanc.vigencia 
    and rp.ID_VIGENCIA = avanc.id_vigencia 

    join (
      SELECT
       aut.*,
       ROW_NUMBER() OVER (
        partition by aut.id_rp_comis
        ORDER BY aut.id_rp_comis desc, aut.vigencia desc, aut.fecha_sys desc, aut.id_cierre_comision desc
       ) AS rn
      from pr_cierre_comision@PNG_SGR$tag_ent_sgr aut
    )tab5
    ON rp.ID = tab5.id_rp_comis 
    and rp.id_vigencia=tab5.id_vigencia 
    and rp.vigencia=tab5.vigencia
    and tab5.rn = 1

    left join pr_tipo_nov_comis@PNG_SGR$tag_ent_sgr tipo
    on tipo.id_tipo_nov_comis = tab5.id_tipo_nov_comis

    JOIN ( 
        SELECT 
        prrpc.ID,prrpc.id_vigencia,prrpc.vigencia, 
        /*SUM(prrpcomp.VALOR) AS val_sum*/
        SUM(comobj.viaticos) + SUM(comobj.taxis) AS val_sum
        
        FROM PR_RP_COMIS@PNG_SGR$tag_ent_sgr prrpc 
        --JOIN PR_RP_COMPROMISO@PNG_SGR$tag_ent_sgr prrpcomp ON prrpc.ID = prrpcomp.ID_RP 
        --AND prrpc.ID_VIGENCIA = prrpcomp.ID_VIGENCIA AND prrpc.VIGENCIA = prrpcomp.VIGENCIA 

        join pr_resol_comis@PNG_SGR$tag_ent_sgr res
        on prrpc.no_acto_admin = res.id
        and prrpc.id_vigencia = res.id_vigencia
        and prrpc.vigencia = res.vigencia

        left join comisionados_objs@PNG_SGR$tag_ent_sgr comobj
        on comobj.id_comision = res.id_comision
        and comobj.vigencia = prrpc.vigencia
        and comobj.nitocc = prrpc.id_tercero
        
        GROUP BY prrpc.ID ,prrpc.id_vigencia,prrpc.vigencia,prrpc.id_cdp
    ) prrpc2 
    ON rp.ID = prrpc2.ID 
    and rp.id_vigencia=prrpc2.id_vigencia 
    and rp.vigencia=prrpc2.vigencia

    left JOIN ( 
        SELECT 
        prrpc.ID,prrpc.id_vigencia,prrpc.vigencia, 
        /*SUM(prrpcomp.VALOR) AS val_sum*/
        SUM(prleg.v_neto) AS val_sum
        
        
        FROM PR_RP_COMIS@PNG_SGR$tag_ent_sgr prrpc 
        
        JOIN pr_legalizacion_comis@PNG_SGR$tag_ent_sgr prleg 
        ON prrpc.ID = prleg.id_rp_comis 
        AND prrpc.ID_VIGENCIA = prleg.ID_VIGENCIA 
        AND prrpc.VIGENCIA = prleg.VIGENCIA 
        AND prrpc.id_mae_ter = prleg.id_tercero
        
        left join pr_elementos_gasto@PNG_SGR$tag_ent_sgr ele on ele.id_elementos_gasto =prleg.id_elementos_gasto
        
        $whereViaticoLeg
        
        GROUP BY 
        prrpc.ID ,
        prrpc.id_vigencia,
        prrpc.vigencia,
        prrpc.id_cdp
    ) prleg 
    ON rp.ID = prleg.ID 
    and rp.id_vigencia=prleg.id_vigencia 
    and rp.vigencia=prleg.vigencia
    
    left join (    
        select 
        comfor.* 
        from rvc_comision_form_pago comfor
    
        left join rvc_formato_pago_v forpag
        on forpag.id_formato_pago = comfor.id_formato_pago
    
        where
        comfor.sgr = 1
        and forpag.estado = 1
    ) comfor   
    on comfor.id_rp_comis = rp.ID
    and comfor.id_vigencia = rp.id_vigencia
    and comfor.vigencia = rp.vigencia
    
    join pr_cierre_comision@PNG_SGR$tag_ent_sgr cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia = cierre.id_vigencia 
    and rp.vigencia = cierre.vigencia
    $whereId_tipo_nov_comis
    $whereSGCestado   

    where
    rp.id_tercero = '$nitocc'
    and rp.estado=1
    and (
        dias_habiles(avanc.fecha_fin_comi,3) <= $tag_contrato_ini to_date('$fecha_fin','YYYY-MM-DD') $tag_contrato_fin
    )
    and ( comfor.id_comision_form_pago is null $tag_FormatoPago )
    and rp.vigencia > 2017
    --and rp.vigencia = EXTRACT(YEAR FROM sysdate)
    and rp.vigencia in (EXTRACT(YEAR FROM sysdate),$tag_vig_ant)
    and tipo.id_tipo_nov_comis not in (select id_tipo_nov_comis from pr_tipo_nov_comis where estado = 1 and cancelada = 1) 
        
)tab0 
                    
where
tab0.valor > 0   
$whereSGCdesde
$whereSGCcomis 
EOD;
            }

            /**
             * "Tiene pendiente de Legalizar la comisión No. xxxx RP No: yyyyyy No se permite programar el pago" - 20180827
             * Se cambia a fecha de salida comision - 20180903
             * Se coloca id-32 en tipo nov comis para validar en estado reintegro tesoreria - 20181120
             * Se cambia validacion de la fecha final del periodo de pago, con la fecha del dia del formato - 20190218
             * Se agrega que verifique que si su ultimo estado en ANM es bloqueado soportes, valide que no muestre - 20220718::LAVILA
             * CASO ARANDA 83418 IMPLEMENTACIÓN LEGALIZACIONES CANCELADAS.docx - 20240110::LAVILA
             */
            //$nitocc = '1085263640';
            //20190716 La fecha de busqueda de comisiones por legalizar se basa en:
            //Con fecha menor a la fecha_fin del pago
            //Si la fecha fin del pago es mayor a la fecha actual en la fecha de proceso
            if (strtotime($fecha_proceso) < strtotime($fecha_fin)) {
                $fecha_limite = $fecha_proceso;
            } else {
                $fecha_limite = $fecha_fin;
            }

            $sql_val = <<<EOD
SELECT
tab0.*
FROM (

    SELECT distinct

    0 as sgr,
    rp.id as id_rp_comis,
    rp.id_vigencia,
    rp.vigencia,
    rp.id_tercero,
    rp.fecha,
    res.resolucion,
    res.id_comision,
    --cierre.ID_TIPO_NOV_COMIS,
    nvl(res.fecha_funcionario,res.fecha_comisionado) as fecha_resol

    FROM pr_rp_comis rp

    join pr_resol_comis res
    on rp.no_acto_admin = res.id
    and rp.id_vigencia = res.id_vigencia
    and rp.vigencia = res.vigencia
    
    left join pr_cierre_comision cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia = cierre.id_vigencia 
    and rp.vigencia = cierre.vigencia
    $whereId_tipo_nov_comis
    
    left join(
        select
        aut.*,
               ROW_NUMBER() OVER (
                partition by aut.id_rp_comis
                ORDER BY aut.vigencia, aut.id_rp_comis, aut.fecha_proceso desc, aut.fecha_sys desc
               ) AS rn
        from pr_cierre_comision aut
    )cie
    ON rp.ID = cie.id_rp_comis 
    and rp.id_vigencia = cie.id_vigencia 
    and rp.vigencia = cie.vigencia
    and cie.rn = 1
    
    left join(
        SELECT
        tab0.*
        FROM comisionados_planta tab0
        union
        SELECT
        tab0.*
        FROM comisionados_contrato tab0    
    )comis
    on comis.vigencia = res.vigencia
    and comis.id_comision = res.id_comision
    and comis.nitocc = rp.id_tercero

    where
    rp.id_tercero = '$nitocc'
    and rp.estado = 1
    and ( cierre.id_tipo_nov_comis is null or cie.id_tipo_nov_comis in (34) )
    and cie.id_tipo_nov_comis not in (select id_tipo_nov_comis from pr_tipo_nov_comis where estado = 1 and cancelada = 1)   
    and (
        dias_habiles(comis.fecha_regreso,3) <= to_date('$fecha_limite','YYYY-MM-DD')
    )
    and rp.vigencia in (EXTRACT(YEAR FROM sysdate),$tag_vig_ant)
    
    union
    
    SELECT distinct

    1 as sgr,
    rp.id as id_rp_comis,
    rp.id_vigencia,
    rp.vigencia,
    rp.id_tercero,
    rp.fecha,
    res.resolucion,
    res.id_comision,
    --cierre.ID_TIPO_NOV_COMIS,
    nvl(res.fecha_funcionario,res.fecha_comisionado) as fecha_resol

    FROM pr_rp_comis@PNG_SGR$tag_ent_sgr rp

    join pr_resol_comis@PNG_SGR$tag_ent_sgr res
    on rp.no_acto_admin = res.id
    and rp.id_vigencia = res.id_vigencia
    and rp.vigencia = res.vigencia
    
    left join pr_cierre_comision@PNG_SGR$tag_ent_sgr cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia = cierre.id_vigencia 
    and rp.vigencia = cierre.vigencia
    $whereId_tipo_nov_comis
    
    left join(
        select
        aut.*,
               ROW_NUMBER() OVER (
                partition by aut.id_rp_comis
                ORDER BY aut.vigencia, aut.id_rp_comis, aut.fecha_proceso desc, aut.fecha_sys desc
               ) AS rn
        from pr_cierre_comision@PNG_SGR$tag_ent_sgr aut
    )cie
    ON rp.ID = cie.id_rp_comis 
    and rp.id_vigencia = cie.id_vigencia 
    and rp.vigencia = cie.vigencia
    and cie.rn = 1
    
    left join(
        SELECT
        tab0.*
        FROM comisionados_planta@PNG_SGR$tag_ent_sgr tab0
        union
        SELECT
        tab0.*
        FROM comisionados_contrato@PNG_SGR$tag_ent_sgr tab0    
    )comis
    on comis.vigencia = res.vigencia
    and comis.id_comision = res.id_comision
    and comis.nitocc = rp.id_tercero

    where
    rp.id_tercero = '$nitocc'
    and rp.estado = 1
    and ( cierre.id_tipo_nov_comis is null or cie.id_tipo_nov_comis in (34) )
    and cie.id_tipo_nov_comis not in (select id_tipo_nov_comis from pr_tipo_nov_comis where estado = 1 and cancelada = 1)                    
    and (
        dias_habiles(comis.fecha_regreso,3) <= to_date('$fecha_limite','YYYY-MM-DD')
    )
    and rp.vigencia > 2017
    and rp.vigencia in (EXTRACT(YEAR FROM sysdate),$tag_vig_ant)
        
)tab0 

order by tab0.vigencia desc, tab0.sgr desc, tab0.id_rp_comis desc
EOD;
            //ejecuta y obtiene el resultado del sql
            $resultado_val = CN_TABLE::executeSQL($sql_val);
            //if (1==2) {
            if ((count($resultado_val) > 0) && $ultimo_pago == "0" && $entidadCliente != "1") {

                $id_comis = $resultado_val[0]['id_comision'];
                $id_rp_comis = $resultado_val[0]['id_rp_comis'];

                $mensaje = "Tiene pendiente de Legalizar la comisión No. $id_comis RP No: $id_rp_comis No se permite programar el pago.";

                $this->status = 1;
                $this->totalRows = 0;
                $this->startRow = 0;
                $this->endRow = 0;
                $this->list_data = array();
                $this->mensajeError = $mensaje;
                $this->logMessage("[lista_comisiones_form_pago] ERROR!");
                $this->logMessage($mensaje);
            } else {

                //Incidente #37865, para SGC se activa dias_habiles(comis.fecha_regreso,3) <= ... - 20240320::LAVILA
                //Incidente #38931, numeral 28 del procedimiento dice que son 5 dias habiles - 20241106::LAVILA
                //INCIDENTE #39124, se quita condicion de dias pendientes de legalizar ya que se saltaba condicion de ultimo pago o diciembre
                //Incidente #39490, se activa nuevamente condicion, pero se agrega un cambio para el ultimo pago o diciembre - 20250303::LAVILA
                $sql_val = <<<EOD
SELECT
tab0.vigencia,
tab0.id_vigencia,
tab0.id_tercero,

LISTAGG(tab0.id_comision, ',') WITHIN GROUP (ORDER BY tab0.sgr desc, tab0.id_comision ) as id_comision,
LISTAGG(tab0.id_rp_comis, ',') WITHIN GROUP (ORDER BY tab0.sgr desc, tab0.id_comision ) as id_rp_comis

FROM (

    SELECT distinct

    0 as sgr,
    rp.id as id_rp_comis,
    rp.id_vigencia,
    rp.vigencia,
    rp.id_tercero,
    rp.fecha,
    res.resolucion,
    res.id_comision,
    --cierre.ID_TIPO_NOV_COMIS,
    nvl(res.fecha_funcionario,res.fecha_comisionado) as fecha_resol

    FROM pr_rp_comis rp

    join pr_resol_comis res
    on rp.no_acto_admin = res.id
    and rp.id_vigencia = res.id_vigencia
    and rp.vigencia = res.vigencia
    
    /*left join pr_cierre_comision cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia = cierre.id_vigencia 
    and rp.vigencia = cierre.vigencia
    and cierre.id_tipo_nov_comis in (29,32,28)*/
    
   left join (
      SELECT
       aut.*,
       ROW_NUMBER() OVER (
        partition by aut.id_rp_comis
        ORDER BY aut.id_rp_comis desc, aut.vigencia desc, aut.fecha_sys desc, aut.id_cierre_comision desc
       ) AS rn
      from pr_cierre_comision aut
    )cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia=cierre.id_vigencia 
    and rp.vigencia=cierre.vigencia
    and cierre.rn = 1
    
    left join(
        SELECT
        tab0.*
        FROM comisionados_planta tab0
        union
        SELECT
        tab0.*
        FROM comisionados_contrato tab0    
    )comis
    on comis.vigencia = res.vigencia
    and comis.id_comision = res.id_comision
    and comis.nitocc = rp.id_tercero
    
    /* 
    Incidente #37943, se coloca relacion obligatoria con la obligacion y el pago  - 20240410::LAVILA
    */    
    join TS_OBLIGACION tab1 
    ON tab1.id_rp = rp.id 
    and tab1.ano_fiscal = rp.vigencia
    and tab1.estado in (1,2)    
    join ts_pago_obl tab2
    on tab2.id_obligacion = tab1.id_obligacion
    and tab2.vigencia = tab1.ano_fiscal
    and tab2.id_vigencia = tab1.id_vigencia
    and tab2.secuencia = tab1.secuencia
    and tab2.lote_no is null

    where
    rp.id_tercero = '$nitocc'
    and rp.estado = 1
    and (cierre.id_tipo_nov_comis is null or cierre.id_tipo_nov_comis not in (29,32,37,28,49,36))
    /*and cierre.id_tipo_nov_comis is null*/
    and (
        dias_habiles(comis.fecha_regreso,5) <= to_date('$fecha_limite','YYYY-MM-DD')
        /*2.Ultima cuenta o mes de Diciembre*/                        
        or 1 = $ultimo_pago        
    )
    and rp.vigencia in (EXTRACT(YEAR FROM sysdate),$tag_vig_ant)
    
    union
    
    SELECT distinct

    1 as sgr,
    rp.id as id_rp_comis,
    rp.id_vigencia,
    rp.vigencia,
    rp.id_tercero,
    rp.fecha,
    res.resolucion,
    res.id_comision,
    --cierre.ID_TIPO_NOV_COMIS,
    nvl(res.fecha_funcionario,res.fecha_comisionado) as fecha_resol

    FROM pr_rp_comis@PNG_SGR$tag_ent_sgr rp

    join pr_resol_comis@PNG_SGR$tag_ent_sgr res
    on rp.no_acto_admin = res.id
    and rp.id_vigencia = res.id_vigencia
    and rp.vigencia = res.vigencia
    
    /*left join pr_cierre_comision@PNG_SGR$tag_ent_sgr cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia = cierre.id_vigencia 
    and rp.vigencia = cierre.vigencia
    and cierre.id_tipo_nov_comis in (29,32,28)*/
                        left join (
      SELECT
       aut.*,
       ROW_NUMBER() OVER (
        partition by aut.id_rp_comis
        ORDER BY aut.id_rp_comis desc, aut.vigencia desc, aut.fecha_sys desc, aut.id_cierre_comision desc
       ) AS rn
      from pr_cierre_comision@PNG_SGR$tag_ent_sgr aut
    )cierre
    ON rp.ID = cierre.id_rp_comis 
    and rp.id_vigencia=cierre.id_vigencia 
    and rp.vigencia=cierre.vigencia
    and cierre.rn = 1
    
    /* 
    Incidente #37943, se coloca relacion obligatoria con la obligacion y el pago  - 20240410::LAVILA
    */    
    join TS_OBLIGACION@PNG_SGR$tag_ent_sgr tab1 
    ON tab1.id_rp = rp.id 
    and tab1.ano_fiscal = rp.vigencia
    and tab1.estado in (1,2)    
    join ts_pago_obl@PNG_SGR$tag_ent_sgr tab2
    on tab2.id_obligacion = tab1.id_obligacion
    and tab2.vigencia = tab1.ano_fiscal
    and tab2.id_vigencia = tab1.id_vigencia
    and tab2.secuencia = tab1.secuencia
    and tab2.lote_no is null
    
    left join(
        SELECT
        tab0.*
        FROM comisionados_planta@PNG_SGR$tag_ent_sgr tab0
        union
        SELECT
        tab0.*
        FROM comisionados_contrato@PNG_SGR$tag_ent_sgr tab0    
    )comis
    on comis.vigencia = res.vigencia
    and comis.id_comision = res.id_comision
    and comis.nitocc = rp.id_tercero

    where
    rp.id_tercero = '$nitocc'
    and rp.estado = 1
    and (cierre.id_tipo_nov_comis is null or  cierre.id_tipo_nov_comis not in (29,32,37,28,49,36))
    /*and cierre.id_tipo_nov_comis is null*/
    and (
        dias_habiles(comis.fecha_regreso,5) <= to_date('$fecha_limite','YYYY-MM-DD')
        /*2.Ultima cuenta o mes de Diciembre*/                        
        or 1 = $ultimo_pago  
    )
    and rp.vigencia > 2017
    and rp.vigencia in (EXTRACT(YEAR FROM sysdate),$tag_vig_ant)
        
)tab0 

where
/*2.Ultima cuenta o mes de Diciembre*/                        
(
    12 = EXTRACT(MONTH FROM to_date('$fecha_fin','YYYY-MM-DD'))
    or 1 = $ultimo_pago
)
/*1.Pago normal*/                        
or 0 = $ultimo_pago    
                       

group by
tab0.vigencia,
tab0.id_vigencia,
tab0.id_tercero

order by tab0.vigencia desc 
EOD;
                //ejecuta y obtiene el resultado del sql
                $resultado_val = CN_TABLE::executeSQL($sql_val);

                /**
                 * Incidente #26078  - 20211214::LAVILA
                 * Cuentas de Diciembre 2021, únicamente cuando estén cobrando periodo 1 de diciembre a 31 diciembre 2021, el sistema debe:
                  1.Validar que no tenga comisiones en estado PENDIENTE O LEGALIZANDO, si las tiene en este estado no permitir guardar el pago.
                 * 
                  2.Cargar las comisiones en cualquier estado menos PENDIENTE Y LEGALIZANDO.
                 * 
                 * Ticket 37139 - 20231211::DORTEGA, Incidente #37828 - 20240313::LAVILA
                  1.Pago normal El sistema solo debe sumar las comisiones en el formato de pago, si se encuentran en los siguientes estados:
                  - CERRADO
                  - REINTEGRO TESORERÍA
                  - REGRESA REINTEGRO TESORERIA
                  - RADICADO
                  - VO.BO LEGALIZACIÓN
                  - EN REVISION DE SOPORTES FINANCIERA
                  Si se encuentran en otro estado, el sistema NO debe permitir hacer el formato de pago y alertar al contratista que debe legalizar.

                  2.Ultima cuenta o mes de Diciembre
                  El sistema NO debe permitir realizar el Formato de pago a los contratistas que presente comisiones en estado PENDIENTE.
                  Para esta validación tomar en cuenta los contratistas que presentan comisones pendientes de ejecutar, unicamente pueden realizar el formato de pago
                  cuando ya presenten todas las comisiones legalizadas.
                 * 
                 */
                if ((count($resultado_val) > 0) && $entidadCliente == "1") {

                    $id_comis = $resultado_val[0]['id_comision'];
                    $id_rp_comis = $resultado_val[0]['id_rp_comis'];

                    $mensaje = "</br>Tiene pendiente de Legalizar las comisiones No.( $id_comis ) RP's No:( $id_rp_comis ); no se permite programar el pago.";

                    $this->status = 1;
                    $this->totalRows = 0;
                    $this->startRow = 0;
                    $this->endRow = 0;
                    $this->list_data = array();
                    $this->mensajeError = $mensaje;
                    $this->logMessage("[lista_comisiones_form_pago] ERROR!");
                    $this->logMessage($mensaje);
                } else {


                    /*
                     * Sql que trae los resultados
                     * por los filtros, para totalizar las filas
                     */
                    $sql = <<<EOD
select count(*) as count from (
                    
    $consulta_sql    

)
EOD;
                    $total_record_count = CN_TABLE::executeSQL($sql);
                    $total_record_count = $total_record_count[0]["count"];


                    //obtener el listado de recaudos
                    $sql = <<<EOD
SELECT * FROM ( SELECT row_.*, ROWNUM rownum_ FROM (

    $consulta_sql

    $sortBy

) row_ WHERE ROWNUM <=  $rowEnd   ) where rownum_ >  $rowStart
EOD;
                    //ejecuta y obtiene el resultado del sql
                    $resultado = CN_TABLE::executeSQL($sql);

                    $this->status = 0;
                    $this->totalRows = $total_record_count;
                    $this->startRow = $rowStart;
                    $this->endRow = $rowStart + count($resultado);
                    $this->list_data = $resultado;
                    $this->logMessage("[lista_comisiones_form_pago] Consulta exitosa.");
                }
            }
        } catch (Exception $e) {

            $this->status = 1;
            $this->totalRows = 0;
            $this->startRow = 0;
            $this->endRow = 0;
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

}
