<?php

class ConfAporteVoluntario extends CActiveRecord
{
    public function tableName()
    {
        return 'retenciones.conf_aporte_voluntario';
    }

    public function rules()
    {
        return array(
            array('porcentaje_comision', 'required'),
            array('aplica_capitalizacion, aplica_retiro, visible', 'boolean'),
            ['tiempo_inscripcion_adm, tiempo_inscripcion_asc, tiempo_solicitud_adm, tiempo_solicitud_asc', 'numerical', 'integerOnly'=>true],
            ['tiempo_inscripcion_adm, tiempo_inscripcion_asc, tiempo_solicitud_adm, tiempo_solicitud_asc',  'length', 'min'=>1, 'max'=>3],
            ['porcentaje_retiro_adm, porcentaje_retiro_asc',  'length', 'min'=>1, 'max'=>6],
            ['porcentaje_retiro_adm, porcentaje_retiro_asc',  'validarPorcentaje'],
            ['tiempo_inscripcion_adm, tiempo_inscripcion_asc',  'validarestatus'],

            array('porcentaje_comision, id_estatus_solicitud_adm, porcentaje_retiro_adm, tiempo_inscripcion_adm, tiempo_solicitud_adm,
                    id_estatus_solicitud_asc, porcentaje_retiro_asc, tiempo_inscripcion_asc, tiempo_solicitud_asc ', 'safe'),
        );
    }

    public function attributeLabels()
    {
        return array(
            'id' => 'ID',
            'porcentaje_comision' => 'Porcentaje de comisión',
            'aplica_retiro' => 'Aplica comisión a retiro',
            'aplica_capitalizacion' => 'Aplica comisión a capitalización',
            'tiempo_solicitud_adm' => 'Tiempo de la última solicitud',
            'tiempo_inscripcion_adm' => 'Tiempo mínimo de ingreso',
            'porcentaje_retiro_adm' => 'Porcentaje permitido para el retiro',
            'id_estatus_solicitud_adm' => 'Estatus de la última solicitud',
            'tiempo_solicitud_asc' => 'Tiempo de la última solicitud',
            'tiempo_inscripcion_asc' => 'Tiempo mínimo de ingreso',
            'porcentaje_retiro_asc' => 'Porcentaje permitido para el retiro',
            'id_estatus_solicitud_asc' => 'Estatus de la última solicitud',
            'visible' => 'Mostrar valores configurados en pantalla de carga',
        );
    }

    public function validarPorcentaje(){

        if(!$this->hasErrors('porcentaje_retiro_adm')){

            $monto = str_replace(',', '.', $this->porcentaje_retiro_adm);

            if($monto > 100)

                $this->addError('porcentaje_retiro_adm', 'Porcentaje no permitido, el porcentaje máximo es el 100%');
        }

        if(!$this->hasErrors('porcentaje_retiro_asc')){

            $monto = str_replace(',', '.', $this->porcentaje_retiro_asc);

            if($monto > 100)

                $this->addError('porcentaje_retiro_asc', 'Porcentaje no permitido, el porcentaje máximo es el 100%');
        }
    }

    public function validarestatus(){

        if(!$this->hasErrors('tiempo_solicitud_adm')){

            if($this->id_estatus_solicitud_adm =='' && $this->tiempo_solicitud_adm != '')

                $this->addError('id_estatus_solicitud_adm', 'Por favor defina el estatus');
        }

        if(!$this->hasErrors('tiempo_solicitud_asc')){

            if($this->id_estatus_solicitud_asc =='' && $this->tiempo_solicitud_asc != '')

                $this->addError('id_estatus_solicitud_asc', 'Por favor defina el estatus');
        }
    }
    public function search()
    {
        $criteria = new CDbCriteria();

        $criteria->compare('porcentaje_comision', $this->porcentaje_comision);
        $criteria->compare('aplica_retiro', $this->aplica_retiro);
        $criteria->compare('aplica_capitalizacion', $this->aplica_capitalizacion);

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

    public static function model($className = __CLASS__)
    {
        return parent::model($className);
    }

    /**
     * Obtene la visibiliada parar retiro y capitalizacion en pantalla de carga de aportes especiales.
     *
     * @return boolean
     */
    public static function visible()
    {
        return self::model()->findByPk(1)->visible;
    }

    /**
     * Obtiene el porcentaje de comision.
     *
     * @return float
     */
    public static function getPorcentaje()
    {
        return self::model()->findByPk(1)->porcentaje_comision;
    }

    /**
     * Obtiene toda la configuracion del aporte voluntario.
     *
     * @return mixed
     */
    public static function getConf()
    {
        return self::model()->findByPk(1);
    }


    public function beforeSave(){

            $this->porcentaje_retiro_adm=str_replace(',', '.', $this->porcentaje_retiro_adm);
            $this->porcentaje_retiro_asc=str_replace(',', '.', $this->porcentaje_retiro_asc);

            

            return parent::beforeSave();
        }
}
