<?php

/**
 * inf_mc_liquidacion actions.
 *
 * @package    cobro_coactivo
 * @subpackage inf_mc_liquidacion
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class inf_mc_liquidacionActions 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");

        /*
         * 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 = 150;
            }

            //ordenar consulta
            if (isset($request['_sortBy'])) {
                $sortBy = " Order by " . $request['_sortBy'];
            } else {
                $sortBy = 'ORDER BY to_number(tab0.orden), tab0.numero_correpondencia';
            }

            /*
             * Filtros
             */
            $fecha_ini = $request['fecha_ini'];
            $fecha_fin = $request['fecha_fin'];

            $whereCodTitulo = "";
            $wherePar = "";
            $whereNumeroRemision = "";
            $whereNumeroCorrepondencia = "";
            $whereNoProces = "";
            $whereAbogado = "";


            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['numero_remision'])) {
                $whereNumeroRemision = " AND tab0.numero_remision = " . $request['numero_remision'];
            }
            if (isset($request['numero_correpondencia'])) {
                $whereNumeroCorrepondencia = " AND tab0.numero_correpondencia = " . $request['numero_correpondencia'];
            }
            if (isset($request['no_proceso_proc'])) {
                $whereNoProces = " AND (' ' || replace(tab0.no_proceso_proc,'-',' , ') || ' ') like '% " . $request['no_proceso_proc'] . " %' ";
            }
            if (isset($request['id_abogado'])) {
                $whereAbogado = " AND tab0.id_abogado = " . $request['id_abogado'];
            }

            /*
             * Ejemplo:JKL-11561
             * Consulta de registros agrupados de procesos y avocas, con recepciones
             */
            $consulta = <<<EOD
select

nvl(tab0.id_remision_titulo,0) as ids_remis,
nvl(tab0.id_avoca_conoc,0) as ids_avocas,
nvl(tab0.id_proceso_coactivo,0) as ids_proces,
' ' || replace(tab0.no_proceso_proc,'-',' , ') || ' ' as no_proces,

tab0.*

