<?php

/**
 * This is the model class for table "retiro.estatus_retiro_parcial".
 *
 * The followings are the available columns in table 'retiro.estatus_retiro_parcial':
 * @property string $id_estatus_retiro
 * @property string $id_retiro_parcial
 * @property string $fecha_registro
 * @property boolean $actual
 * @property string $id_usuario
 * @property string $observacion
 */
class EstatusRetiroParcial extends CActiveRecord
{
    public $idBanco, $fecha_pagado, $referencia, $datosUsuario;
	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'retiro.estatus_retiro_parcial';
	}

	/**
	 * @return array validation rules for model attributes.
	 */
	public function rules()
	{
		// NOTE: you should only define rules for those attributes that
		// will receive user inputs.
		return array(
			array('id_estatus_retiro, id_retiro_parcial', 'required'),
            array('idBanco,referencia', 'required','on'=>'pagarRetiro'),
			array('id_estatus_retiro','denegacionSolicitud', 'on'=>'denegacionSolicitud'),
			array('actual, id_usuario, fecha_registro, observacion, idBanco, fecha_pagado, referencia', 'safe'),
			//Rules para denegar retiros
            array('observacion', 'required', 'message'=>'Debe llenar el campo {attribute}.', 'on'=>'denegar'),
			array('id_estatus_retiro, id_retiro_parcial, fecha_registro, actual, id_usuario, observacion', 'safe', 'on'=>'search'),
		);
	}

	/**
	 * @return array relational rules.
	 */
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
            'idEstatusRetiro' => array(self::BELONGS_TO, 'EstatusRetiro', 'id_estatus_retiro'),
            'idRetiroParcial' => array(self::BELONGS_TO, 'RetiroParcial', 'id_retiro_parcial'),
            'idUsuario' => array(self::BELONGS_TO, 'CrugeUserI', 'id_usuario'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'id_estatus_retiro' => '<b>Decisión a tomar </b>',
			'id_retiro_parcial' => 'Retiro Parcial',
			'fecha_registro' => 'Fecha Referencia',
			'actual' => 'Actual',
			'id_usuario' => 'Id Usuario',
			'observacion' => '<b>Observación</b>',
			'idBanco' => '<b>Banco</b>',
			'fecha_pagado' => '<b>Fecha de pago</b>',
			'referencia' => '<b>Referencia de Banco</b>',
			'datosUsuario' => '<b>Datos del usuario</b>',
			'idBanco' => '<b>Banco</b>',
		);
	}

        public function denegacionSolicitud(){
            if(!$this->hasErrors('id_estatus_retiro')){
                if($this->id_estatus_retiro ==3){
                    if($this->observacion =='')
                        $this->addError('observacion','observacion no puede ser nulo ');
                }
            }
        }



        public function validacionTiempoRetiroParcial($dias = false){
            $tiempo = 0;
            $fechainicial = new DateTime($this->fecha_registro);
            $fechafinal = new DateTime(date('Y-m-d'));

            $diferencia = $fechainicial->diff($fechafinal);
            if($dias == TRUE)
            	$tiempo = $diferencia->d;
            else
            	$tiempo = ( $diferencia->y * 12 ) + $diferencia->m;

            return $tiempo;
        }

	/**
	 * Retrieves a list of models based on the current search/filter conditions.
	 *
	 * Typical usecase:
	 * - Initialize the model fields with values from filter form.
	 * - Execute this method to get CActiveDataProvider instance which will filter
	 * models according to data in model fields.
	 * - Pass data provider to CGridView, CListView or any similar widget.
	 *
	 * @return CActiveDataProvider the data provider that can return the models
	 * based on the search/filter conditions.
	 */
	public function search()
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id_estatus_retiro',$this->id_estatus_retiro,true);
		$criteria->compare('id_retiro_parcial',$this->id_retiro_parcial,true);
		$criteria->compare('fecha_registro',$this->fecha_registro,true);
		$criteria->compare('actual',$this->actual);
		$criteria->compare('id_usuario',$this->id_usuario,true);
		$criteria->compare('observacion',$this->observacion,true);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
    }

	public function searchRetiroParcial($id)
	{
		$criteria=new CDbCriteria;

		$criteria->compare('id_retiro_parcial',$id);
		$criteria->compare('fecha_registro',$this->fecha_registro,true);
		$criteria->compare('actual',$this->actual);
		$criteria->compare('id_usuario',$this->id_usuario,true);
		$criteria->compare('observacion',$this->observacion,true);
        $criteria->order = 'fecha_registro DESC, id_estatus_retiro DESC';

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}

        public function afterFind(){
            if($this->id_usuario!=''){
                $model = CrugeUserI::model()->findByPk($this->id_usuario);
                if($model){
                    $this->datosUsuario= $model->nombres.' '.$model->apellidos;
                }
            }


            return parent::afterFind();
        }

        public function beforeSave() {
            $this->id_usuario = Yii::app()->user->id;
            if($this->fecha_registro=='')
                $this->fecha_registro= date('d-m-Y H:m:s');
            return parent::beforeSave();
        }
	/**
	 * Returns the static model of the specified AR class.
	 * Please note that you should have this exact method in all your CActiveRecord descendants!
	 * @param string $className active record class name.
	 * @return EstatusRetiroParcial the static model class
	 */
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

