<?php

/**
 * This is the model class for table "sidcai_declaracion_detalle".
 *
 * The followings are the available columns in table 'sidcai_declaracion_detalle':
 * @property string $codigo_declaraciones
 * @property integer $banc_codigo_fk
 * @property integer $decl_modalidadpago
 * @property string $decl_referencia
 * @property string $decl_monto
 * @property boolean $decl_extemporaneo
 * @property string $decl_fechapago
 * @property boolean $decl_pago_aceptado
 * @property integer $analista_fk
 * @property integer $audit_usua
 * @property varchar $comprobante
 * @property integer $usuario_tesoreria_fk
 * @property boolean $segunda_verificacion
 * @property string $fecha_segunda_verificacion
 * @property boolean $finalizada_segunda_verificacion
 * @property string $fecha_segunda_verificacion_finalizado
 * @property boolean $pago_fidetel
 *
 * The followings are the available model relations:
 * @property SidcaiDeclaracioncti $declCodigoFk
 * @property SidcaiCiiu $ciiuCodigoFk
 * @property SidcaiBeneficiario $beneCodigoFk
 */
class SidcaiDeclaracionDetalle extends CActiveRecord{
	public $decl_cuenta;

	/**
	 * @return string the associated database table name
	 */
	public function tableName(){
		return 'sidcai_declaracion_detalle';
	}

	/**
	 * @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(
				'codigo_declaraciones, decl_modalidadpago, decl_referencia, decl_monto, decl_extemporaneo,  decl_fechapago, banc_codigo_fk', 
				'required',
				'message' => 'Este campo es requerido.'
			),
			array(
				'decl_cuenta',
				'required',
				'message' => 'Este campo es requerido.',
				'on' => 'validarPago,validarPagoAnalista'
			),
			array(
				'codigo_declaraciones, decl_modalidadpago, decl_referencia, decl_monto, decl_extemporaneo,  decl_fechapago, banc_codigo_fk', 
				'filter',
				'filter' => 'trim'
			),
			array(
				'decl_fechapago',
				'compare',
				'compareValue' 	=> '00/00/0000',
				'operator' 		=> '>',
				'message' 		=> 'Debe seleccionar una fecha',
			),
			array(
				'decl_referencia',
				'length',
				'max' 		=> 20,
				'tooLong' 	=> 'Máximo 20 digitos',
			),
			array(
				'decl_referencia',
				'comprobarReferencia',
				'on' => 'validarPago,validarPagoAnalista'
			),
			array(
				'decl_modalidadpago, audit_usua, decl_referencia, banc_codigo_fk', 
				'numerical', 
				'integerOnly'	=> true,
				'message' 		=> 'Solo se permiten números.'
			),
			array(
				'comprobate, rech_codigo_fk, decl_pago_aceptado, analista_fk, usuario_tesoreria_fk, segunda_verificacion, fecha_segunda_verificacion, finalizada_segunda_verificacion, fecha_segunda_verificacion_finalizado, pago_fidetel',
				'safe'
			),
			/*array(
				'decl_monto', 
				'compare', 
				'compareValue' => 0,
				'operator' => '!=', 
				'message' => 'El monto debe ser mayor a 0,00.',
			),*/
		);
	}

	/**
	 * @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(
			'bancCodigoFk' => array(self::BELONGS_TO, 'SidcaiBanco', 'banc_codigo_fk'),
			'analistaFk' => array(self::BELONGS_TO, 'SidcaiUsuario', 'analista_fk'),
			'auditUsua' => array(self::BELONGS_TO, 'SidcaiUsuario', 'audit_usua'),
			'usuaTesoreriaFk' => array(self::BELONGS_TO, 'SidcaiUsuario', 'usuario_tesoreria_fk'),
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels(){
		return array(
			'codigo_declaraciones' 	 => 'Código declaración',
			'banc_codigo_fk' 	 => 'Banco',
			'decl_modalidadpago' => 'Modalidad Pago',
			'decl_referencia' 	 => 'Número de referencia',
			'decl_monto' 		 => 'Monto',
			'decl_extemporaneo'  => 'Extemporaneo',
			'decl_fechapago' 	 => 'Fecha de pago',
			'audit_usua' 		 => 'Usuario Auditor',
			'decl_pago_aceptado' => 'Estatus Pago',
			'comprobante'		 => 'Comprobante de pago',
			'analista_fk' 		 => 'Analista',
			'apor_codigo_fk'	 => 'Aportante',
			'rech_codigo_fk'	 => 'Motivo de Rechazo',
			'pago_fidetel'		 => 'Pago FIDETEL',
			'usuario_tesoreria_fk'	 => 'Tesorería',
			'segunda_verificacion'	 => 'Segunda Verificación',
			'fecha_segunda_verificacion'	 => 'Fecha Segunda Verificación',
			'finalizada_segunda_verificacion'	 => 'Finalizado',
			'fecha_segunda_verificacion_finalizado'	 => 'Fecha Finalizado',
		);
	}

	/**
	 * 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 SidcaiDeclaracionDetalle the static model class
	 */
	public static function model($className=__CLASS__){
		return parent::model($className);
	}

	public function comprobarReferencia(){
		if($this->decl_referencia != ''){
			if($this->decl_cuenta == "00000000000000000000"){
				$this->addError('decl_referencia', 'Seleccione primero el banco');
				return true;
			}else{
				$referencia = SidcaiDeclaracionDetalle::model()->findAll([
					'condition' => 'decl_referencia = :decl_referencia AND banc_codigo_fk = :banc_codigo_fk AND decl_pago_aceptado = :decl_pago_aceptado',
					'params' => [
						':decl_referencia' 		=> $this->decl_referencia,
						':banc_codigo_fk' 		=>$this->banc_codigo_fk,
						':decl_pago_aceptado' 	=> TRUE
					]
				]);

				if($referencia != NULL){
					$this->addError('decl_referencia', 'El número de referencia ya ha sido registrado.');
					return true;
				}
			}
		}
	}
}
