<?php

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

    /**
     * Executes index 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");

        /*
         * Manejar Errores
         */
        try {


            //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);

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

            /*
             * 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.anho_remision, tab0.nitocc, tab0.cod_titulo, tab0.numero_correpondencia ';
            }


            /*
             * Variables para el registro de log
             */

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

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


            //CN_TABLE::registrarLog($request, $id_ope_bd, $id_mae_bd, $observacion);

            /*
             * Filtro para que levante por CO_ESTUDIOS_PREVIOS y por FASE
             */

            $where = "";
            $whereCodTitulo = "";
            $whereTitular = "";
            $wherePar = "";
            $whereConceptoResol = "";
            $whereAnhoRemision = "";


            if (isset($request['num_doc'])) {
                $whereTitular = " AND tab0.nitocc=" . $request['num_doc'];
            }

            if (isset($request['cod_titulo'])) {
                $whereCodTitulo = " AND tab0.cod_titulo = '" . $request['cod_titulo'] . "'";
            }

            if (isset($request['id_par'])) {
                $wherePar = " AND tab0.id_par = " . $request['id_par'];
            }

            if (isset($request['id_concepto_resol'])) {
                $whereConceptoResol = " AND tab0.id_concepto_resol = " . $request['id_concepto_resol'];
            }

            //estado 
            $estado = null;
            $whereEstado = "";
            if (isset($request['estado'])) {
                if ($request['estado'] == 'true') {
                    //Si es true
                    $estado = 1;
                    $whereEstado = " AND tab0.estado = 1 ";
                } elseif ($request['estado'] == '0') {
                    //Si es 0
                    $estado = 0;
                    $whereEstado = " AND tab0.estado = 0 ";
                } else {
                    //Si es false
                    $estado = 0;
                    $whereEstado = " ";
                }
            }

            if (isset($request['id_anhos'])) {
                $whereAnhoRemision = " and tab0.anho_remision = " . $request['id_anhos'];
            }


            /*
             * sql que trae los resultados
             * por los filtros, para totalizar las filas
             */

            $sql = <<<EOD
select count(*) as count from (

select 
tab0.*

from(

    select 
    tab0.anho_remision,
    tab0.NUMERO_CORREPONDENCIA,
    tab0.FECHA_REMISION,
    tab0.no_folios,
    det.cod_titulo,
    tab2.id_concepto_resol,
    tab2.NO_RESOLUCION,
    tab3.NITOCC,
    tab3.NOMBRE_RAZON,
    tab4.id_par,
    tab4.DESCRIPCION AS PAR,
    tab5.DESCRIPCION CONCEPTO_RESOL,
    tab2.no_resolucion_text,
    tab2.date_expedicion_text,
    
    tab8.razon_soc as ABOGADO,
    nvl(tab6.estado,0) as estado
    
    from cbr_remision_titulo tab0
    left join CBR_PAR tab4 ON tab4.id_par = tab0.id_par
    
    left join  CBR_REMISION_TITULO_DET_V det
    on det.id_remision_titulo = tab0.id_remision_titulo
    
    join CBR_ACTUALIZA_TITULO tab3 ON tab3.cod_titulo = det.cod_titulo    
    
    left join CBR_RESOLUCION_TIT_V tab2 ON tab2.cod_titulo = det.cod_titulo
    left join CBR_CONCEPTO_RESOL tab5 ON tab5.ID_CONCEPTO_RESOL = tab2.ID_CONCEPTO_RESOL
    
    left join cbr_reparto tab6 ON tab6.id_remision_titulo = tab0.id_remision_titulo
    left join CBR_ABOGADO tab7  ON tab7.id_abogado = tab6.id_abogado
    left join interceros_v tab8 ON tab8.id_mae_ter = tab7.id_mae_ter

)tab0

where 
1 = 1                    
$whereAnhoRemision
$whereTitular 
$whereCodTitulo
$whereEstado 
$wherePar
$whereConceptoResol 
                    
)
EOD;

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


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

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

select 
tab0.*

from(

    select 
    tab0.anho_remision,
    tab0.NUMERO_CORREPONDENCIA,
    tab0.FECHA_REMISION,
    tab0.no_folios,
    det.cod_titulo,
    tab2.id_concepto_resol,
    tab2.NO_RESOLUCION,
    tab3.NITOCC,
    tab3.NOMBRE_RAZON,
    tab4.id_par,
    tab4.DESCRIPCION AS PAR,
    tab5.DESCRIPCION CONCEPTO_RESOL,
    tab2.no_resolucion_text,
    tab2.date_expedicion_text,
    
    tab8.razon_soc as ABOGADO,
    nvl(tab6.estado,0) as estado
    
    from cbr_remision_titulo tab0
    left join CBR_PAR tab4 ON tab4.id_par = tab0.id_par
    
    left join  CBR_REMISION_TITULO_DET_V det
    on det.id_remision_titulo = tab0.id_remision_titulo
    
    join CBR_ACTUALIZA_TITULO tab3 ON tab3.cod_titulo = det.cod_titulo    
    
    left join CBR_RESOLUCION_TIT_V tab2 ON tab2.cod_titulo = det.cod_titulo
    left join CBR_CONCEPTO_RESOL tab5 ON tab5.ID_CONCEPTO_RESOL = tab2.ID_CONCEPTO_RESOL
    
    left join cbr_reparto tab6 ON tab6.id_remision_titulo = tab0.id_remision_titulo
    left join CBR_ABOGADO tab7  ON tab7.id_abogado = tab6.id_abogado
    left join interceros_v tab8 ON tab8.id_mae_ter = tab7.id_mae_ter

)tab0

where 
1 = 1                    
$whereAnhoRemision
$whereTitular 
$whereCodTitulo
$whereEstado 
$wherePar
$whereConceptoResol     
                        
$sortBy                        

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

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


            $this->totalRows = $total_record_count;
            $this->startRow = $rowStart;
            $this->endRow = $rowStart + count($records);
            $this->list_data = $records;
            $this->logMessage("[ca_consul_correo] 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());
        }
    }

}
