<?php

/**
 * qcat_mov_consol actions.
 *
 * @package    contab2
 * @subpackage qcat_mov_consol
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class qcat_mov_consolActions extends sfQuery {

    protected $table_names = array(
        'CN_MOV_CONT_DETALLADO'
    );
    protected $table_join_ids = array(
    );
    protected $fields = array(
        'CN_MOV_CONT_DETALLADO' => array(
            'boton' => 'boton',
            'cuenta' => 'cuenta',
            'auxiliar' => 'auxiliar',
            'tercero' => 'tercero',
            'nombre_cuenta' => 'nombre_cuenta',
            'id_mae_ter' => 'id_mae_ter',
            'id_auxiliar' => 'id_auxiliar',
            'id_catalogo' => 'id_catalogo',
            'id_cuenta_mayor' => 'id_cuenta_mayor',
            'id_grupo_cuenta' => 'id_grupo_cuenta',
            'id_clase_cuenta' => 'id_clase_cuenta'
        )
    );
    protected $table_field_conditions = array(
        'CN_MOV_CONT_DETALLADO' => array(
            'id_cia' => array('=' => array('id_cia')),
            'id_cen_op' => array('=' => array('id_cen_op')),
            'vig_per' => array('BETWEEN' => array('vig_perIni', 'vig_perFin')),
            //'id_vigencia' => array('BETWEEN' => array('vig_ini', 'vig_fin')),
            //'id_periodo_contable' => array('BETWEEN' => array('per_ini', 'per_fin')),
            'rownum,start' => array('>' => array('_startRow')),
            'rownum,end' => array('<=' => array('_endRow'))
        )
    );
    protected $table_field_or_conditions = null;

//    protected $query_qualifier = 'DISTINCT';
//    protected $fields_orderBy = array(
//        'cuenta'
////        ,
////        'auxiliar'
//    );



    public function executeList(sfWebRequest $request) {

        //Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        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;
        }


        $cia = $request['id_cia'];
        $cen_op = $request['id_cen_op'];
        $vig_perIni = $request['vig_perIni'];
        $vig_perFin = $request['vig_perFin'];


//        $auxiliar = $request['id_auxiliar'];
//        $auxiliar = $request['id_mae_ter'];
//        $catalogo = $request['id_catalogo'];
//        $cuenta = $request['id_cuenta_mayor'];
//        $grupo = $request['id_grupo_cuenta'];
//        $clase = $request['id_clase_cuenta'];


        if (isset($request['id_clase_cuenta_ini']) && isset($request['id_clase_cuenta_fin'])) {

//            $whereClase = 'and ( id_clase_cuenta = ' . $request['id_clase_cuenta'] . ' or id_clase_cuenta is null ) ';
            $whereClase = 'and ( id_clase_cuenta between ' . $request['id_clase_cuenta_ini'] . ' and ' . $request['id_clase_cuenta_fin'] . ' or id_clase_cuenta is null ) ';
        } else {

//            $whereClase = ' ( id_clase_cuenta is null ) ';
            $whereClase = ' ';
        }


        if (isset($request['id_grupo_cuenta_ini']) && isset($request['id_grupo_cuenta_fin'])) {

            $whereGrupo = 'and ( id_grupo_cuenta between ' . $request['id_grupo_cuenta_ini'] . ' and ' . $request['id_grupo_cuenta_fin'] . ' or id_grupo_cuenta is null ) ';
        } else {

//            $whereGrupo = ' ( id_grupo_cuenta is null ) ';
            $whereGrupo = ' ';
        }

        if (isset($request['id_cuenta_mayor_ini']) && isset($request['id_cuenta_mayor_fin'])) {

            $whereCuenta = 'and  ( id_cuenta_mayor between ' . $request['id_cuenta_mayor_ini'] . ' and ' . $request['id_cuenta_mayor_fin'] . ' or id_cuenta_mayor is null ) ';
        } else {

//            $whereCuenta = ' ( id_cuenta_mayor is null ) ';
            $whereCuenta = ' ';
        }

        if (isset($request['id_catalogo_ini']) && isset($request['id_catalogo_fin'])) {

            $whereCatalogo = 'and  ( id_catalogo between ' . $request['id_catalogo_ini'] . ' and ' . $request['id_catalogo_fin'] . ' or id_catalogo is null ) ';
        } else {

//            $whereCatalogo = ' ( id_catalogo is null ) ';
            $whereCatalogo = ' ';
        }


        if (isset($request['id_auxiliar'])) {

            $whereAuxiliar = 'and  ( id_auxiliar = ' . $request['id_auxiliar'] . ' or id_auxiliar is null ) ';
        } else {

            $whereAuxiliar = ' ';
        }

        if (isset($request['id_mae_ter'])) {

            $whereTercero = 'and  ( id_mae_ter = ' . $request['id_mae_ter'] . ' or id_mae_ter is null ) ';
        } else {

            $whereTercero = ' ';
        }





        $sql = ' select *
            from
            (
            select distinct
                        BOTON,
             ID_CLASE_CUENTA,
             ID_GRUPO_CUENTA,
            ID_CUENTA_MAYOR,
            ID_CATALOGO,
            ID_AUXILIAR,
            ID_MAE_TER,
             NOMBRE_CUENTA,
            CUENTA,
            AUXILIAR,
            TERCERO,
            ID_CIA,
            ID_CEN_OP
            from
            (
            select *
            from CN_MOV_CONT_DETALLADO
            where
            vig_per between ' . $vig_perIni . ' and ' . $vig_perFin . '
            and ID_CEN_OP = ' . $cen_op . '
            and ID_cia = ' . $cia . '
            ' . $whereClase . '
            ' . $whereGrupo . '
            ' . $whereCuenta . '
            ' . $whereCatalogo . '
            ' . $whereAuxiliar . '
            ' . $whereTercero . '
            )
            ) ';
        
        $total_record_count = CN_TABLE::executeSQL($sql);

        /*
         * Obtiene las vigencias/periodo que se encuentre en la tabla de saldos
         */


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

        $sql = ' SELECT * FROM ( SELECT row_.*, ROWNUM rownum_ FROM (
            select * from (
            select distinct
                        BOTON,
             ID_CLASE_CUENTA,
             ID_GRUPO_CUENTA,
            ID_CUENTA_MAYOR,
            ID_CATALOGO,
            ID_AUXILIAR,
            ID_MAE_TER,
             NOMBRE_CUENTA,
            CUENTA,
            AUXILIAR,
            TERCERO,
            ID_CIA,
            ID_CEN_OP
            from
            (
            select *
            from CN_MOV_CONT_DETALLADO
            where
            vig_per between ' . $vig_perIni . ' and ' . $vig_perFin . '
            and ID_CEN_OP = ' . $cen_op . '
            and ID_cia = ' . $cia . '
            ' . $whereClase . '
            ' . $whereGrupo . '
            ' . $whereCuenta . '
            ' . $whereCatalogo . '
            ' . $whereAuxiliar . '
            ' . $whereTercero . '

            )
            )
            lib
            ORDER BY
            lib.ID_CIA,
            lib.ID_CEN_OP,
            lib.CUENTA ASC,
              NVL(lib.AUXILIAR,\'000\') ASC
) row_ WHERE ROWNUM <= ' . $rowEnd . '  ) where rownum_ > ' . $rowStart . ' ';


        //) row_ WHERE ROWNUM between ' . $rowStart . ' and ' . $rowEnd . ' )
        //Ejecuta sql


        $records = CN_TABLE::executeSQL($sql);

        $this->list_data = $records;
        //totales de filas y de consulta
        $this->logMessage('record_count = ' . count($records));
        $this->logMessage('total_record_count = ' . count($total_record_count));
        $this->totalRows = count($total_record_count);
        $this->startRow = $request['_startRow'];
        $this->endRow = $this->startRow + count($records);
    }

}
