<?php

/**
 * This is the model class for table "pagos.pagos_masivos_detalle".
 *
 * The followings are the available columns in table 'pagos.pagos_masivos_detalle':
 * @property integer $id
 * @property string $id_pagos_masivos
 * @property boolean $blnborrado
 * @property string $id_estatus_detalle
 * @property string $observacion
 * @property string $id_proceso
 * @property string $id_nombre_proceso
 *
 * The followings are the available model relations:
 * @property EstatusPagosMasivoDetalle $idEstatusDetalle
 * @property PagosMasivos $idPagosMasivos
 * @property ProcesoPago $idProcesoPago
 * @property TituloProcesoPago $idNombreProceso
 */
class PagosMasivosDetalle extends CActiveRecord
{
	public $nacionalidad, $cedula, $nombre, $apellidos, $id_unidad, $unidad, $proceso, $monto_pagar, $fecha_aprobacion, $fecha_solicitud, $nombre_completo, $cuenta, $codigo_banco, $correo_electronico;
	public $tipo_persona;
	public $error = false;
	public  $pagado = true;
	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'pagos.pagos_masivos_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('id_estatus_detalle' ,'required', 'on'=>'pago'),
			array('id_estatus_detalle' , 'validarDatos', 'on'=>'pago'),
			array('pagado,id_pagos_masivos, blnborrado, id_estatus_detalle, observacion, id_proceso, id_nombre_proceso', 'safe'),
			// The following rule is used by search().
			// @todo Please remove those attributes that should not be searched.
			array('id, id_pagos_masivos,  blnborrado, id_estatus_detalle, observacion, id_proceso, id_nombre_proceso', '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(
			'idEstatusDetalle' => array(self::BELONGS_TO, 'EstatusPagosMasivoDetalle', 'id_estatus_detalle'),
			'idPagosMasivos' => array(self::BELONGS_TO, 'PagosMasivos', 'id_pagos_masivos'),
            'idNombreProceso' => array(self::BELONGS_TO, 'TituloProcesoPago', 'id_nombre_proceso'),
            'ultimoComprobante' => [self::HAS_ONE, 'Comprobante', ['id_comprobante' => 'id']],
		);
	}

	/**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'id' => 'ID',
			'id_pagos_masivos' => 'Id Pagos Masivos',
			'blnborrado' => 'Blnborrado',
			'id_estatus_detalle' => 'Estatus',
			'observacion' => 'Observacion',
			'id_proceso' => 'Id Proceso',
			'id_nombre_proceso' => 'Id Nombre Proceso',
			'cedula' => 'Cédula',
			'observacion' => 'Observación',
		);
	}
	public function validarDatos(){
		if(!$this->hasErrors('id_estatus_detalle')){
			if($this->id_estatus_detalle ==3 &&$this->observacion =='')
				$this->addError('observacion','Debe explicar porque no puede<br> fue realizado su pago');
		}
	}
	public function afterFind(){
		if($this->id !=''){

			$this->tipo_persona = 'N';

			if($this->id_nombre_proceso == 3){
				$model = Liquidacion::model()->findByPk($this->id_proceso);
				$this->nacionalidad = $model->idAsociado->nacionalidad;
				$this->cedula = $model->idAsociado->cedula;
				$this->nombre = $model->idAsociado->nombre;
				$this->apellidos = $model->idAsociado->apellidos;
				$this->id_unidad = $model->idAsociado->idunidad;
				$this->unidad = $model->idAsociado->unidad->descripcion;
				$this->monto_pagar = $model->monto_pagar;
				$this->proceso = 'Liquidacion';
			}
			elseif ($this->id_nombre_proceso == 2) {
				$model = RetiroParcial::model()->findByPk($this->id_proceso);
				$this->nacionalidad = $model->idAsociado->nacionalidad;
				$this->cedula = $model->idAsociado->cedula;
				$this->nombre = $model->idAsociado->nombre;
				$this->apellidos = $model->idAsociado->apellidos;
				$this->id_unidad = $model->idAsociado->idunidad;
				$this->unidad = $model->idAsociado->unidad->descripcion;
				$this->monto_pagar = $model->monto_pagar;
				$this->proceso = 'Retiro Parcial';
			}
			elseif($this->id_nombre_proceso == 1){
                $model = Credito::model()->findByPk($this->id_proceso);
                $this->nacionalidad = $model->idAsociado->nacionalidad;
                $this->cedula = $model->idAsociado->cedula;
                $this->nombre = $model->idAsociado->nombre;
                $this->apellidos = $model->idAsociado->apellidos;
                $this->id_unidad = $model->idAsociado->idunidad;
                $this->unidad = $model->idAsociado->unidad->descripcion;
                $this->monto_pagar = $model->monto_credito_depositar;
                $this->proceso = 'Credito';
            }
            elseif($this->id_nombre_proceso == 7){
				$model = AporteVoluntario::model()->findByPk($this->id_proceso);
				$this->nacionalidad = $model->idAsociado->nacionalidad;
				$this->cedula = $model->idAsociado->cedula;
				$this->nombre = $model->idAsociado->nombre;
				$this->apellidos = $model->idAsociado->apellidos;
				$this->id_unidad = $model->idAsociado->idunidad;
				$this->unidad = $model->idAsociado->unidad->descripcion;
				$this->monto_pagar = $model->monto_retirado;
				$this->proceso = 'Aportes Extras';
			}
            elseif($this->id_nombre_proceso == 10){
				$model = OrdenPago::model()->findByPk($this->id_proceso);
				$this->monto_pagar = $model->monto_pago;
				$this->proceso = 'Orden pago';

				$this->tipo_persona = 'J';
				if($model->id_tipo_orden==1){
					$modelProveedor =  Proveedor::model()->findByPk($model->idproveedor);
					$this->nacionalidad = $modelProveedor->idTipoPersona->descripcion;
					$this->cedula = $modelProveedor->rif;
					$this->nombre = $modelProveedor->razon_social;
				}
				else{
					$modelProveedor =  Asociado::model()->findByPk($model->idproveedor);
					$this->nacionalidad = $modelProveedor->nacionalidad;
					$this->cedula =  $modelProveedor->cedula;
					$this->nombre = $modelProveedor->nombre;
					$this->apellidos = $modelProveedor->apellidos;
					$this->id_unidad = $modelProveedor->idunidad;
					$this->unidad = $modelProveedor->unidad->descripcion;
				}


			}
		}

        return parent::afterFind();
    }
    public function cargarDatos(){
		$this->nombre_completo = $this->nombre.' '.$this->apellidos;

		$this->nombre_completo = preg_replace(['([^ A-Za-z0-9_-ñÑ])'], '', $this->nombre_completo);

		if($this->id_nombre_proceso == 3){
			$model = Liquidacion::model()->findByPk($this->id_proceso);
			$this->cuenta = $model->cuenta;
			$this->correo_electronico = $model->idAsociado->correoelectronico;
		}
		elseif ($this->id_nombre_proceso == 2) {
            $model = RetiroParcial::model()->findByPk($this->id_proceso);
            $this->cuenta = $model->cuenta;
            $this->correo_electronico = $model->idAsociado->correoelectronico;
        }
        elseif ($this->id_nombre_proceso == 7) {
			$model = AporteVoluntario::model()->findByPk($this->id_proceso);
			$this->cuenta = $model->cuenta_destino;
			$this->correo_electronico = $model->idAsociado->correoelectronico;
		}elseif ($this->id_nombre_proceso == 10){
			$model = OrdenPago::model()->findByPk($this->id_proceso);
			$this->cuenta = $model->num_cuenta;
			$this->correo_electronico = $model->correo_electronico;
		}
		else{
			$model = Credito::model()->findByPk($this->id_proceso);
			$this->cuenta = $model->cuenta;
			$this->correo_electronico = $model->idAsociado->correoelectronico;
		}
			$this->codigo_banco = substr($this->cuenta, 1, 3);
		if($this->correo_electronico =='')
			$this->correo_electronico ='no-correo@nocorreo.com';
	}

	public function getCodigoServicio(){

		return $this->idPagosMasivos->idBancoTipoServicio->codigo_servicio;
	}
	/**
	 * 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($id)
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id_pagos_masivos',$id);
		$criteria->compare('blnborrado',$this->blnborrado);
		$criteria->compare('id_estatus_detalle',$this->id_estatus_detalle,true);
		$criteria->compare('observacion',$this->observacion,true);
		$criteria->compare('id_proceso',$this->id_proceso,true);
		$criteria->compare('id_nombre_proceso',$this->id_nombre_proceso,true);

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

    public function searchExcel($id)
	{
		$criteria=new CDbCriteria;
		$criteria->compare('id_pagos_masivos',$id);
		$criteria->compare('blnborrado',$this->blnborrado);
		$criteria->compare('id_estatus_detalle',$this->id_estatus_detalle,true);
		$criteria->compare('observacion',$this->observacion,true);
		$criteria->compare('id_proceso',$this->id_proceso,true);
		$criteria->compare('id_nombre_proceso',$this->id_nombre_proceso,true);

		return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'pagination' => false,
		));
	}
	public function searchTxt($id)
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;
		$criteria->with = 'datosTxtPagoses';
		$criteria->together = true;
		$criteria->compare('"datosTxtPagoses".id_txt',$id);
		$criteria->compare('blnborrado',$this->blnborrado);
		$criteria->compare('id_estatus_detalle',$this->id_estatus_detalle,true);

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

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