<?php

/**
 * inf_titulo_ejec actions.
 *
 * @package    CobroCoactivo
 * @subpackage inf_titulo_ejec
 * @author     Manuel Enrique Paredes Lopez
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class inf_titulo_ejecActions 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");

        /*
         * 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.id_anhos ';
        }


        /*
         * Manejo de errores
         */
        try {
            /*
             * Variables obligatorias
             */
            $id_anhos = $request['id_anhos'];
            $fecha_ini = $request['fecha_ini'];
            $fecha_fin = $request['fecha_fin'];

            /*
             * Variables opcionales
             */
            //Codigo Titulo
            if (isset($request['cod_titulo'])) {
                $whereCodTitulo = " AND tab0.cod_titulo = " . $request['cod_titulo'];
            } else {
                $whereCodTitulo = ' ';
            }
            //id_contrato
         /*   if (isset($request['id_contrato'])) {
                $whereIdContrato = " AND tab0.id_contrato = " . $request['id_contrato'];
            } else {
                $whereIdContrato = ' ';
            }*/
            //id anhos
            if(isset($request['id_anhos'])){
                $whereAnho = 'AND tab0.id_anhos = '.$request['id_anhos'];
            } else {
                $whereAnho = ' ';
            }

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

            /**
             *
             */
            $consulta_sql = <<<EOD
              select 
                    ID_REMISION_TITULO AS "id_remision_titulo", ID_AVOCA_CONOC AS "id_avoca_conoc", ID_PROCESO_COACTIVO AS "id_proceso_coactivo", NUMERO_REMISION AS "numero_remision", ANHO_REMISION AS "anho_remision", FECHA_REMISION AS "fecha_remision", NUMERO_CORREPONDENCIA AS "numero_correpondencia", ID_PAR AS "id_par", ESTADO AS "estado", CIERRE AS "cierre", COD_TITULO AS "cod_titulo", NOMBRE_PAR AS "nombre_par", FECHA_APRUEBA_RPTO AS "fecha_aprueba_rpto", APROBADO_RPTO AS "aprobado_rpto", ID_ABOGADO AS "id_abogado", ABREVIATURA AS "abreviatura", TIPODOC_ABO AS "tipodoc_abo", NUM_DOC AS "num_doc", RAZON_SOC AS "razon_soc", DOC_ABOGADO AS "doc_abogado", NO_AUTO_AVOCA AS "no_auto_avoca", FECHA_AVOCA AS "fecha_avoca", OBSERV_AVOCA AS "observ_avoca", ADJUNTO_AVOCA AS "adjunto_avoca", DESC_TIPO_DOC_AVOCA AS "desc_tipo_doc_avoca", FECHA_CIERRE_PERSUA AS "fecha_cierre_persua", ESTADO_CIERRE_PERSUA AS "estado_cierre_persua", ADJUNTO_CIERRE_PERSUA AS "adjunto_cierre_persua", OBSERV_CIERRE_PERSUA AS "observ_cierre_persua", NO_PROCESO AS "no_proceso", ID_ANHOS AS "id_anhos", FECHA_COBRO_COACTIVO AS "fecha_cobro_coactivo", FECHA_APROB_DENEG AS "fecha_aprob_deneg", APROBADO_DENEG AS "aprobado_deneg", NO_AP_MANTENIMIENTO AS "no_ap_mantenimiento", FECHA_AP_MANTENIMIENTO AS "fecha_ap_mantenimiento", NO_AP_OSA AS "no_ap_osa", FECHA_AP_OSA AS "fecha_ap_osa", FECHA_AP_EXCEP AS "fecha_ap_excep", FECHA_AP_RECURSO AS "fecha_ap_recurso", NO_AP_TERMINA AS "no_ap_termina", FECHA_AP_TERMINA AS "fecha_ap_termina", ESTADO_PROCESAL AS "estado_procesal", FECHA_EST_PROC AS "fecha_est_proc", DESCRIPCION_IB AS "descripcion_ib", NO_OFICIO_IB AS "no_oficio_ib", FECHA_ENVIO_IB AS "fecha_envio_ib" 
                    from(
                        
                        select distinct
                        
                        tab0.id_remision_titulo,
                        cacdet.id_avoca_conoc,
                        cpcdet.id_proceso_coactivo,
                            
                        tab0.numero_remision,
                        tab0.anho_remision,
                        to_char(tab0.fecha_remision,'dd/mm/yyyy') as fecha_remision,
                        tab0.numero_correpondencia,
                        tab0.id_par,
                        tab0.estado,
                        tab0.cierre,
                        remidet.cod_titulo,

                        tab1.descripcion as nombre_par,
                            
                        to_char(tab2.fecha, 'dd/mm/yyyy') as fecha_aprueba_rpto,
                       case when tab2.aprobado = 1 then 'SI' when tab2.aprobado = 0 then 'No' end  as aprobado_rpto,
                        
                        tab5.id_abogado,
                        tab5.abreviatura,
                        tab5.descripcion as tipodoc_abo,
                        tab5.num_doc,
                        tab5.razon_soc,
                        tab5.num_doc || ' ' || tab5.razon_soc as doc_abogado,
                        
                        cac.no_auto as no_auto_avoca,
                        TO_CHAR(cac.fecha,'yyyy-mm-dd') as fecha_avoca,
                        cac.observaciones as observ_avoca,
                        cac.adjunto as adjunto_avoca,    
                        ctd.descripcion as desc_tipo_doc_avoca,
                        
                        TO_CHAR(tab6.fecha_cierre,'yyyy-mm-dd') as fecha_cierre_persua,
                        case when tab6.estado = 1 then 'SI' when tab6.estado = 0  then 'No' end  as estado_cierre_persua,
                        tab6.adjunto as adjunto_cierre_persua,
                        tab6.observaciones as observ_cierre_persua,
                        
                        cpc.NO_PROCESO,
                        cpc.ID_ANHOS,
                        TO_CHAR(cpc.FECHA,'yyyy-mm-dd') as fecha_cobro_coactivo,
                        
                        cad.fecha as fecha_aprob_deneg,
                        case when cad.aprobado = 1 then 'SI' when cad.aprobado = 0 then 'No' end  as aprobado_deneg,
                        
                        eta.NO_AP_MANTENIMIENTO,
                        TO_CHAR(eta.FECHA_AP_MANTENIMIENTO,'yyyy-mm-dd') AS "FECHA_AP_MANTENIMIENTO",
                        eta.NO_AP_OSA,
                        TO_CHAR(eta.FECHA_AP_OSA,'yyyy-mm-dd') AS "FECHA_AP_OSA",
                        TO_CHAR(eta.FECHA_AP_EXCEP,'yyyy-mm-dd') AS "FECHA_AP_EXCEP",
                        TO_CHAR(eta.FECHA_AP_RECURSO,'yyyy-mm-dd') AS "FECHA_AP_RECURSO",
                        eta.NO_AP_TERMINA,
                        TO_CHAR(eta.FECHA_AP_TERMINA,'yyyy-mm-dd') AS "FECHA_AP_TERMINA",
                        eta.ESTADO_PROCESAL,
                        TO_CHAR(eta.FECHA_EST_PROC,'yyyy-mm-dd')   as "FECHA_EST_PROC",
                        
                        entidadib.DESCRIPCION_ENTIDAD_IB_AGRUP as descripcion_ib,
                        entidadib.NO_OFICIO_AGRUP as no_oficio_ib,
                        entidadib.FECHA_ENVIO_AGRUP as fecha_envio_ib
                        
                        from cbr_remision_titulo tab0   
                                    
                        inner join cbr_remision_titulo_det remidet on tab0.id_remision_titulo = remidet.id_remision_titulo
                        left join cbr_par tab1 on tab1.id_par = tab0.id_par    
                        left join cbr_aprueba_reparto tab2 on tab2.id_remision_titulo = tab0.id_remision_titulo    
                        left join CBR_ABOGADO_ULT_V tab5 on tab5.id_remision_titulo = tab0.id_remision_titulo    
                        left join cbr_aprob_deneg cad on cad.ID_REMISION_TITULO=tab0.ID_REMISION_TITULO and cad.actual = 1
                        
                        left join cbr_avoca_conoc_det cacdet on cacdet.id_remision_titulo = tab0.id_remision_titulo
                        left join cbr_avoca_conoc cac on cac.id_avoca_conoc = cacdet.id_avoca_conoc
                        left join cbr_tipo_documento ctd on ctd.id_tipo_documento = cac.id_tipo_documento
                        
                        left join cbr_cierre_persuasivo tab6 on tab6.id_avoca_conoc = cacdet.id_avoca_conoc
                        
                        left join CBR_PROCESO_COACTIVO_DET cpcdet on cpcdet.ID_REMISION_TITULO = tab0.ID_REMISION_TITULO
                        left join CBR_PROCESO_COACTIVO cpc on cpc.id_proceso_coactivo = cpcdet.id_proceso_coactivo
                        
                        
                        left join CBR_PROCESO_REGISETA_AGRUP_V eta on eta.id_proceso_coactivo = cpcdet.id_proceso_coactivo
                        
                        left join CBR_AVOCA_ENTIDADIB_V entidadib on cacdet.id_avoca_conoc = entidadib.id_avoca_conoc
                      where tab0.fecha_remision between to_date( '$fecha_ini', 'yyyy-mm-dd' ) and to_date( '$fecha_fin' , 'yyyy-mm-dd' )
                    )tab0

                    where 
                    1=1
                      $whereCodTitulo
                      $whereAnho  
                      $sortBy                  
     
EOD;

            /*
             * 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

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


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

}