/*public function validarfecha(){
    Yii::import('application.modules.configuracion.models.*',true);
        if(!$this->hasErrors('fecha_registro')){
            if (ConfContable::config('CONFCONTABLE')=='SI'){
               Yii::import('application.modules.contable.models.*',true);
               $modeltrimestre= CierreTrimestral::model()->findBySql('select * from contable.cierre_trimestral where id = (select min(id) as id from contable.cierre_trimestral where estatus=false and id_periodo=(
               select id from contable.ejercicios where estatus=1))');
               $modelmes= CierreMensual::model()->findBySql('select *,
               (select mes from contable.cierre_mensual where id= (select max(id) as id from contable.cierre_mensual where estatus=true)) as mes_anterior
               from contable.cierre_mensual where id= (select min(id) as id from contable.cierre_mensual where estatus=false and id_periodo=(
               select id from contable.ejercicios where estatus=1) )');
//               echo "<pre>";               print_r($modelmes); exit;
               if ($modeltrimestre){
               $fecha=date('Y-m-d',  strtotime($this->fecha_registro));
               $fecha_desde= date('d-m-Y',strtotime($modeltrimestre->fecha_desde));
               $fecha_hasta= date('d-m-Y',strtotime($modeltrimestre->fecha_hasta));
               $fecha_desdemes= date('d-m-Y',strtotime($modelmes->fecha_desde));
               $fecha_hastames= date('d-m-Y',strtotime($modelmes->fecha_hasta));
               $anio=date('Y',  strtotime($this->fecha_registro));
               $anio_hasta=date('Y',  strtotime($modelmes->fecha_hasta));
               if ($modelmes->mes=='ENERO'){
                   $modelmes->mes_anterior=', ya que las fechas de años anteriores no pertenecen a este periodo contable.';
               }else {
                   $modelmes->mes_anterior=', ya que el mes de '.$modelmes->mes_anterior.' está cerrado.';
               }
                   if ($anio < $anio_hasta){
                        $this->addError('fecha_registro','Usted no puede ingresar comprobantes en un año distinto al periodo contable que está abierto.');
                   }
                   else if ($fecha < $modelmes->fecha_desde){
                        $this->addError('fecha_registro','La fecha debe ser mayor a '.$fecha_desdemes.' '.$modelmes->mes_anterior.'');

                   }
                   else  if ($anio > $anio_hasta){    
                        $this->addError('fecha_registro','Usted no puede ingresar comprobantes en un año distinto al periodo contable que está abierto.');
                   }
               }
               else {
                    $this->addError('fecha_registro','En base de datos no estan cargados los meses para este periodo contable.');

               }

            }

        }

}*/

}
