<?php

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

    /**
     * Obtener records para los saldos
     *
     * @param sfWebRequest $request
     */
    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");



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

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

        //solo imprime log la primera vez de consulta
        if ($rowStart == 0) {

            /*
             * variables por defecto para el registro de log
             */
            $id_tabla = 'null';
            $id_vigencia = 'null';
            $id_cen_op = 'null';

            $id_cia = 'null';
            if (isset($request['id_cia'])) {
                $id_cia = $request['id_cia'];
            }

            //obtener id maestro tabla
            $id_mae_bd = CN_TABLE::consultarIdTablaBD('CA_DEBITOS_SALDOS');

            //1 - indica operacion de consulta
            $id_ope_bd = 1;

            //id del maestro tercero
            $id_mae_ter = 1;
            if (isset($request['id_username'])) {
                $id_mae_ter = $request['id_username'];
            }
            $usuario = 'admin';
            if (isset($request['username'])) {
                if (!is_null($request['username']) && $request['username'] != '') {
                    $usuario = $request['username'];
                }
            }
            $comando = 'sin comando';
            if (isset($request['comando'])) {
                $comando = $request['comando'];
            }
            //construir observacion
            $observacion = "'Se consulto informe general cartera edades desde la funcionalidad: " . $comando . "'";

            $id_punto_venta_log = 'null';
            if (isset($request['punto_venta_log'])) {
                $id_punto_venta_log = $request['punto_venta_log'];
            }

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_vigencia, $id_cen_op, $id_cia, $id_mae_bd, $id_ope_bd, $id_mae_ter, $usuario, $comando, $observacion, $id_punto_venta_log);

            //ejecuta el sql
            CN_TABLE::executeSQL($sql);
        }

        //sentencia sql
        $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD"
