<?php

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

    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'];
        $vigencia = $request['id_vigencia'];
        $periodo = $request['id_periodo_contable'];
        $cen_op = $request['id_cen_op'];
//        $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 = ' ';
        }



//        $vig_ini = $request['vig_ini'];
//        $vig_fin = $request['vig_fin'];
//        $per_ini = $request['per_ini'];
//        $per_fin = $request['per_fin'];


        $sql = 'select * from (
                    select distinct * from (
                        select *
                        from CN_LIBRO_AUX
                        where
                        ID_VIGENCIA = ' . $vigencia . '
                        and ID_PERIODO_CONTABLE = ' . $periodo . '
                        and ID_CEN_OP = ' . $cen_op . ' and ID_cia = ' . $cia . '
                        ' . $whereClase . ' ' . $whereGrupo . ' ' . $whereCuenta . ' ' . $whereCatalogo . '
                        ' . $whereAuxiliar . ' ' . $whereTercero . '
                    )
                ) ';
        $total_record_count = CN_TABLE::executeSQL($sql);

        if ($rowEnd > $total_record_count) {
            $rowEnd = $total_record_count;
        }


        /*
         * 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 * from (
                            select * from CN_LIBRO_AUX
                            where
                            ID_VIGENCIA = ' . $vigencia . '
                            and ID_PERIODO_CONTABLE = ' . $periodo . '
                            and ID_CEN_OP = ' . $cen_op . ' and ID_cia = ' . $cia . '
                            ' . $whereClase . ' ' . $whereGrupo . ' ' . $whereCuenta . ' ' . $whereCatalogo . '
                            ' . $whereAuxiliar . ' ' . $whereTercero . '
                        )
                    )
                    lib
                    ORDER BY
                    lib.CUENTA ASC,
                    NVL(lib.cod_aux, \'000\') ASC,
                     NVL(lib.SUBAUXILIAR,\'000\') ASC,
                      NVL(lib.nitocc,\'00000000000000000000000000000000\') ASC,
                        NVL(lib.ID_MOV_CONT,\'00000000000000000000000000000000\') 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);
    }

}

