<?php

class DatosTxtTablaAmortizacionDiferidoController extends Controller
{
	/**
	 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='//layouts/column2';

	/**
	 * @return array action filters
	 */
	public function filters()
{
		return array(
			'accessControl', // perform access control for CRUD operations
			'postOnly + delete',
			array('CrugeAccessControlFilter')
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'actions'=>array('index','view'),
				'users'=>array('*'),
			),
			array('allow', // allow authenticated user to perform 'create' and 'update' actions
				'actions'=>array('create','update','updateExcluido','updateAjax','updateExcluidoAjax', 'validarEstatus'),
				'users'=>array('@'),
			),
			array('allow', // allow admin user to perform 'admin' and 'delete' actions
				'actions'=>array('admin','delete'),
				'users'=>array('admin'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

	/**
	 * Displays a particular model.
	 * @param integer $id the ID of the model to be displayed
	 */
	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model=new DatosTxtTablaAmortizacionDiferido;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['DatosTxtTablaAmortizacionDiferido']))
		{
			$model->attributes=$_POST['DatosTxtTablaAmortizacionDiferido'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->id));
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 * @param integer $id the ID of the model to be updated
	 */
	public function actionUpdate($id)
	{
		$model=$this->loadModel($id);
		$model->observaciones ='';
		$model->scenario = 'DefinicionEstatus';

		//busqueda de la planilla que no este en estatus liquidado
		$modelAsociado =Asociado::model()->find('cedula=:cedula ORDER BY idasociado desc',[':cedula'=>$model->cedula]);
		if(!$modelAsociado)
			$modelAsociado = new Asociado;
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['DatosTxtTablaAmortizacionDiferido']))
		{
				$model->attributes=$_POST['DatosTxtTablaAmortizacionDiferido'];
				$model->id_cuota = (isset($_POST['correccion-clave-grid_c0']))?$_POST['correccion-clave-grid_c0'][0]:NULL;
				$model->id_periodo_nomina = (isset($_POST['correccion-periodo-grid_c0']))?$_POST['correccion-periodo-grid_c0'][0]:NULL;
				if($model->validate()){
					$transaction = Yii::app()->db->beginTransaction();
					try {
						if($model->save()){

							if($model->id_estatus_amortizacion_diferida==3){

							}
							elseif ($model->id_estatus_amortizacion_diferida==4) {
								$cuota = CreditoTablaAmortizacion::model()->findByPk($model->id_cuota);

								//registarar la cuota en la tabla de datos_txt_tabla_amortizacion
								$modelCuota = new DatosTxtTablaAmortizacion();

								$modelCuota->id_tabla_amortizacion = $cuota->id;
								$modelCuota->id_txt = $model->id_txt;
								$modelCuota->actual = true;
								$modelCuota->monto_cuota_pagado = str_replace('.', ',', $model->monto_cuota) ;
								$modelCuota->monto_cobro = 0;
								$modelCuota->monto_remanente = 0;
								$montoCuota = str_replace(',', '.', $model->monto_cuota) ;
								if ($montoCuota > $cuota->monto_cuota ) {
									$modelCuota->monto_remanente = $montoCuota -$cuota->monto_cuota;

									//desplegar mecanismo para el pago de cuota
									# code...
								}
								elseif ($montoCuota < $cuota->monto_cuota) {
									$modelCuota->monto_cobro = $cuota->monto_cuota-$montoCuota;
								}
  								if($modelCuota->save()){
  									if($montoCuota < $cuota->monto_cuota){
  										$modelConfiguracionPrenomina = ConfPreNomina::model()->find();
                                        $metodo_cobro = $modelConfiguracionPrenomina->distribucionCuota($montoCuota, $cuota);
                                        $modelDiferencialCuota = new CobroDiferencialCuota();
                                        $modelDiferencialCuota->id_proceso = $modelCuota->id;
                                        $modelDiferencialCuota->id_nombre_proceso = 1;
                                        $modelDiferencialCuota->total_cobro = $modelCuota->monto_cobro;
                                        $modelDiferencialCuota->capital_pagado = $metodo_cobro['capital_pagado'];
                                        $modelDiferencialCuota->interes_pagado = $metodo_cobro['interes_pagado'];
                                        $modelDiferencialCuota->capital_cobro = $metodo_cobro['capital_cobro'];
                                        $modelDiferencialCuota->interes_cobro = $metodo_cobro['interes_cobro'];

                                        $modelDiferencialCuota->save();

                                        $modelSeguimiento = new CobroDiferencialCuotaSeguimiento();
                                        $modelSeguimiento->id_cobro_diferencial_cuota = $modelDiferencialCuota->id;
                                        $modelSeguimiento->id_estatus_cobro_cuota = 1;
                                        $modelSeguimiento->save();

                                    }
  								}
  								$model->blnborrado =true;
  								$model->save();

							}

							//verifica si todas las cuotas del archivo fueron definidas
							$modelDiferidos =DatosTxtTablaAmortizacionDiferido::model()->count('id_txt=:id_txt AND id_estatus_amortizacion_diferida = 1',[':id_txt'=>$model->id_txt]);
                            if($modelDiferidos ==0){
                                EstatusTxtIntegrado::model()->updateAll(['actual'=>false],'id_datos_txt_integrado=:id_datos_txt_integrado',
                                                                          [':id_datos_txt_integrado'=>$model->id_txt]);
                                PreNominaSeguimiento::model()->updateAll(['actual'=>false],'id_pre_nomina_credito=:id_pre_nomina_credito',
                                                                          [':id_pre_nomina_credito'=>$model->idDatoTxt->id_prenomina_credito]);

                                $estatusTxt =1;
                                $estatusPre =2;
                                $cuotasExcluidas = PreNominaTablaAmortizacion::model()->findAll('id_pre_nomina_credito=:id_pre_nomina_credito AND id_tabla_amortizacion not in(SELECT "t"."id_tabla_amortizacion"
																																												FROM "prestamos"."pre_nomina_tabla_amortizacion" "t"
																																												JOIN "prestamos"."datos_txt_tabla_amortizacion" "idDatosTxtTablaAmortizacion" ON ("t"."id_tabla_amortizacion"="idDatosTxtTablaAmortizacion"."id_tabla_amortizacion")
																																												WHERE id_txt =:id_txt)',
																										[':id_pre_nomina_credito'=>$model->idDatoTxt->id_prenomina_credito,':id_txt'=>$model->id_txt]);
                                if(count($cuotasExcluidas)> 0){
                                	$estatusTxt =8;
                                	$estatusPre =7;
                                	foreach ($cuotasExcluidas as $key => $value) {
                                		$value->cuota_excluida = true;
                                		$value->id_estatus_cuota_excluida = 1;
                                		$value->save();
                                	}
                                }
                            	$modelEstatusIntegrado= new EstatusTxtIntegrado('aporte_voluntario');
                                $modelEstatusIntegrado->id_datos_txt_integrado=$model->id_txt;
                                $modelEstatusIntegrado->id_estatus_txt=$estatusTxt;
                                $modelEstatusIntegrado->actual=TRUE;
                                $modelEstatusIntegrado->save();

                                $modelPrenominaSeguimiento = new PreNominaSeguimiento();
                                $modelPrenominaSeguimiento->id_estatus_pre_nomina = $estatusPre ;
                                $modelPrenominaSeguimiento ->id_pre_nomina_credito=$model->idDatoTxt->id_prenomina_credito;
                                $modelPrenominaSeguimiento ->save();

                            }
                            $transaction->commit();
                           Yii::app()->user->setFlash('success', 'Los datos han sido actualizado exitosamente');
                        }

						$this->redirect(array('/prestamo/DatosPreNominaCredito/view','id'=>$model->idDatoTxt->id_prenomina_credito));
					}
					catch (Exception $e){//echo "<pre>";print_r($e);exit;
						throw new CHttpException(400,$e->getMessage());
						$transaction->rollBack();
		                        	Yii::app()->user->setFlash('error', 'Ha ocurrido un error al tratar de actualizar al la cuota.');
		                            $this->redirect(array('/prestamo/DatosPreNominaCredito/view','id'=>$model->idDatoTxt->id_prenomina_credito));
					}

				}
			}
		$this->render('update',array(
			'model'=>$model,
			'modelAsociado'=>$modelAsociado,
		));
	}

    public function actionUpdateAjax()
    {
        $resultado = [];
        $resultado['error'] = 'no';
        $resultado['estatusTxt'] = 0;
        $resultado['correccionPeriodo'] = 0;

        $resultado['mensajes_error'] = '<ul>';
        $id = (isset($_POST['DatosTxtTablaAmortizacionDiferido']['id']) && $_POST['DatosTxtTablaAmortizacionDiferido']['id'] != '')
            ? $_POST['DatosTxtTablaAmortizacionDiferido']['id']
            : null;
        $model = new DatosTxtTablaAmortizacionDiferido();
        $model = $this->loadModel($id);
        $model->attributes = $_POST['DatosTxtTablaAmortizacionDiferido'];
        $model->scenario = 'DefinicionEstatus';
        $model->id_cuota = (isset($_POST['correccion-clave-grid_c0'])) ? $_POST['correccion-clave-grid_c0'][0] : null;
        $model->id_periodo_nomina = (isset($_POST['correccion-periodo-grid_c0'])) ? $_POST['correccion-periodo-grid_c0'][0] : null;

        if ($model->id_estatus_amortizacion_diferida == 10) {
            $model->scenario = 'gestionar_abono';
            $model->setAbonoPrestamos($_POST);
        }

        if ($model->id_estatus_amortizacion_diferida == 2) {
            $asociado = Asociado::model()->exists([
                'condition' => 'cedula=:cedula',
                'order' => 'idasociado desc',
                'params' => [
                    'cedula' => $model->cedula
                ]
            ]);

            if (! $asociado) {
                $model->scenario = 'informacion_adicional';
                $model->setExtra();
            } else {
                $resultado['error'] = 'si';
                $errores = '';
                $resultado['mensajes_error'] = 'El asociado tiene una planilla <strong>activa</strong> dentro del sistema.';
                echo CJSON::encode($resultado);
                Yii::app()->end();
            }
        }

        if ($model->id_estatus_amortizacion_diferida == 9) {
            $model->scenario = 'informacion_adicional';
            $model->setExtra();
        }

        if ($model->id_estatus_amortizacion_diferida == 11) {
            $model->scenario = 'ajuste_asignacion';
        }

        if ($model->validate()) {
            $transaction = Yii::app()->db->beginTransaction();
            try {
                if ($model->save()) {
                    if ($model->id_estatus_amortizacion_diferida == 4) {
                        $cuota = CreditoTablaAmortizacion::model()->findByPk($model->id_cuota);
                        $resultado['correccionPeriodo'] = 1;
                        //registarar la cuota en la tabla de datos_txt_tabla_amortizacion
                        $modelCuota = new DatosTxtTablaAmortizacion();

                        $modelCuota->id_tabla_amortizacion = $cuota->id;
                        $modelCuota->id_txt = $model->id_txt;
                        $modelCuota->actual = true;
                        $modelCuota->monto_cuota_pagado = str_replace('.', ',', $model->monto_cuota);
                        $modelCuota->monto_cobro = 0;
                        $modelCuota->monto_remanente = 0;
                        $montoCuota = str_replace(',', '.', $model->monto_cuota);

                        if ($montoCuota > $cuota->monto_cuota) {
                            $modelCuota->monto_remanente = $montoCuota - $cuota->monto_cuota;
                        } elseif ($montoCuota < $cuota->monto_cuota) {
                            //desplegar mecanismo para el pago de cuota
                            $modelCuota->monto_cobro = $cuota->monto_cuota - $montoCuota;
                        }

                        if ($modelCuota->save()) {
                            if ($montoCuota < $cuota->monto_cuota) {
                                $modelConfiguracionPrenomina = ConfPreNomina::model()->find();
                                $metodo_cobro = $modelConfiguracionPrenomina->distribucionCuota($montoCuota, $cuota);
                                $modelDiferencialCuota = new CobroDiferencialCuota();
                                $modelDiferencialCuota->id_proceso = $modelCuota->id;
                                $modelDiferencialCuota->id_nombre_proceso = 1;
                                $modelDiferencialCuota->total_cobro = $modelCuota->monto_cobro;
                                $modelDiferencialCuota->capital_pagado = $metodo_cobro['capital_pagado'];
                                $modelDiferencialCuota->interes_pagado = $metodo_cobro['interes_pagado'];
                                $modelDiferencialCuota->capital_cobro = $metodo_cobro['capital_cobro'];
                                $modelDiferencialCuota->interes_cobro = $metodo_cobro['interes_cobro'];

                                if ($modelDiferencialCuota->save()) {
                                    $modelSeguimiento = new CobroDiferencialCuotaSeguimiento();
                                    $modelSeguimiento->id_cobro_diferencial_cuota = $modelDiferencialCuota->id;
                                    $modelSeguimiento->id_estatus_cobro_cuota = 1;
                                    $modelSeguimiento->save();
                                } else {
                                    $transaction->rollBack();
                                    Yii::app()->user->setFlash('error', 'Ha ocurrido un error al tratar de actualizar al la cuota.');
                                }
                            }
                        }

                        PreNominaTablaAmortizacion::model()->updateAll([
                            'cuota_excluida' => false,
                            'id_estatus_cuota_excluida' => null,
                            'observaciones' => null
                        ], 'id_tabla_amortizacion=:id_tabla_amortizacion AND id_pre_nomina_credito=:id_pre_nomina_credito', [
                            'id_tabla_amortizacion' => $modelCuota->id,
                            'id_pre_nomina_credito' => $model->idDatoTxt->id_prenomina_credito
                        ]);

                        $model->blnborrado = true;
                        $model->save();
                    }

                    //verifica si todas las cuotas del archivo fueron definidas
                    $modelDiferidos = DatosTxtTablaAmortizacionDiferido::model()->count('id_txt=:id_txt AND id_estatus_amortizacion_diferida = 1 AND aporte_excluido =false', [':id_txt' => $model->id_txt]);
                    if ($modelDiferidos == 0) {
                        EstatusTxtIntegrado::model()->updateAll(['actual' => false],'id_datos_txt_integrado=:id_datos_txt_integrado', [
                            'id_datos_txt_integrado' => $model->id_txt
                        ]);
                        PreNominaSeguimiento::model()->updateAll(['actual' => false], 'id_pre_nomina_credito=:id_pre_nomina_credito', [
                            'id_pre_nomina_credito' => $model->idDatoTxt->id_prenomina_credito
                        ]);

                        $estatusTxt = 1;
                        $estatusPre = 2;
                        $cuotasExcluidas = PreNominaTablaAmortizacion::model()->findAll('
                            id_pre_nomina_credito=:id_pre_nomina_credito
                            AND t.blnborrado is false
                            AND id_tabla_amortizacion not in(
                                SELECT "t"."id_tabla_amortizacion"
                                FROM "prestamos"."pre_nomina_tabla_amortizacion" "t"
                                JOIN "prestamos"."datos_txt_tabla_amortizacion" "idDatosTxtTablaAmortizacion" ON ("t"."id_tabla_amortizacion"="idDatosTxtTablaAmortizacion"."id_tabla_amortizacion")
                                WHERE id_txt =:id_txt
                            )',
                            [
                                'id_pre_nomina_credito' => $model->idDatoTxt->id_prenomina_credito,
                                'id_txt' => $model->id_txt
                            ]
                        );

                        if (count($cuotasExcluidas) > 0) {
                            $estatusTxt = 8;
                            $estatusPre = 7;
                            foreach ($cuotasExcluidas as $key => $value) {
                                $value->cuota_excluida = true;
                                $value->id_estatus_cuota_excluida = 1;
                                $value->save();
                            }
                        }

                        $modelEstatusIntegrado = new EstatusTxtIntegrado('aporte_voluntario');
                        $modelEstatusIntegrado->id_datos_txt_integrado = $model->id_txt;
                        $modelEstatusIntegrado->id_estatus_txt = $estatusTxt;
                        $modelEstatusIntegrado->actual = true;
                        $modelEstatusIntegrado->save();

                        $modelPrenominaSeguimiento = new PreNominaSeguimiento();
                        $modelPrenominaSeguimiento->id_estatus_pre_nomina = $estatusPre;
                        $modelPrenominaSeguimiento->id_pre_nomina_credito = $model->idDatoTxt->id_prenomina_credito;
                        $modelPrenominaSeguimiento->save();
                        $resultado['estatusTxt'] = $estatusTxt;
                    }

                    $transaction->commit();
                    Yii::app()->user->setFlash('success', 'Los datos han sido actualizado exitosamente');
                }
            } catch (Exception $e) {
                throw new CHttpException(400, $e->getMessage());
                $transaction->rollBack();
                Yii::app()->user->setFlash('error', 'Ha ocurrido un error al tratar de actualizar al la cuota.');
            }
        } else {
            $resultado['error'] = 'si';
            $errores = '';
            foreach ($model->getErrors() as $key => $value) {
                $error = '';
                foreach ($value as $keyI => $valueI) {
                    $error .= $valueI." \n";
                }
                $resultado[$key] = $error;

                $errores .= '<li>'.$error.'</li>';
            }

            $resultado['mensajes_error'] .= $errores.'</ul>';

            echo CJSON::encode($resultado);
            Yii::app()->end();
        }
        echo CJSON::encode($resultado);
    }

    public function actionupdateExcluidoAjax()
    {
        $resultado = [];
        $resultado['error'] = 'no';
        $resultado['estatusTxt'] = 0;
        $resultado['mensajes_error'] = '<div class="alert in alert-block fade alert-error"><ul>';
        $id = (isset($_POST['PreNominaTablaAmortizacion']['id']) && $_POST['PreNominaTablaAmortizacion']['id'] != '') ? $_POST['PreNominaTablaAmortizacion']['id'] : null;
        $model = new PreNominaTablaAmortizacion();
        $model = PreNominaTablaAmortizacion::model()->findByPk($id);
        $model->id_estatus_cuota_excluida = $_POST['PreNominaTablaAmortizacion']['id_estatus_cuota_excluida'];
        $model->observaciones = $_POST['PreNominaTablaAmortizacion']['observaciones'];
        $model->scenario = 'DefinicionEstatus';
        if ($model->validate()) {
            $transaction = Yii::app()->db->beginTransaction();
            try {
                if ($model->save()) {
                    // si la cuota es por reclamar pasarla a la tabla de cobro
                    $datosTxt = DatosTxtIntegrado::model()->find('blnborrado = false AND id_prenomina_credito=:id_prenomina_credito', [
                        ':id_prenomina_credito' => $model->id_pre_nomina_credito
                    ]);
                    if ($model->id_estatus_cuota_excluida == 8) {
                        $cuota = $model->idTablaAmortizacion;
                        $modelDiferencialCuota = new CobroDiferencialCuota();
                        $modelDiferencialCuota->id_proceso = $model->id;
                        $modelDiferencialCuota->id_nombre_proceso = 2;
                        $modelDiferencialCuota->total_cobro = $cuota->monto_cuota;
                        $modelDiferencialCuota->capital_pagado = 0;
                        $modelDiferencialCuota->interes_pagado = 0;
                        $modelDiferencialCuota->capital_cobro = $cuota->monto_capital;
                        $modelDiferencialCuota->interes_cobro = $cuota->monto_interes;
                        $modelDiferencialCuota->save();

                        $modelSeguimiento = new CobroDiferencialCuotaSeguimiento();
                        $modelSeguimiento->id_cobro_diferencial_cuota = $modelDiferencialCuota->id;
                        $modelSeguimiento->id_estatus_cobro_cuota = 1;
                        $modelSeguimiento->save();
                    }
                    //verifica si todas las cuotas del archivo fueron definidas
                    $modelDiferidos = PreNominaTablaAmortizacion::model()->count('id_pre_nomina_credito=:id_pre_nomina_credito AND id_estatus_cuota_excluida = 1', [
                        ':id_pre_nomina_credito' => $model->id_pre_nomina_credito
                    ]);
                    if ($modelDiferidos == 0) {
                        $estatusTxt = 1;
                        $estatusPre = 2;
                        EstatusTxtIntegrado::model()->updateAll(['actual' => false],'id_datos_txt_integrado=:id_datos_txt_integrado', [
                            ':id_datos_txt_integrado' => $datosTxt->id
                        ]);
                        PreNominaSeguimiento::model()->updateAll(['actual' => false],'id_pre_nomina_credito=:id_pre_nomina_credito', [
                            ':id_pre_nomina_credito' => $model->id_pre_nomina_credito
                        ]);

                        $modelEstatusIntegrado = new EstatusTxtIntegrado('aporte_voluntario');
                        $modelEstatusIntegrado->id_datos_txt_integrado = $datosTxt->id;
                        $modelEstatusIntegrado->id_estatus_txt = $estatusTxt;
                        $modelEstatusIntegrado->actual = true;
                        $modelEstatusIntegrado->save();

                        $modelPrenominaSeguimiento = new PreNominaSeguimiento();
                        $modelPrenominaSeguimiento->id_estatus_pre_nomina = $estatusPre;
                        $modelPrenominaSeguimiento->id_pre_nomina_credito = $model->id_pre_nomina_credito;
                        $modelPrenominaSeguimiento->save();
                        $resultado['estatusTxt'] = $estatusTxt;
                    }
                    $transaction->commit();
                    Yii::app()->user->setFlash('success', 'Los datos han sido actualizado exitosamente');
                }
            } catch (Exception $e) {
                throw new CHttpException(400, $e->getMessage());
                $transaction->rollBack();
                Yii::app()->user->setFlash('error', 'Ha ocurrido un error al tratar de actualizar al la cuota.');
            }
        } else {
            $resultado['error'] = 'si';
            $errores = '';
            foreach ($model->getErrors() as $key => $value) {
                $error = '';
                foreach ($value as $keyI => $valueI) {
                    $error .= $valueI." \n";
                }
                $resultado[$key] = $error;
                $errores .= '<li>'.$error.'</li>';
            }

            $resultado['mensajes_error'] .= $errores.'</ul></div>';

            echo CJSON::encode($resultado);
            Yii::app()->end();
        }
        echo CJSON::encode($resultado);
    }

	public function actionUpdateExcluido($id)
		{
			$model=PreNominaTablaAmortizacion::model()->findByPk($id);
			$model->observaciones ='';
			// Uncomment the following line if AJAX validation is needed
			// $this->performAjaxValidation($model);
			$model->scenario = 'DefinicionEstatus';
			$modelAsociado =isset($model->idTablaAmortizacion->idCredito->idAsociado)?$model->idTablaAmortizacion->idCredito->idAsociado: NEW Asociado;
			if(isset($_POST['PreNominaTablaAmortizacion']))
			{
				$model->attributes=$_POST['PreNominaTablaAmortizacion'];
				if($model->validate()){
					$transaction = Yii::app()->db->beginTransaction();
					try {
						if($model->save()){
							// si la cuota es por reclamar pasarla a la tabla de cobro
							$datosTxt = DatosTxtIntegrado::model()->find('blnborrado = false AND id_prenomina_credito=:id_prenomina_credito',[':id_prenomina_credito'=>$model->id_pre_nomina_credito]);
							if($model->id_estatus_cuota_excluida ==8){


								$cuota = $model->idTablaAmortizacion;
								$modelDiferencialCuota = new CobroDiferencialCuota();
                                $modelDiferencialCuota->id_proceso = $model->id;
                                $modelDiferencialCuota->id_nombre_proceso = 2;
                                $modelDiferencialCuota->total_cobro = $cuota->monto_cuota;
                                $modelDiferencialCuota->capital_pagado = 0;
                                $modelDiferencialCuota->interes_pagado = 0;
                                $modelDiferencialCuota->capital_cobro = $cuota->monto_capital;
                                $modelDiferencialCuota->interes_cobro = $cuota->monto_interes;

                                $modelDiferencialCuota->save();

                                $modelSeguimiento = new CobroDiferencialCuotaSeguimiento();
                                $modelSeguimiento->id_cobro_diferencial_cuota = $modelDiferencialCuota->id;
                                $modelSeguimiento->id_estatus_cobro_cuota = 1;
                                $modelSeguimiento->save();

							}
							//verifica si todas las cuotas del archivo fueron definidas
							$modelDiferidos =PreNominaTablaAmortizacion::model()->count('id_pre_nomina_credito=:id_pre_nomina_credito AND id_estatus_cuota_excluida = 1',[':id_pre_nomina_credito'=>$model->id_pre_nomina_credito]);
                            if($modelDiferidos ==0){
                            	$estatusTxt =1;
                                $estatusPre =2;
                                EstatusTxtIntegrado::model()->updateAll(['actual'=>false],'id_datos_txt_integrado=:id_datos_txt_integrado',
                                                                          [':id_datos_txt_integrado'=>$datosTxt->id]);
                                PreNominaSeguimiento::model()->updateAll(['actual'=>false],'id_pre_nomina_credito=:id_pre_nomina_credito',
                                                                          [':id_pre_nomina_credito'=>$model->id_pre_nomina_credito]);


                            	$modelEstatusIntegrado= new EstatusTxtIntegrado('aporte_voluntario');
                                $modelEstatusIntegrado->id_datos_txt_integrado=$datosTxt->id;
                                $modelEstatusIntegrado->id_estatus_txt=$estatusTxt;
                                $modelEstatusIntegrado->actual=TRUE;
                                $modelEstatusIntegrado->save();

                                $modelPrenominaSeguimiento = new PreNominaSeguimiento();
                                $modelPrenominaSeguimiento->id_estatus_pre_nomina = $estatusPre;
                                $modelPrenominaSeguimiento ->id_pre_nomina_credito=$model->id_pre_nomina_credito;
                                $modelPrenominaSeguimiento ->save();

                            }
                            $transaction->commit();
                           Yii::app()->user->setFlash('success', 'Los datos han sido actualizado exitosamente');
                        }
						$this->redirect(array('/prestamo/DatosPreNominaCredito/view','id'=>$model->idDatoTxt->id_prenomina_credito));
					}
					catch (Exception $e){ echo "<pre>";print_r($e);exit;
						throw new CHttpException(400,$e->getMessage());
						$transaction->rollBack();
		                        	Yii::app()->user->setFlash('error', 'Ha ocurrido un error al tratar de actualizar al la cuota.');
		                            $this->redirect(array('/prestamo/DatosPreNominaCredito/view','id'=>$model->idDatoTxt->id_prenomina_credito));
					}

				}
			}

			$this->render('updateExcluido',array(
				'model'=>$model,
				'modelAsociado'=>$modelAsociado,
			));
		}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'admin' page.
	 * @param integer $id the ID of the model to be deleted
	 */
	public function actionDelete($id)
	{
		if(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
			$this->loadModel($id)->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('DatosTxtTablaAmortizacionDiferido');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin($id)
	{
		$modelDatosTxt = DatosTxtIntegrado::model()->findByPk($id);
		if($modelDatosTxt===null)
			 $this->redirect(array('datosTxtIntegrado/ViewPrestamos','id'=>$id));

		$model=new DatosTxtTablaAmortizacionDiferido('search');
		$modelCuotasExcluidas= new PreNominaTablaAmortizacion('search');
		$model->unsetAttributes();  // clear any default values
		if(isset($_GET['DatosTxtTablaAmortizacionDiferido']))
			$model->attributes=$_GET['DatosTxtTablaAmortizacionDiferido'];

		$this->render('admin',array(
			'model'=>$model,
			'modelDatosTxt'=>$modelDatosTxt,
			'modelCuotasExcluidas'=>$modelCuotasExcluidas,
		));
	}

	public function actionValidarEstatus()
	{
        $cedula = (integer) $_POST['cedula'];

        if (! is_integer($cedula)) {
            $cedula = null;
        }
        $asociado = Asociado::model()->find([
            'condition' => 'cedula=:cedula',
            'order' => 'idasociado desc',
            'params' => [
                'cedula' => $cedula
            ]
        ]);

        if (! $asociado) {
            echo CJSON::encode([
                'success' => true,
                'data' => [
                    'nombre' => '',
                    'tipo_persona' => '',
                    'cedula' => '',
                    'banco' => '',
                    'numero_cuenta' => '',
                ]
            ]);
            return;
        }

		if ($asociado->id_estatus == 1 && $_POST['id_estatus'] == 2) {
            echo CJSON::encode([
                'success' => false,
                'message' => 'El asociado tiene una planilla <strong>activa</strong> dentro del sistema.'
            ]);
            return;
        }

        if ($asociado->id_estatus == 2 && $_POST['id_estatus'] == 2) {
            echo CJSON::encode([
                'success' => false,
                'message' => 'El asociado tiene una planilla <strong>activa</strong> dentro del sistema.'
            ]);
            return;
        }

        if ($asociado->id_estatus == 2 && $_POST['id_estatus'] == 11) {
            echo CJSON::encode([
                'success' => false,
                'message' => 'El asociado está <strong>liquidado</strong>, no se puede definir este estatus.'
            ]);
            return;
        }

        $cuentaBanco = $asociado->cuentaPrincipal;

		echo CJSON::encode([
			'success' => true,
            'data' => [
                'nombre' => $asociado->nombre(),
                'tipo_persona' => $asociado->id_tipo_persona,
                'cedula' => $asociado->cedula,
                'banco' => isset($cuentaBanco) ? $cuentaBanco->id_banco : '',
                'numero_cuenta' => isset($cuentaBanco) ? $cuentaBanco->cuenta_bancaria : '',
            ]
		]);
		return;
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 * @param integer the ID of the model to be loaded
	 */
	public function loadModel($id)
	{
		$model=DatosTxtTablaAmortizacionDiferido::model()->findByPk($id);
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='datos-txt-tabla-amortizacion-diferido-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
}