EOD;
        //ejecuta y obtiene el resultado del sql
        CN_TABLE::executeSQL($sql);


        /*
         * Manejo de errores
         */
        try {

            /*
             * Se elimina 2176 - Drummnod de la consulta
             * Incidente #7393, Se retira esta condición - 20171023
             */
            //$quitarTercero = " and tab0.id_mae_ter != 2176 ";
            $quitarTercero = " and tab0.id_mae_ter != 28143 ";

            /*
             * Variables obligatorias
             */
            if (isset($request['id_anhos'])) {
                $id_anhos = $request['id_anhos'];
            }
            if (isset($request['id_meses'])) {
                $id_meses = $request['id_meses'];
            }
            if (isset($request['frecuencia'])) {
                $frecuencia = $request['frecuencia'];
            }
            if (isset($request['num_bloques'])) {
                $numBloques = $request['num_bloques'];
            }
            if (isset($request['id_mae_ter'])) {
                $id_mae_ter = $request['id_mae_ter'];
                $whereTercero = "and tab0.id_mae_ter = " . $request['id_mae_ter'];
            } else {
                $whereTercero = " ";
            }

            /*
             * Variables NO obligatorias
             */
            if (isset($request['nitocc_ini']) && isset($request['nitocc_fin'])) {
                $whereNitocc = "and tab0.num_doc between  '" . $request['nitocc_ini'] . "' and '" . $request['nitocc_fin'] . "'";
            } else {
                $whereNitocc = " ";
            }
            //Punto Venta
            if (isset($request['id_punto_venta'])) {
                $wherePuntoVenta = " AND tab0.id_punto_venta = " . $request['id_punto_venta'];
            } else {
                $wherePuntoVenta = ' ';
            }


            /*
             * sql que trae los resultados
             * por los filtros, para totalizar las filas
             */
            $sql = <<<EOD

select count(id_mae_ter) as count from(

select distinct id_mae_ter from(

select

tab0.*,

trunc(last_day(to_date('$id_meses/$id_anhos','mm/yyyy'))) - tab0.fecha_vence as dias_vencidos

from ca_debito_saldos tab0

where
1 = 1    
--and tab0.estado_ven = 1
and tab0.id_meses_sal = $id_meses and tab0.id_anhos_sal = $id_anhos
and tab0.fecha_proceso <= trunc(last_day(to_date('$id_meses/$id_anhos','mm/yyyy')))
and (case when tab0.fecha_anu_ven<=last_day(to_date('$id_meses-$id_anhos','MM-YYYY')) then 1 else 0 END  = 0)
    
$whereNitocc $quitarTercero $wherePuntoVenta
and tab0.saldo_actual != 0

order by
to_number(tab0.num_doc),
tab0.sec_debito,
tab0.fecha_proceso,
tab0.id_anhos_sal,
tab0.id_meses_sal

)

)

EOD;

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

            //validar si hay registros
            if ($total_record_count > 0) {

                /*
                 * CREAR CASE PARA SQL DE LOS DIFERENTES BLOQUES
                 */

                $case_oracle = <<<EOD
 
EOD;
                $case_total = <<<EOD

EOD;

                //establece el rango de vencimiento
                $i = 1;
                $ini = 1;
                $fin = $frecuencia;
                while ($i <= $numBloques) {
                    $case_oracle .= <<<EOD

 CASE
   WHEN last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence >= $ini AND last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence <= $fin
   THEN tab0.saldo_actual
   ELSE 0
   END AS  bloque_$i,

EOD;

                    $case_total .= <<<EOD
sum(bloque_$i) as bloque_$i,

EOD;

                    $ini = $fin + 1;
                    $fin = ($i + 1) * $frecuencia;
                    $i = $i + 1;
                }




                /*
                 * Obtiene los registros de debito/vencimiento con su saldo respectivo
                 */
                $sql = <<<EOD

SELECT * FROM ( SELECT row_.*, ROWNUM rownum_ FROM (

select

tab1.id_mae_ter,
tab1.num_doc,
tab1.razon_soc,
sum(saldo_actual) as saldo_actual,
sum(por_vencer) as por_vencer,
$case_total
sum(vencido_mas) as vencido_mas

from(

select

tab0.*,

trunc(last_day(to_date('$id_meses/$id_anhos','mm/yyyy'))) - tab0.fecha_vence as dias_vencidos,

 CASE
   WHEN last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence <= 0
   THEN tab0.saldo_actual
   ELSE 0
   END AS por_vencer,

$case_oracle

 CASE
   WHEN last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence > ($frecuencia*$numBloques)
   THEN tab0.saldo_actual
   ELSE 0
   END AS vencido_mas

from ca_debito_saldos tab0

where
1 = 1    
--and tab0.estado_ven = 1
and tab0.id_meses_sal = $id_meses and tab0.id_anhos_sal = $id_anhos
and tab0.fecha_proceso <= trunc(last_day(to_date('$id_meses/$id_anhos','mm/yyyy')))
and (case when tab0.fecha_anu_ven<=last_day(to_date('$id_meses-$id_anhos','MM-YYYY')) then 1 else 0 END  = 0)
    
$whereNitocc $quitarTercero $wherePuntoVenta

order by
to_number(tab0.num_doc),
tab0.sec_debito,
tab0.fecha_proceso,
tab0.id_anhos_sal,
tab0.id_meses_sal

)tab1
                
where 
tab1.saldo_actual != 0

group by
tab1.id_mae_ter,
tab1.num_doc,
tab1.razon_soc
                
order by
tab1.num_doc

) row_ WHERE ROWNUM <=  $rowEnd   ) where rownum_ >  $rowStart
EOD;

                //ejecuta y obtiene el resultado del sql
                $records = CN_TABLE::executeSQL($sql);


                /*
                 * Generacion de columnas dinamicamente para las edades
                 */
//                $ini = 1;
//                $fin = $frecuencia;
//
//                //recorre cada fila de la consulta
//                foreach ($records as $key => $value) {
//
//                    //extrae los valores en cada fila del saldo y dias vencidos
//                    $dias_vencidos = explode(",", $value["dias_vencidos"]);
//                    $total_saldo = explode(",", $value["saldo_actual"]);
//
//
//                    $this->logMessage("[INFORME EDADES] Dias vencidos: " . $dias_vencidos[0]);
//
//                    foreach ($dias_vencidos as $key_vigper => $valor_vigper) {
//                        $dias_ve = $dias_vencidos[$key_vigper];
//                        $saldo = $total_saldo[$key_vigper];
//
////                    $this->logMessage("[INFORME EDADES] Dias vencidos: " .$dias_ve);
////                    $this->logMessage("[INFORME EDADES] Saldo Vencimiento: " .$saldo);
//                        //si no esta vencido
//                        if ($dias_ve <= 0) {
//                            $records[$key]["por_vencer"] = $saldo;
//                        } else {
//
//                            //establece el rango de vencimiento
//                            $i = 1;
//                            $ini = 1;
//                            $fin = $frecuencia;
//                            $varTemp = "false";
//                            while ($i <= $numBloques) {
//
//                                if ($dias_ve <= $fin && $dias_ve >= $ini) {
//                                    $records[$key]["bloque_" . $i] = $saldo;
//                                    $varTemp = "true";
//                                }
//                                $ini = $fin + 1;
//                                $fin = ($i + 1) * $frecuencia;
//                                $i = $i + 1;
//                            }
//                            //si supera todos los rangos de vencimiento
//                            if ($varTemp != "true") {
//                                $records[$key]["vencido_mas"] = $saldo;
//                            }
//                        }
//                    }
//                }

                $this->totalRows = $total_record_count;
                $this->startRow = $rowStart;
                $this->endRow = $rowStart + count($records);
                $this->list_data = $records;
                $this->logMessage("[INFORME EDADES] Consulta exitosa.");
            } else {

                $mensaje = "[INFORME EDADES] No hay registros debito.";
                $this->status = 1;
//                $this->mensajeError = $mensaje;
                $this->list_data = array();
                $this->logMessage($mensaje);
            }
        } catch (Exception $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!!";
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

    /**
     * Metodo para sumar informe cartera edades
     *
     * @param sfWebRequest $request
     */
    public function executeSum(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");

        //manejo de errores
        try {

            /*
             * Se elimina 2176 - Drummnod de la consulta
             * Incidente #7393, Se retira esta condición - 20171023
             */
            //$quitarTercero = " and tab0.id_mae_ter != 2176 ";
            $quitarTercero = " and tab0.id_mae_ter != 28143 ";

            /*
             * Variables obligatorias
             */
            if (isset($request['id_anhos'])) {
                $id_anhos = $request['id_anhos'];
            }
            if (isset($request['id_meses'])) {
                $id_meses = $request['id_meses'];
            }
            if (isset($request['frecuencia'])) {
                $frecuencia = $request['frecuencia'];
            }
            if (isset($request['num_bloques'])) {
                $numBloques = $request['num_bloques'];
            }
            if (isset($request['id_mae_ter'])) {
                $id_mae_ter = $request['id_mae_ter'];
                $whereTercero = "and tab0.id_mae_ter = " . $request['id_mae_ter'];
            } else {
                $whereTercero = " ";
            }

            /*
             * Variables NO obligatorias
             */
            if (isset($request['nitocc_ini']) && isset($request['nitocc_fin'])) {
                $whereNitocc = "and tab0.num_doc between  '" . $request['nitocc_ini'] . "' and '" . $request['nitocc_fin'] . "'";
            } else {
                $whereNitocc = " ";
            }
            //Punto Venta
            if (isset($request['id_punto_venta'])) {
                $wherePuntoVenta = " AND tab0.id_punto_venta = " . $request['id_punto_venta'];
            } else {
                $wherePuntoVenta = ' ';
            }


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

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


            /*
             * CREAR CASE PARA SQL DE LOS DIFERENTES BLOQUES
             */

            $case_oracle = <<<EOD

EOD;
            $case_total = <<<EOD

EOD;

            //establece el rango de vencimiento
            $i = 1;
            $ini = 1;
            $fin = $frecuencia;
            while ($i <= $numBloques) {
                $case_oracle .= <<<EOD

 CASE
   WHEN last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence >= $ini AND last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence <= $fin
   THEN tab0.saldo_actual
   ELSE 0
   END AS  bloque_$i,

EOD;

                $case_total .= <<<EOD
sum(bloque_$i) as bloque_$i,

EOD;

                $ini = $fin + 1;
                $fin = ($i + 1) * $frecuencia;
                $i = $i + 1;
            }




            /*
             * Obtiene los registros de debito/vencimiento con su saldo respectivo
             */
            $sql = <<<EOD

select

'TOTALES' as razon_Soc,
sum(saldo_actual) as saldo_actual,
sum(por_vencer) as por_vencer,
$case_total
sum(vencido_mas) as vencido_mas

from(

select

tab0.*,

trunc(last_day(to_date('$id_meses/$id_anhos','mm/yyyy'))) - tab0.fecha_vence as dias_vencidos,

 CASE
   WHEN last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence <= 0
   THEN tab0.saldo_actual
   ELSE 0
   END AS por_vencer,

$case_oracle

 CASE
   WHEN last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence > ($frecuencia*$numBloques)
   THEN tab0.saldo_actual
   ELSE 0
   END AS vencido_mas

from ca_debito_saldos tab0

where
1 = 1    
--and tab0.estado_ven = 1
and tab0.id_meses_sal = $id_meses and tab0.id_anhos_sal = $id_anhos
and tab0.fecha_proceso <= trunc(last_day(to_date('$id_meses/$id_anhos','mm/yyyy')))
and (case when tab0.fecha_anu_ven<=last_day(to_date('$id_meses-$id_anhos','MM-YYYY')) then 1 else 0 END  = 0)
    
$whereNitocc $quitarTercero $wherePuntoVenta
and tab0.saldo_actual != 0

order by
to_number(tab0.num_doc),
tab0.sec_debito,
tab0.fecha_proceso,
tab0.id_anhos_sal,
tab0.id_meses_sal

)tab1

EOD;

            //ejecuta y obtiene el resultado del sql
            $records = CN_TABLE::executeSQL($sql);


//            /*
//             * Array para regresar en una fila los totales
//             */
//            $array_totales = array(
//                'razon_soc' => 'TOTALES',
//                'por_vencer' => 0,
//                'vencido_mas' => 0,
//                'saldo_actual' => 0
//            );
//
//            $i = 1;
//            while ($i <= $numBloques) {
//                $array_totales["bloque_" . $i] = 0;
//                $i = $i + 1;
//            }
//
//
//            /*
//             * Generacion de columnas dinamicamente para las edades
//             */
//            $ini = 1;
//            $fin = $frecuencia;
//
//            //recorre cada fila de la consulta
//            foreach ($records as $key => $value) {
//
//                //extrae los valores en cada fila del saldo y dias vencidos
//                $dias_vencidos = explode(",", $value["dias_vencidos"]);
//                $total_saldo = explode(",", $value["saldo_actual"]);
//
//                $this->logMessage("[INFORME EDADES] Dias vencidos: " . $dias_vencidos[0]);
//
//                foreach ($dias_vencidos as $key_vigper => $valor_vigper) {
//                    $dias_ve = $dias_vencidos[$key_vigper];
//                    $saldo = $total_saldo[$key_vigper];
//
//                    //suma valor al array de totales
//                    $array_totales["saldo_actual"] += $saldo;
//
////                    $this->logMessage("[INFORME EDADES] Dias vencidos: " .$dias_ve);
////                    $this->logMessage("[INFORME EDADES] Saldo Vencimiento: " .$saldo);
//                    //si no esta vencido
//                    if ($dias_ve <= 0) {
//                        $records[$key]["por_vencer"] = $saldo;
//
//
//                        //suma valor al array de totales
//                        $array_totales["por_vencer"] += $saldo;
//                    } else {
//
//                        //establece el rango de vencimiento
//                        $i = 1;
//                        $ini = 1;
//                        $fin = $frecuencia;
//                        $varTemp = "false";
//                        while ($i <= $numBloques) {
//
//                            if ($dias_ve <= $fin && $dias_ve >= $ini) {
//                                $records[$key]["bloque_" . $i] = $saldo;
//
//                                //suma valor al array de totales
//                                $array_totales["bloque_" . $i] += $saldo;
//
//                                $varTemp = "true";
//                            }
//                            $ini = $fin + 1;
//                            $fin = ($i + 1) * $frecuencia;
//                            $i = $i + 1;
//                        }
//                        //si supera todos los rangos de vencimiento
//                        if ($varTemp != "true") {
//                            $records[$key]["vencido_mas"] = $saldo;
//
//                            //suma valor al array de totales
//                            $array_totales["vencido_mas"] += $saldo;
//                        }
//                    }
//                }
//            }
//
//            //fila de totales
//            $records = array($array_totales);

            $this->totalRows = 1;
            $this->startRow = 0;
            $this->endRow = 1;
            $this->list_data = $records;
        } catch (Exception $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!!";
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

    /**
     * Metodo para saldo informe cartera edades
     * Analisis [porcentual
     *
     * @param sfWebRequest $request
     */
    public function executeSaldo(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");

        //manejo de errores
        try {

            /*
             * Se elimina 2176 - Drummnod de la consulta
             * Incidente #7393, Se retira esta condición - 20171023
             */
            //$quitarTercero = " and tab0.id_mae_ter != 2176 ";
            $quitarTercero = " and tab0.id_mae_ter != 28143 ";

            /*
             * Variables obligatorias
             */
            if (isset($request['id_anhos'])) {
                $id_anhos = $request['id_anhos'];
            }
            if (isset($request['id_meses'])) {
                $id_meses = $request['id_meses'];
            }
            if (isset($request['frecuencia'])) {
                $frecuencia = $request['frecuencia'];
            }
            if (isset($request['num_bloques'])) {
                $numBloques = $request['num_bloques'];
            }
            if (isset($request['id_mae_ter'])) {
                $id_mae_ter = $request['id_mae_ter'];
                $whereTercero = "and tab0.id_mae_ter = " . $request['id_mae_ter'];
            } else {
                $whereTercero = " ";
            }

            /*
             * Variables NO obligatorias
             */
            if (isset($request['nitocc_ini']) && isset($request['nitocc_fin'])) {
                $whereNitocc = "and tab0.num_doc between  '" . $request['nitocc_ini'] . "' and '" . $request['nitocc_fin'] . "'";
            } else {
                $whereNitocc = " ";
            }
            //Punto Venta
            if (isset($request['id_punto_venta'])) {
                $wherePuntoVenta = " AND tab0.id_punto_venta = " . $request['id_punto_venta'];
            } else {
                $wherePuntoVenta = ' ';
            }



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

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



            /*
             * CREAR CASE PARA SQL DE LOS DIFERENTES BLOQUES
             */

            $case_oracle = <<<EOD

EOD;
            $case_total = <<<EOD

EOD;

            //establece el rango de vencimiento
            $i = 1;
            $ini = 1;
            $fin = $frecuencia;
            while ($i <= $numBloques) {
                $case_oracle .= <<<EOD

 CASE
   WHEN last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence >= $ini AND last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence <= $fin
   THEN tab0.saldo_actual
   ELSE 0
   END AS  bloque_$i,

EOD;

                $case_total .= <<<EOD
ROUND( (sum(bloque_$i) / sum(saldo_actual) )* 100 , 2) as bloque_$i,

EOD;

                $ini = $fin + 1;
                $fin = ($i + 1) * $frecuencia;
                $i = $i + 1;
            }




            /*
             * Obtiene los registros de debito/vencimiento con su saldo respectivo
             */
            $sql = <<<EOD

select

'Análisis Porcentual' as razon_Soc,
ROUND( (sum(saldo_actual) / sum(saldo_actual) )* 100 , 2)  as saldo_actual,
ROUND( (sum(por_vencer) / sum(saldo_actual) )* 100 , 2) as por_vencer,
$case_total
ROUND( (sum(vencido_mas) / sum(saldo_actual) )* 100 , 2) as vencido_mas

from(

select

tab0.*,

trunc(last_day(to_date('$id_meses/$id_anhos','mm/yyyy'))) - tab0.fecha_vence as dias_vencidos,

 CASE
   WHEN last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence <= 0
   THEN tab0.saldo_actual
   ELSE 0
   END AS por_vencer,

$case_oracle

 CASE
   WHEN last_day(to_date('$id_meses/$id_anhos','mm/yyyy')) - tab0.fecha_vence > ($frecuencia*$numBloques)
   THEN tab0.saldo_actual
   ELSE 0
   END AS vencido_mas

from ca_debito_saldos tab0

where
1 = 1    
--and tab0.estado_ven = 1
and tab0.id_meses_sal = $id_meses and tab0.id_anhos_sal = $id_anhos
and tab0.fecha_proceso <= trunc(last_day(to_date('$id_meses/$id_anhos','mm/yyyy')))
and (case when tab0.fecha_anu_ven<=last_day(to_date('$id_meses-$id_anhos','MM-YYYY')) then 1 else 0 END  = 0)
    
$whereNitocc $quitarTercero $wherePuntoVenta
and tab0.saldo_actual != 0

order by
to_number(tab0.num_doc),
tab0.sec_debito,
tab0.fecha_proceso,
tab0.id_anhos_sal,
tab0.id_meses_sal

)tab1

EOD;

            //ejecuta y obtiene el resultado del sql
            $records = CN_TABLE::executeSQL($sql);


//            /*
//             * Array para regresar en una fila los totales
//             */
//            $array_totales = array(
//                'razon_soc' => 'TOTALES',
//                'por_vencer' => 0,
//                'vencido_mas' => 0,
//                'saldo_actual' => 0
//            );
//
//            $i = 1;
//            while ($i <= $numBloques) {
//                $array_totales["bloque_" . $i] = 0;
//                $i = $i + 1;
//            }
//
//
//            /*
//             * Generacion de columnas dinamicamente para las edades
//             */
//            $ini = 1;
//            $fin = $frecuencia;
//
//            //recorre cada fila de la consulta
//            foreach ($records as $key => $value) {
//
//                //extrae los valores en cada fila del saldo y dias vencidos
//                $dias_vencidos = explode(",", $value["dias_vencidos"]);
//                $total_saldo = explode(",", $value["saldo_actual"]);
//
//                $this->logMessage("[INFORME EDADES] Dias vencidos: " . $dias_vencidos[0]);
//
//                foreach ($dias_vencidos as $key_vigper => $valor_vigper) {
//                    $dias_ve = $dias_vencidos[$key_vigper];
//                    $saldo = $total_saldo[$key_vigper];
//
//                    //suma valor al array de totales
//                    $array_totales["saldo_actual"] += $saldo;
//
////                    $this->logMessage("[INFORME EDADES] Dias vencidos: " .$dias_ve);
////                    $this->logMessage("[INFORME EDADES] Saldo Vencimiento: " .$saldo);
//                    //si no esta vencido
//                    if ($dias_ve <= 0) {
//                        $records[$key]["por_vencer"] = $saldo;
//
//
//                        //suma valor al array de totales
//                        $array_totales["por_vencer"] += $saldo;
//                    } else {
//
//                        //establece el rango de vencimiento
//                        $i = 1;
//                        $ini = 1;
//                        $fin = $frecuencia;
//                        $varTemp = "false";
//                        while ($i <= $numBloques) {
//
//                            if ($dias_ve <= $fin && $dias_ve >= $ini) {
//                                $records[$key]["bloque_" . $i] = $saldo;
//
//                                //suma valor al array de totales
//                                $array_totales["bloque_" . $i] += $saldo;
//
//                                $varTemp = "true";
//                            }
//                            $ini = $fin + 1;
//                            $fin = ($i + 1) * $frecuencia;
//                            $i = $i + 1;
//                        }
//                        //si supera todos los rangos de vencimiento
//                        if ($varTemp != "true") {
//                            $records[$key]["vencido_mas"] = $saldo;
//
//                            //suma valor al array de totales
//                            $array_totales["vencido_mas"] += $saldo;
//                        }
//                    }
//                }
//            }
//
//            //fila de totales
//            $records = array($array_totales);

            $this->totalRows = 1;
            $this->startRow = 0;
            $this->endRow = 1;
            $this->list_data = $records;
        } catch (Exception $e) {

            $this->status = 1;
            $this->mensajeError = "ERROR!!!";
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

}
