<?php

/**
 * control_periodo actions.
 *
 * @package    contabilidad
 * @subpackage control_periodo
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class control_periodoActions extends sfAPIActions {
    /*
     * ------------VARIABLES PARA SERVICIOS CRUD
     */

    protected $id_name = 'id_control_periodo'; //identificador de la tabla
    protected $id_names = array('id_control_periodo', 'id_vigencia', 'id_periodo_contable', 'id_cen_op'); //llave primaria
    protected $field_names = array('activo'); //campos de la tabla, sin la llave primaria
    protected $table_name = 'CN_CONTROL_PERIODO'; //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_control_periodo'; //identificador unico de la tabla

    /**
     * Uso solo para este caso
     *
     * Lista la ultima vigencia periodo activa en el control periodo
     *
     * @param sfWebRequest $request
     */

    public function executeList(sfWebRequest $request) {

        /*
         * Obtiene la vigencias/periodo que se encuentra activa el ultimo valor
         */
        $sql = 'SELECT *
                FROM
                (

                SELECT
                ID_CIA,
                ID_VIGENCIA,
                ID_PERIODO_CONTABLE
                FROM CN_CONTROL_PERIODO
                WHERE ACTIVO LIKE 1
                ORDER BY
                ID_CIA,
                ID_VIGENCIA,
                ID_PERIODO_CONTABLE,     
                ID_CEN_OP

                )
                WHERE ROWNUM < 2
                ORDER BY ROWNUM  DESC';

        //Ejecuta sql
        $this->list_data = CN_TABLE::executeSQL($sql);
    }

    /**
     * servicio para obtener el ultima vigencia periodo del control cad
     *
     * @param sfWebRequest $request
     */
    public function executeDato(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 {

            /*
             * variables para filtro
             */
            $campos_oblig = false;
            if (isset($request['id_cia']) && isset($request['id_vigencia']) && isset($request['id_cen_op']) && isset($request['id_periodo_contable'])) {

                //variables obligatorias
                $id_cia = $request['id_cia'];
                $vigencia = $request['id_vigencia'];
                $cenOp = $request['id_cen_op'];
                $periodo = $request['id_periodo_contable'];

                //variable validacion filtross
                $campos_oblig = true;
            }

            $records = array();

            if ($campos_oblig) {

                //sentencia sql
                $sql = <<<EOD
select
*
from cn_control_periodo

where id_cia = $id_cia
and id_vigencia = $vigencia
and id_cen_op = $cenOp
and id_periodo_contable = $periodo

order by
id_periodo_contable 

EOD;

                //ejecuta y obtiene el resultado del sql
                $records = CN_TABLE::executeSQL($sql);
            }

            //valida si hay resultado
            if (count($records) > 0) {
                $res = $records[0]['activo'];
                $resultado = $res == 0 ? "false" : "true";

                $this->dato = $resultado;
            } else {

                $this->dato = "false";
            }


            //guardar dato en el log
            $this->logMessage('Dato de la consulta = ' . $this->dato);
        } catch (Exception $e) {

            $this->dato = "false";
            $this->logMessage('ERROR!!!: Dato de la consulta = ' . $this->dato);
        }
    }

}
