<?php

/**
 * mae_ter actions.
 *
 * @package    contab2
 * @subpackage mae_ter
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class mae_terActions extends sfQuery {
    /*
     * ------------VARIABLES PARA SERVICIOS DE CONSULTA - LIST
     */

    protected $table_names = array(
        'CN_MAE_TER'
    ); //tablas para construir el sql, por medio de joins
    protected $table_join_ids = array(); //si posee tablas para joins, identificar la relacion de los campos con las tablas
    protected $fields = array(
        'CN_MAE_TER' =>
        array(
            'id_mae_ter' => 'id_mae_ter',
            'nitocc' => 'nitocc',
            'nombre' => 'nombre',
            'email' => 'email',
            'reciproca' => 'reciproca',
            'activo' => 'activo'
        )
    ); //por cada tabla especificar los campos del select
    protected $table_field_conditions = array(
        'CN_MAE_TER' => array(
            'id_mae_ter,a' => array('!=' => array(-1)),
            'id_mae_ter,b' => array('=' => array('id_mae_ter')),
            'nitocc' => array('LIKE' => array('nitocc', '%')),
            'reciproca' => array('=' => array('reciproca')),
            'activo' => array('=' => array('activo')),
            'rownum,start' => array('>' => array('_startRow')),
            'rownum,end' => array('<=' => array('_endRow'))
        )
    ); //por cada tabla se dan los campos, opcion de filtro y variable que entra para los posibles filtros
    protected $table_field_or_conditions = array(
        'CN_MAE_TER' =>
        array(
            'nitocc' => array('LIKE' => array('input', '%')),
            'nombre' => array('LIKEALLPLUS' => array('input', '%'))
        )
    ); // filtros de condicion or
    protected $fields_orderBy = array(
        'nombre'
    ); //campos para el ordenamiento de la consulta
//    protected $table_field_obligatory = array('id_debito'); //campos obligatorios de filtro - estan en el request

    /*
     * Variables manejo de log
     */
    //true - consulta de administracion
    protected $is_admin = true;
    //true - la tabla principal de busqueda no es una vista
    protected $is_filtro = true;

    /*
     * ------------VARIABLES PARA SERVICIOS CRUD
     */
    protected $id_name = 'id_mae_ter'; //identificador de la tabla
    protected $id_names = array('id_mae_ter', 'id_cia'); //llave primaria
    protected $field_names = array('nitocc', 'nombre', 'email', 'reciproca', 'activo'); //campos de la tabla, sin la llave primaria
    protected $table_name = 'CN_MAE_TER'; //tabla en la cual se aplican los cambios
    protected $has_activo = true; //si posee campo en la tabla de nombre activo
    protected $has_vigencia = false; //si posee vigencia
    protected $has_cen_op = false; //si posee centro de operacion
    protected $has_id_cia = true; //si posee compañia
    /*
     * Manejo de registro log
     */
    protected $id_unico = 'id_mae_ter'; //identificador unico de la tabla

    /**
     * Metodo list para consultar los maestros terceros en orden y para filtro de grid live
     *
     * @param sfWebRequest $request
     */

    public function executeList2(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'];

        $sql = 'select * from CN_MAE_TER
                order by
                NOMBRE,
                NITOCC ';

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

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

        $sql = '
                SELECT *
                          FROM ( SELECT row_.*, ROWNUM rownum_
                          FROM (


                            select * from CN_MAE_TER
                                order by
                                NOMBRE,
                                NITOCC

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

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

}