from(

    select
    1 as tag_union,
    to_char(tab0.anho_remision) || to_char(lpad(tab0.numero_remision,4,0)) as orden,

    to_char(tab0.id_remision_titulo) as id_remision_titulo,
    to_char(tab0.numero_remision) as numero_remision,
    to_char(tab0.anho_remision) as anho_remision,
    to_char(tab0.numero_correpondencia) as numero_correpondencia,
    to_char(tab0.fecha_remision,'dd/mm/yyyy') as fecha_remision,
    to_char(tab0.id_par) as id_par,
    tab0.no_folios as no_folios,
    tab0.estado as estado,
    tab0.fecha_log as fecha_log,
    tab0.usuario_log as usuario_log,
    to_char(tab0.id_clasif_cartera) as id_clasif_cartera,
    to_char(tab0.clasif_cartera) as clasif_cartera,
    to_char(tab0.completo_remision) as completo_remision,
    to_char(tab0.descripcion_par) as descripcion_par,

    to_char(tab0.cod_titulo_det_agrup) as cod_titulo_det_agrup,
    tab0.observaciones_det_agrup as observaciones_det_agrup,
    to_char(tab0.mineral_det_agrup) as mineral_det_agrup,
    to_char(tab0.fecha_titobs) as fecha_titobs,
    to_char(tab0.observaciones_titobs) as observaciones_titobs,

    tab0.aprobado_rep as aprobado_rep,
    tab0.aprobado_deneg as aprobado_deneg,

    to_char(tab0.id_abogado) as id_abogado,
    to_char(tab0.num_doc) as num_doc,
    to_char(tab0.razon_soc) as razon_soc,

    to_char(tab0.no_resolucion) as no_resolucion,
    to_char(tab0.date_expedicion) as date_expedicion,
    to_char(tab0.date_ejecutoria) as date_ejecutoria,
    to_char(tab0.date_exigibilidad) as date_exigibilidad,
    to_char(tab0.date_fin_exigibilidad) as date_fin_exigibilidad,

    to_char(tab0.no_resolucion_det) as no_resolucion_det,
    to_char(tab0.date_expedicion_det) as date_expedicion_det,

    tab0.no_resolucion_text as no_resolucion_text,
    tab0.date_expedicion_text as date_expedicion_text,
    tab0.date_ejecutoria_text as date_ejecutoria_text,
    tab0.date_exigibilidad_text as date_exigibilidad_text,
    tab0.date_fin_exigibilidad_text as date_fin_exigibilidad_text,

    tab0.no_resolucion_text_completa as no_resolucion_text_completa,

    tab0.valor_capital,
    tab0.valor_interes,
    tab0.valor_abono,
    tab0.saldo,
    tab0.valor_abono_calc,
    tab0.valor_acuerdo,
    tab0.valor_embargo,

    tab0.nitocc as nitocc,
    tab0.nombre_razon as nombre_razon,
    tab0.email as email,
    tab0.telefono as telefono,
    tab0.direccion as direccion,

    tab0.valor_tipo_canon,
    tab0.valor_tipo_regal,
    tab0.valor_tipo_visita,
    tab0.valor_tipo_multa,
    tab0.valor_tipo_interes,
    tab0.valor_tipo_otros,
    tab0.valor_total,

    tab0.id_avoca_conoc as id_avoca_conoc,
    tab0.observaciones_avoca_det,
    tab0.no_auto_avoca,
    tab0.fecha_avoca,
    tab0.observaciones_avoca,

    tab0.no_proceso_text,

    tab0.id_proceso_coactivo,
    tab0.observaciones_proc_det,
    tab0.no_proceso_proc,
    tab0.id_anhos_proc,
    tab0.fecha_proc

    from(

        select
        tab0.*,

        remiavo.id_avoca_conoc,
        remiavo.observaciones as observaciones_avoca_det,
        remiavo.no_auto_avoca,
        remiavo.fecha_avoca,
        remiavo.observaciones_avoca as observaciones_avoca,

        case
        when remipro.no_proceso_proc is not null then remipro.no_proceso_proc
        when remiavo.no_auto_avoca is not null then 'PERSUASIVO'
        else '' end as no_proceso_text,

        remipro.id_proceso_coactivo,
        remipro.observaciones as observaciones_proc_det,
        remipro.no_proceso_proc,
        remipro.id_anhos_proc,
        remipro.fecha_proc

        from(

            select DISTINCT
            tab0.id_remision_titulo as id_remision_titulo, tab0.numero_remision as numero_remision, tab0.anho_remision as anho_remision,
            tab0.numero_correpondencia as numero_correpondencia, tab0.fecha_remision as fecha_remision,
            tab0.id_par as id_par, tab0.no_folios as no_folios, tab0.estado as estado, tab0.fecha_log as fecha_log,
            tab0.usuario_log as usuario_log,
            tab0.id_clasif_cartera,tab0.clasif_cartera,
            tab0.numero_remision||' - '||tab0.anho_remision as completo_remision,
            tab0.descripcion_par,
            tab0.cod_titulo_det_agrup as cod_titulo_det_agrup,
            tab0.observaciones_det_agrup,
            replace(tab0.mineral_det_agrup,',',chr(10)) as mineral_det_agrup,
            replace(tab0.fecha_titobs,' --- ',chr(10)) as fecha_titobs,
            replace(tab0.observaciones_titobs,' --- ',chr(10)) as observaciones_titobs,

            tab0.aprobado_rep, tab0.aprobado_deneg,
            tab0.id_abogado, tab0.num_doc, tab0.razon_soc, tab0.no_resolucion,
            tab0.date_expedicion,
            tab0.date_ejecutoria,
            tab0.date_exigibilidad,
            tab0.date_fin_exigibilidad,
            tab0.no_resolucion_det, tab0.date_expedicion_det,

            replace(tab0.no_resolucion_text,' - ',chr(10)) as no_resolucion_text,
            replace(tab0.date_expedicion_text,' - ',chr(10)) as date_expedicion_text,
            replace(tab0.date_ejecutoria,',',chr(10)) as date_ejecutoria_text,
            replace(tab0.date_exigibilidad,',',chr(10)) as date_exigibilidad_text,
            replace(tab0.date_fin_exigibilidad,',',chr(10)) as date_fin_exigibilidad_text,

            tab0.no_resolucion_text_completa, tab0.valor_capital,
            tab0.valor_interes, tab0.valor_abono, tab0.saldo, tab0.valor_abono_calc,
            tab0.valor_acuerdo, tab0.valor_embargo,

            replace(titr.nitocc,',',chr(10)) as nitocc,
            replace(titr.nombre_razon,',',chr(10)) as nombre_razon,
            titr.email,
            titr.telefono,
            titr.direccion,

            nvl(remcon.valor_tipo_canon,0) as valor_tipo_canon,
            nvl(remcon.valor_tipo_regal,0) as valor_tipo_regal,
            nvl(remcon.valor_tipo_visita,0) as valor_tipo_visita,
            nvl(remcon.valor_tipo_multa,0) as valor_tipo_multa,
            nvl(remcon.valor_tipo_interes,0) as valor_tipo_interes,
            nvl(remcon.valor_tipo_otros,0) as valor_tipo_otros,
            nvl(remcon.valor_total,0) as valor_total

            from(

                SELECT
                tab0.id_remision_titulo as id_remision_titulo, tab0.numero_remision as numero_remision, tab0.anho_remision as anho_remision,
                tab0.numero_correpondencia as numero_correpondencia, tab0.fecha_remision as fecha_remision,
                tab0.id_par as id_par, tab0.no_folios as no_folios, tab0.estado as estado, tab0.fecha_log as fecha_log,
                tab0.usuario_log as usuario_log,
                tab0.id_clasif_cartera,cla.descripcion as clasif_cartera,
                tab0.numero_remision||' - '||tab0.anho_remision as completo_remision,
                tab1.descripcion as descripcion_par, tab2.cod_titulo_det_agrup as cod_titulo_det_agrup, tab2.observaciones_det_agrup as observaciones_det_agrup,
                tab2.mineral_det_agrup as mineral_det_agrup,
                tab2.fecha_titobs,
                tab2.observaciones_titobs,

                tab3.aprobado as aprobado_rep, tab4.aprobado as aprobado_deneg,
                tab5.id_abogado as id_abogado, tab5.num_doc as num_doc, tab5.razon_soc as razon_soc, tab7.no_resolucion as no_resolucion,

                tab7.date_expedicion as date_expedicion,
                tab7.date_ejecutoria as date_ejecutoria,
                tab7.date_exigibilidad as date_exigibilidad,
                tab7.date_fin_exigibilidad as date_fin_exigibilidad,
                tab7.no_resolucion_det as no_resolucion_det, tab7.date_expedicion_det as date_expedicion_det,
                tab7.no_resolucion_text as no_resolucion_text,
                tab7.date_expedicion_text as date_expedicion_text,
                tab7.no_resolucion_text_completa as no_resolucion_text_completa, tab7.valor_capital as valor_capital,
                tab7.valor_interes as valor_interes, tab7.valor_abono as valor_abono, tab7.saldo as saldo, tab7.valor_abono_calc as valor_abono_calc,
                tab7.valor_acuerdo as valor_acuerdo, tab7.valor_embargo as valor_embargo,

                tab8.cod_titulo

                FROM CBR_REMISION_TITULO tab0

                JOIN CBR_PAR tab1 ON tab0.id_par = tab1.id_par
                left join cbr_clasif_cartera cla on cla.id_clasif_cartera = tab0.id_clasif_cartera
                LEFT JOIN CBR_REMISION_TIT_AGRUP_V tab2 ON tab0.id_remision_titulo = tab2.id_remision_titulo
                LEFT JOIN CBR_APRUEBA_REPARTO_ULT_V tab3 ON tab0.id_remision_titulo = tab3.id_remision_titulo
                LEFT JOIN CBR_APROB_DENEG_ULT_V tab4 ON tab0.id_remision_titulo = tab4.id_remision_titulo
                LEFT JOIN CBR_ABOGADO_ULT_V tab5 ON tab0.id_remision_titulo = tab5.id_remision_titulo
                LEFT JOIN CBR_RESOL_TIT_REMIS_V tab7 ON tab0.id_remision_titulo = tab7.id_remision_titulo
                LEFT JOIN CBR_REMISION_TITULO_DET_V tab8 ON tab0.id_remision_titulo = tab8.id_remision_titulo

            )tab0

            left join CBR_REMIS_TITULAR_AGRUP_V titr
            on titr.id_remision_titulo = tab0.id_remision_titulo

            left join CBR_REMIS_REGISTRO_CONCEP_V remcon
            on remcon.id_remision_titulo = tab0.id_remision_titulo

            where
            1 = 1
            $whereCodTitulo

        )tab0

        left join CBR_REMIS_AVOCA_AGRUP_V remiavo
        on remiavo.id_remision_titulo = tab0.id_remision_titulo

        left join CBR_REMIS_PROCESO_AGRUP_V remipro
        on remipro.id_remision_titulo = tab0.id_remision_titulo

        where
        tab0.fecha_remision between to_date('$fecha_ini','YYYY-MM-DD') AND to_date('$fecha_fin','YYYY-MM-DD')
        $wherePar
        $whereNumeroRemision
        $whereNumeroCorrepondencia
        $whereAbogado

    )tab0

    --Solo registros sin proceso ni avoca
    where
    nvl(tab0.id_proceso_coactivo,0) = '0'
    and nvl(tab0.id_avoca_conoc,0) = '0'

    union



    select

    2 as tag_union,
    --min( tab0.anho_remision ) || lpad(min( tab0.numero_remision ),4,0) as orden,
    min( tab0.anho_remision || lpad( tab0.numero_remision ,4,0) ) as orden,

    LISTAGG(tab0.id_remision_titulo, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as id_remision_titulo,
    LISTAGG(tab0.numero_remision, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as numero_remision,
    LISTAGG(tab0.anho_remision, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as anho_remision,
    LISTAGG(tab0.numero_correpondencia, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as numero_correpondencia,
    LISTAGG(to_char(tab0.fecha_remision,'dd/mm/yyyy'), ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as fecha_remision,
    LISTAGG(tab0.id_par, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as id_par,
    sum(tab0.no_folios) as no_folios,
    min(tab0.estado) as estado,
    null as fecha_log,
    null as usuario_log,
    to_char(wm_concat(distinct tab0.id_clasif_cartera)) as id_clasif_cartera,
    to_char(wm_concat(distinct tab0.clasif_cartera)) as clasif_cartera,
    LISTAGG(tab0.completo_remision, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as completo_remision,
    LISTAGG(tab0.descripcion_par, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as descripcion_par,

    ( to_char(wm_concat(distinct tab0.cod_titulo_det_agrup)) ) as cod_titulo_det_agrup,
    null as observaciones_det_agrup,
    REPLACE(( to_char(wm_concat(distinct tab0.mineral_det_agrup)) ),',',chr(10)|| '---' ||chr(10)) as mineral_det_agrup,
    REPLACE(( to_char(wm_concat(distinct tab0.fecha_titobs)) ),',',chr(10)|| '---' ||chr(10)) as fecha_titobs,
    ( to_char(wm_concat(distinct tab0.observaciones_titobs)) ) as observaciones_titobs,

    min(tab0.aprobado_rep) aprobado_rep,
    min(tab0.aprobado_deneg) aprobado_deneg,

    REPLACE(( to_char(wm_concat(distinct tab0.id_abogado)) ),',',chr(10)|| '---' ||chr(10)) as id_abogado,
    REPLACE(( to_char(wm_concat(distinct tab0.num_doc)) ),',',chr(10)|| '---' ||chr(10)) as num_doc,
    REPLACE(( to_char(wm_concat(distinct tab0.razon_soc)) ),',',chr(10)|| '---' ||chr(10)) as razon_soc,

    LISTAGG(tab0.no_resolucion, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as no_resolucion,
    LISTAGG(tab0.date_expedicion, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as date_expedicion,
    LISTAGG(tab0.date_ejecutoria, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as date_ejecutoria,
    LISTAGG(tab0.date_exigibilidad, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as date_exigibilidad,
    LISTAGG(tab0.date_fin_exigibilidad, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as date_fin_exigibilidad,

    LISTAGG(tab0.no_resolucion_det, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as no_resolucion_det,
    LISTAGG(tab0.date_expedicion_det, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as date_expedicion_det,

    LISTAGG(tab0.no_resolucion_text, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as no_resolucion_text,
    LISTAGG(tab0.date_expedicion_text, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as date_expedicion_text,
    LISTAGG(tab0.date_ejecutoria_text, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as date_ejecutoria_text,
    LISTAGG(tab0.date_exigibilidad_text, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as date_exigibilidad_text,
    LISTAGG(tab0.date_fin_exigibilidad_text, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as date_fin_exigibilidad_text,

    LISTAGG(tab0.no_resolucion_text_completa, ',') WITHIN GROUP (ORDER BY tab0.id_remision_titulo) as no_resolucion_text_completa,

    sum(tab0.valor_capital) as valor_capital,
    sum(tab0.valor_interes) as valor_interes,
    sum(tab0.valor_abono) as valor_abono,
    sum(tab0.saldo) as saldo,
    sum(tab0.valor_abono_calc) as valor_abono_calc,
    sum(tab0.valor_acuerdo) as valor_acuerdo,
    sum(tab0.valor_embargo) as valor_embargo,

    REPLACE(( to_char(wm_concat(distinct tab0.nitocc)) ),',',chr(10)|| '---' ||chr(10)) as nitocc,
    REPLACE(( to_char(wm_concat(distinct tab0.nombre_razon)) ),',',chr(10)|| '---' ||chr(10)) as nombre_razon,
    REPLACE(( to_char(wm_concat(distinct tab0.email)) ),',',chr(10)|| '---' ||chr(10)) as email,
    REPLACE(( to_char(wm_concat(distinct tab0.telefono)) ),',',chr(10)|| '---' ||chr(10)) as telefono,
    REPLACE(( to_char(wm_concat(distinct tab0.direccion)) ),',',chr(10)|| '---' ||chr(10)) as direccion,

    sum(tab0.valor_tipo_canon) as valor_tipo_canon,
    sum(tab0.valor_tipo_regal) as valor_tipo_regal,
    sum(tab0.valor_tipo_visita) as valor_tipo_visita,
    sum(tab0.valor_tipo_multa) as valor_tipo_multa,
    sum(tab0.valor_tipo_interes) as valor_tipo_interes,
    sum(tab0.valor_tipo_otros) as valor_tipo_otros,
    sum(tab0.valor_total) as valor_total,


    tab0.id_avoca_conoc,
    tab0.observaciones_avoca_det,
    tab0.no_auto_avoca,
    tab0.fecha_avoca,
    tab0.observaciones_avoca,

    REPLACE(( to_char(wm_concat(distinct tab0.no_proceso_text)) ),',',chr(10)|| '---' ||chr(10)) as no_proceso_text,

    ( to_char(wm_concat(distinct tab0.id_proceso_coactivo)) ) as id_proceso_coactivo,
    REPLACE(( to_char(wm_concat(distinct tab0.observaciones_proc_det)) ),',',chr(10)|| '---' ||chr(10)) as observaciones_proc_det,
    REPLACE(( to_char(wm_concat(distinct tab0.no_proceso_proc)) ),',',chr(10)|| '---' ||chr(10)) as no_proceso_proc,
    REPLACE(( to_char(wm_concat(distinct tab0.id_anhos_proc)) ),',',chr(10)|| '---' ||chr(10)) as id_anhos_proc,
    REPLACE(( to_char(wm_concat(distinct tab0.fecha_proc)) ),',',chr(10)|| '---' ||chr(10)) as fecha_proc

    from(

        select
        tab0.*,

        remiavo.id_avoca_conoc,
        remiavo.observaciones as observaciones_avoca_det,
        remiavo.no_auto_avoca,
        remiavo.fecha_avoca,
        remiavo.observaciones_avoca as observaciones_avoca,

        case
        when remipro.no_proceso_proc is not null then remipro.no_proceso_proc
        when remiavo.no_auto_avoca is not null then 'PERSUASIVO'
        else '' end as no_proceso_text,

        remipro.id_proceso_coactivo,
        remipro.observaciones as observaciones_proc_det,
        remipro.no_proceso_proc,
        remipro.id_anhos_proc,
        remipro.fecha_proc

        from(

            select DISTINCT
            tab0.id_remision_titulo as id_remision_titulo, tab0.numero_remision as numero_remision, tab0.anho_remision as anho_remision,
            tab0.numero_correpondencia as numero_correpondencia, tab0.fecha_remision as fecha_remision,
            tab0.id_par as id_par, tab0.no_folios as no_folios, tab0.estado as estado, tab0.fecha_log as fecha_log,
            tab0.usuario_log as usuario_log,
            tab0.id_clasif_cartera,tab0.clasif_cartera,
            tab0.numero_remision||' - '||tab0.anho_remision as completo_remision,
            tab0.descripcion_par,
            tab0.cod_titulo_det_agrup as cod_titulo_det_agrup,
            tab0.observaciones_det_agrup,
            replace(tab0.mineral_det_agrup,',',chr(10)) as mineral_det_agrup,
            replace(tab0.fecha_titobs,' --- ',chr(10)) as fecha_titobs,
            replace(tab0.observaciones_titobs,' --- ',chr(10)) as observaciones_titobs,

            tab0.aprobado_rep, tab0.aprobado_deneg,
            tab0.id_abogado, tab0.num_doc, tab0.razon_soc, tab0.no_resolucion,
            tab0.date_expedicion,
            tab0.date_ejecutoria,
            tab0.date_exigibilidad,
            tab0.date_fin_exigibilidad,
            tab0.no_resolucion_det, tab0.date_expedicion_det,

            replace(tab0.no_resolucion_text,' - ',chr(10)) as no_resolucion_text,
            replace(tab0.date_expedicion_text,' - ',chr(10)) as date_expedicion_text,
            replace(tab0.date_ejecutoria,',',chr(10)) as date_ejecutoria_text,
            replace(tab0.date_exigibilidad,',',chr(10)) as date_exigibilidad_text,
            replace(tab0.date_fin_exigibilidad,',',chr(10)) as date_fin_exigibilidad_text,

            tab0.no_resolucion_text_completa, tab0.valor_capital,
            tab0.valor_interes, tab0.valor_abono, tab0.saldo, tab0.valor_abono_calc,
            tab0.valor_acuerdo, tab0.valor_embargo,

            replace(titr.nitocc,',',chr(10)) as nitocc,
            replace(titr.nombre_razon,',',chr(10)) as nombre_razon,
            titr.email,
            titr.telefono,
            titr.direccion,

            nvl(remcon.valor_tipo_canon,0) as valor_tipo_canon,
            nvl(remcon.valor_tipo_regal,0) as valor_tipo_regal,
            nvl(remcon.valor_tipo_visita,0) as valor_tipo_visita,
            nvl(remcon.valor_tipo_multa,0) as valor_tipo_multa,
            nvl(remcon.valor_tipo_interes,0) as valor_tipo_interes,
            nvl(remcon.valor_tipo_otros,0) as valor_tipo_otros,
            nvl(remcon.valor_total,0) as valor_total

            from(

                SELECT
                tab0.id_remision_titulo as id_remision_titulo, tab0.numero_remision as numero_remision, tab0.anho_remision as anho_remision,
                tab0.numero_correpondencia as numero_correpondencia, tab0.fecha_remision as fecha_remision,
                tab0.id_par as id_par, tab0.no_folios as no_folios, tab0.estado as estado, tab0.fecha_log as fecha_log,
                tab0.usuario_log as usuario_log,
                tab0.id_clasif_cartera,cla.descripcion as clasif_cartera,
                tab0.numero_remision||' - '||tab0.anho_remision as completo_remision,
                tab1.descripcion as descripcion_par, tab2.cod_titulo_det_agrup as cod_titulo_det_agrup, tab2.observaciones_det_agrup as observaciones_det_agrup,
                tab2.mineral_det_agrup as mineral_det_agrup,
                tab2.fecha_titobs,
                tab2.observaciones_titobs,

                tab3.aprobado as aprobado_rep, tab4.aprobado as aprobado_deneg,
                tab5.id_abogado as id_abogado, tab5.num_doc as num_doc, tab5.razon_soc as razon_soc, tab7.no_resolucion as no_resolucion,

                tab7.date_expedicion as date_expedicion,
                tab7.date_ejecutoria as date_ejecutoria,
                tab7.date_exigibilidad as date_exigibilidad,
                tab7.date_fin_exigibilidad as date_fin_exigibilidad,
                tab7.no_resolucion_det as no_resolucion_det, tab7.date_expedicion_det as date_expedicion_det,
                tab7.no_resolucion_text as no_resolucion_text,
                tab7.date_expedicion_text as date_expedicion_text,
                tab7.no_resolucion_text_completa as no_resolucion_text_completa, tab7.valor_capital as valor_capital,
                tab7.valor_interes as valor_interes, tab7.valor_abono as valor_abono, tab7.saldo as saldo, tab7.valor_abono_calc as valor_abono_calc,
                tab7.valor_acuerdo as valor_acuerdo, tab7.valor_embargo as valor_embargo,

                tab8.cod_titulo

                FROM CBR_REMISION_TITULO tab0

                JOIN CBR_PAR tab1 ON tab0.id_par = tab1.id_par
                left join cbr_clasif_cartera cla on cla.id_clasif_cartera = tab0.id_clasif_cartera
                LEFT JOIN CBR_REMISION_TIT_AGRUP_V tab2 ON tab0.id_remision_titulo = tab2.id_remision_titulo
                LEFT JOIN CBR_APRUEBA_REPARTO_ULT_V tab3 ON tab0.id_remision_titulo = tab3.id_remision_titulo
                LEFT JOIN CBR_APROB_DENEG_ULT_V tab4 ON tab0.id_remision_titulo = tab4.id_remision_titulo
                LEFT JOIN CBR_ABOGADO_ULT_V tab5 ON tab0.id_remision_titulo = tab5.id_remision_titulo
                LEFT JOIN CBR_RESOL_TIT_REMIS_V tab7 ON tab0.id_remision_titulo = tab7.id_remision_titulo
                LEFT JOIN CBR_REMISION_TITULO_DET_V tab8 ON tab0.id_remision_titulo = tab8.id_remision_titulo

            )tab0

            left join CBR_REMIS_TITULAR_AGRUP_V titr
            on titr.id_remision_titulo = tab0.id_remision_titulo

            left join CBR_REMIS_REGISTRO_CONCEP_V remcon
            on remcon.id_remision_titulo = tab0.id_remision_titulo

            where
            1 = 1
            $whereCodTitulo

        )tab0

        left join CBR_REMIS_AVOCA_AGRUP_V remiavo
        on remiavo.id_remision_titulo = tab0.id_remision_titulo

        left join CBR_REMIS_PROCESO_AGRUP_V remipro
        on remipro.id_remision_titulo = tab0.id_remision_titulo

        where
        tab0.fecha_remision between to_date('$fecha_ini','YYYY-MM-DD') AND to_date('$fecha_fin','YYYY-MM-DD')
        $wherePar
        $whereNumeroRemision
        $whereNumeroCorrepondencia
        $whereAbogado
    )tab0

    --Solo registros con avoca y sin proceso
    where
    nvl(tab0.id_proceso_coactivo,0) = '0'
    and nvl(tab0.id_avoca_conoc,0) != '0'

    GROUP BY
    tab0.id_avoca_conoc,
    tab0.observaciones_avoca_det,
    tab0.no_auto_avoca,
    tab0.fecha_avoca,
    tab0.observaciones_avoca

    union

    select

    3 as tag_union,
    min( tab0.anho_remision || lpad( tab0.numero_remision ,4,0) ) as orden,

    LISTAGG(tab0.id_remision_titulo, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as id_remision_titulo,
    LISTAGG(tab0.numero_remision, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as numero_remision,
    LISTAGG(tab0.anho_remision, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as anho_remision,
    LISTAGG(tab0.numero_correpondencia, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as numero_correpondencia,
    LISTAGG(to_char(tab0.fecha_remision,'dd/mm/yyyy'), ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as fecha_remision,
    LISTAGG(tab0.id_par, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as id_par,
    sum(tab0.no_folios) as no_folios,
    min(tab0.estado) as estado,
    null as fecha_log,
    null as usuario_log,
    to_char(wm_concat(distinct tab0.id_clasif_cartera)) as id_clasif_cartera,
    to_char(wm_concat(distinct tab0.clasif_cartera)) as clasif_cartera,
    LISTAGG(tab0.completo_remision, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as completo_remision,
    LISTAGG(tab0.descripcion_par, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as descripcion_par,

    ( to_char(wm_concat(distinct tab0.cod_titulo_det_agrup)) ) as cod_titulo_det_agrup,
    null as observaciones_det_agrup,
    REPLACE(( to_char(wm_concat(distinct tab0.mineral_det_agrup)) ),',',chr(10)|| '---' ||chr(10)) as mineral_det_agrup,
    REPLACE(( to_char(wm_concat(distinct tab0.fecha_titobs)) ),',',chr(10)|| '---' ||chr(10)) as fecha_titobs,
    ( to_char(wm_concat(distinct tab0.observaciones_titobs)) ) as observaciones_titobs,

    min(tab0.aprobado_rep) aprobado_rep,
    min(tab0.aprobado_deneg) aprobado_deneg,

    REPLACE(( to_char(wm_concat(distinct tab0.id_abogado)) ),',',chr(10)|| '---' ||chr(10)) as id_abogado,
    REPLACE(( to_char(wm_concat(distinct tab0.num_doc)) ),',',chr(10)|| '---' ||chr(10)) as num_doc,
    REPLACE(( to_char(wm_concat(distinct tab0.razon_soc)) ),',',chr(10)|| '---' ||chr(10)) as razon_soc,

    LISTAGG(tab0.no_resolucion, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as no_resolucion,
    LISTAGG(tab0.date_expedicion, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as date_expedicion,
    LISTAGG(tab0.date_ejecutoria, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as date_ejecutoria,
    LISTAGG(tab0.date_exigibilidad, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as date_exigibilidad,
    LISTAGG(tab0.date_fin_exigibilidad, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as date_fin_exigibilidad,

    LISTAGG(tab0.no_resolucion_det, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as no_resolucion_det,
    LISTAGG(tab0.date_expedicion_det, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as date_expedicion_det,

    LISTAGG(tab0.no_resolucion_text, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as no_resolucion_text,
    LISTAGG(tab0.date_expedicion_text, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as date_expedicion_text,
    LISTAGG(tab0.date_ejecutoria_text, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as date_ejecutoria_text,
    LISTAGG(tab0.date_exigibilidad_text, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as date_exigibilidad_text,
    LISTAGG(tab0.date_fin_exigibilidad_text, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as date_fin_exigibilidad_text,

    LISTAGG(tab0.no_resolucion_text_completa, ',') WITHIN GROUP (ORDER BY tab0.anho_remision, tab0.numero_remision) as no_resolucion_text_completa,

    sum(tab0.valor_capital) as valor_capital,
    sum(tab0.valor_interes) as valor_interes,
    sum(tab0.valor_abono) as valor_abono,
    sum(tab0.saldo) as saldo,
    sum(tab0.valor_abono_calc) as valor_abono_calc,
    sum(tab0.valor_acuerdo) as valor_acuerdo,
    sum(tab0.valor_embargo) as valor_embargo,

    REPLACE(( to_char(wm_concat(distinct tab0.nitocc)) ),',',chr(10)|| '---' ||chr(10)) as nitocc,
    REPLACE(( to_char(wm_concat(distinct tab0.nombre_razon)) ),',',chr(10)|| '---' ||chr(10)) as nombre_razon,
    REPLACE(( to_char(wm_concat(distinct tab0.email)) ),',',chr(10)|| '---' ||chr(10)) as email,
    REPLACE(( to_char(wm_concat(distinct tab0.telefono)) ),',',chr(10)|| '---' ||chr(10)) as telefono,
    REPLACE(( to_char(wm_concat(distinct tab0.direccion)) ),',',chr(10)|| '---' ||chr(10)) as direccion,

    sum(tab0.valor_tipo_canon) as valor_tipo_canon,
    sum(tab0.valor_tipo_regal) as valor_tipo_regal,
    sum(tab0.valor_tipo_visita) as valor_tipo_visita,
    sum(tab0.valor_tipo_multa) as valor_tipo_multa,
    sum(tab0.valor_tipo_interes) as valor_tipo_interes,
    sum(tab0.valor_tipo_otros) as valor_tipo_otros,
    sum(tab0.valor_total) as valor_total,


    ( to_char(wm_concat(distinct tab0.id_avoca_conoc)) ) as id_avoca_conoc,
    REPLACE(( to_char(wm_concat(distinct tab0.observaciones_avoca_det)) ),',',chr(10)|| '---' ||chr(10)) as observaciones_avoca_det,
    REPLACE(( to_char(wm_concat(distinct tab0.no_auto_avoca)) ),',',chr(10)|| '---' ||chr(10)) as no_auto_avoca,
    REPLACE(( to_char(wm_concat(distinct tab0.fecha_avoca)) ),',',chr(10)|| '---' ||chr(10)) as fecha_avoca,
    REPLACE(( to_char(wm_concat(distinct tab0.observaciones_avoca)) ),',',chr(10)|| '---' ||chr(10)) as observaciones_avoca,

    REPLACE(( to_char(wm_concat(distinct tab0.no_proceso_text)) ),',',chr(10)|| '---' ||chr(10)) as no_proceso_text,

    tab0.id_proceso_coactivo,
    tab0.observaciones_proc_det,
    tab0.no_proceso_proc,
    tab0.id_anhos_proc,
    tab0.fecha_proc

    from(

        select
        tab0.*,

        remiavo.id_avoca_conoc,
        remiavo.observaciones as observaciones_avoca_det,
        remiavo.no_auto_avoca,
        remiavo.fecha_avoca,
        remiavo.observaciones_avoca as observaciones_avoca,

        case
        when remipro.no_proceso_proc is not null then remipro.no_proceso_proc
        when remiavo.no_auto_avoca is not null then 'PERSUASIVO'
        else '' end as no_proceso_text,

        remipro.id_proceso_coactivo,
        remipro.observaciones as observaciones_proc_det,
        remipro.no_proceso_proc,
        remipro.id_anhos_proc,
        remipro.fecha_proc

        from(

            select DISTINCT
            tab0.id_remision_titulo as id_remision_titulo, tab0.numero_remision as numero_remision, tab0.anho_remision as anho_remision,
            tab0.numero_correpondencia as numero_correpondencia, tab0.fecha_remision as fecha_remision,
            tab0.id_par as id_par, tab0.no_folios as no_folios, tab0.estado as estado, tab0.fecha_log as fecha_log,
            tab0.usuario_log as usuario_log,
            tab0.id_clasif_cartera,tab0.clasif_cartera,
            tab0.numero_remision||' - '||tab0.anho_remision as completo_remision,
            tab0.descripcion_par,
            tab0.cod_titulo_det_agrup as cod_titulo_det_agrup,
            tab0.observaciones_det_agrup,
            replace(tab0.mineral_det_agrup,',',chr(10)) as mineral_det_agrup,
            replace(tab0.fecha_titobs,' --- ',chr(10)) as fecha_titobs,
            replace(tab0.observaciones_titobs,' --- ',chr(10)) as observaciones_titobs,

            tab0.aprobado_rep, tab0.aprobado_deneg,
            tab0.id_abogado, tab0.num_doc, tab0.razon_soc, tab0.no_resolucion,
            tab0.date_expedicion,
            tab0.date_ejecutoria,
            tab0.date_exigibilidad,
            tab0.date_fin_exigibilidad,
            tab0.no_resolucion_det, tab0.date_expedicion_det,

            replace(tab0.no_resolucion_text,' - ',chr(10)) as no_resolucion_text,
            replace(tab0.date_expedicion_text,' - ',chr(10)) as date_expedicion_text,
            replace(tab0.date_ejecutoria,',',chr(10)) as date_ejecutoria_text,
            replace(tab0.date_exigibilidad,',',chr(10)) as date_exigibilidad_text,
            replace(tab0.date_fin_exigibilidad,',',chr(10)) as date_fin_exigibilidad_text,

            tab0.no_resolucion_text_completa, tab0.valor_capital,
            tab0.valor_interes, tab0.valor_abono, tab0.saldo, tab0.valor_abono_calc,
            tab0.valor_acuerdo, tab0.valor_embargo,

            replace(titr.nitocc,',',chr(10)) as nitocc,
            replace(titr.nombre_razon,',',chr(10)) as nombre_razon,
            titr.email,
            titr.telefono,
            titr.direccion,

            nvl(remcon.valor_tipo_canon,0) as valor_tipo_canon,
            nvl(remcon.valor_tipo_regal,0) as valor_tipo_regal,
            nvl(remcon.valor_tipo_visita,0) as valor_tipo_visita,
            nvl(remcon.valor_tipo_multa,0) as valor_tipo_multa,
            nvl(remcon.valor_tipo_interes,0) as valor_tipo_interes,
            nvl(remcon.valor_tipo_otros,0) as valor_tipo_otros,
            nvl(remcon.valor_total,0) as valor_total

            from(

                SELECT
                tab0.id_remision_titulo as id_remision_titulo, tab0.numero_remision as numero_remision, tab0.anho_remision as anho_remision,
                tab0.numero_correpondencia as numero_correpondencia, tab0.fecha_remision as fecha_remision,
                tab0.id_par as id_par, tab0.no_folios as no_folios, tab0.estado as estado, tab0.fecha_log as fecha_log,
                tab0.usuario_log as usuario_log,
                tab0.id_clasif_cartera,cla.descripcion as clasif_cartera,
                tab0.numero_remision||' - '||tab0.anho_remision as completo_remision,
                tab1.descripcion as descripcion_par, tab2.cod_titulo_det_agrup as cod_titulo_det_agrup, tab2.observaciones_det_agrup as observaciones_det_agrup,
                tab2.mineral_det_agrup as mineral_det_agrup,
                tab2.fecha_titobs,
                tab2.observaciones_titobs,

                tab3.aprobado as aprobado_rep, tab4.aprobado as aprobado_deneg,
                tab5.id_abogado as id_abogado, tab5.num_doc as num_doc, tab5.razon_soc as razon_soc, tab7.no_resolucion as no_resolucion,

                tab7.date_expedicion as date_expedicion,
                tab7.date_ejecutoria as date_ejecutoria,
                tab7.date_exigibilidad as date_exigibilidad,
                tab7.date_fin_exigibilidad as date_fin_exigibilidad,
                tab7.no_resolucion_det as no_resolucion_det, tab7.date_expedicion_det as date_expedicion_det,
                tab7.no_resolucion_text as no_resolucion_text,
                tab7.date_expedicion_text as date_expedicion_text,
                tab7.no_resolucion_text_completa as no_resolucion_text_completa, tab7.valor_capital as valor_capital,
                tab7.valor_interes as valor_interes, tab7.valor_abono as valor_abono, tab7.saldo as saldo, tab7.valor_abono_calc as valor_abono_calc,
                tab7.valor_acuerdo as valor_acuerdo, tab7.valor_embargo as valor_embargo,

                tab8.cod_titulo

                FROM CBR_REMISION_TITULO tab0

                JOIN CBR_PAR tab1 ON tab0.id_par = tab1.id_par
                left join cbr_clasif_cartera cla on cla.id_clasif_cartera = tab0.id_clasif_cartera
                LEFT JOIN CBR_REMISION_TIT_AGRUP_V tab2 ON tab0.id_remision_titulo = tab2.id_remision_titulo
                LEFT JOIN CBR_APRUEBA_REPARTO_ULT_V tab3 ON tab0.id_remision_titulo = tab3.id_remision_titulo
                LEFT JOIN CBR_APROB_DENEG_ULT_V tab4 ON tab0.id_remision_titulo = tab4.id_remision_titulo
                LEFT JOIN CBR_ABOGADO_ULT_V tab5 ON tab0.id_remision_titulo = tab5.id_remision_titulo
                LEFT JOIN CBR_RESOL_TIT_REMIS_V tab7 ON tab0.id_remision_titulo = tab7.id_remision_titulo
                LEFT JOIN CBR_REMISION_TITULO_DET_V tab8 ON tab0.id_remision_titulo = tab8.id_remision_titulo

            )tab0

            left join CBR_REMIS_TITULAR_AGRUP_V titr
            on titr.id_remision_titulo = tab0.id_remision_titulo

            left join CBR_REMIS_REGISTRO_CONCEP_V remcon
            on remcon.id_remision_titulo = tab0.id_remision_titulo

            where
            1 = 1
            $whereCodTitulo

        )tab0

        left join CBR_REMIS_AVOCA_AGRUP_V remiavo
        on remiavo.id_remision_titulo = tab0.id_remision_titulo

        left join CBR_REMIS_PROCESO_AGRUP_V remipro
        on remipro.id_remision_titulo = tab0.id_remision_titulo

        where
        tab0.fecha_remision between to_date('$fecha_ini','YYYY-MM-DD') AND to_date('$fecha_fin','YYYY-MM-DD')
        $wherePar
        $whereNumeroRemision
        $whereNumeroCorrepondencia
        $whereAbogado

    )tab0

    --Solo registros con proceso
    where
    nvl(tab0.id_proceso_coactivo,0) != '0'

    GROUP BY
    tab0.id_proceso_coactivo,
    tab0.observaciones_proc_det,
    tab0.no_proceso_proc,
    tab0.id_anhos_proc,
    tab0.fecha_proc


)tab0

where
1 = 1
$whereNoProces
EOD;

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

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

$consulta
                    
)
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 (

$consulta
                        
$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("[inf_mc_liquidacion] 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());
        }
    }

}
