<?php

class ComunController extends Controller
{
    /**
     * Declares class-based actions.
     */
    public function actions()
    {
        return [
            // captcha action renders the CAPTCHA image displayed on the contact page
            'captcha' => [
                'class' => 'CCaptchaAction',
                'backColor' => 0xffffff
            ],
            // page action renders "static" pages stored under 'protected/views/site/pages'
            // They can be accessed via: index.php?r=site/page&view=FileNam
            'page' => [
                'class' => 'CViewAction'
            ]
        ];
    }

    public function actionCargarUnidad()
    {
        $data = [];
        if (isset($_POST['Asociado']['oficina'])) {
            $data = CHtml::listData(
                Unidad::model()->findAll("idlugartrabajo =:keyword and blnborrado='f' order by descripcion asc", [
                    ':keyword' => (int) $_POST['Asociado']['oficina']
                ]),
                'idunidad',
                'descripcion'
            );
        }

        echo "<option value=''>Seleccione la Unidad</option>";
        foreach ($data as $value => $name) {
            echo CHtml::tag('option', ['value' => $value], CHtml::encode($name), true);
        }
    }

    public function actionListarUnidad()
    {
        $data = [];
        if (isset($_POST['idOficina'])) {
            $data = CHtml::listData(
                Unidad::model()->findAll(
                    'idlugartrabajo =:idlugartrabajo and blnborrado=false order by descripcion asc',
                    [':idlugartrabajo' => (int) $_POST['idOficina']]
                ),
                'idunidad',
                'descripcion'
            );
        }

        echo "<option value=''>-- SELECCIONE LA UNIDAD --</option>";
        foreach ($data as $value => $name) {
            echo CHtml::tag('option', ['value' => $value], CHtml::encode($name), true);
        }
    }

    public function actionBuscarCuentaBanco()
    {
        $data = [];
        if (isset($_POST['ci'])) {
            $data = CHtml::listData(
                AsociadoCuentaBanco::model()
                    ->with(['idBanco', 'idAsociado'])
                    ->together(true)
                    ->findAll([
                        'select' =>
                            "t.cuenta_bancaria AS id, \"idBanco\".descripcion ||''|| (CASE WHEN cuenta_corriente = true THEN 'Cuenta Corriente' ELSE 'Cuenta de Ahorro' END)||' '|| \"t\".cuenta_bancaria as cuenta_bancaria",
                        'condition' => 'cedula=:cedula AND t.blnborrado = false',
                        'params' => [':cedula' => $_POST['ci']]
                    ]),
                'id',
                'cuenta_bancaria'
            );
        }

        echo "<option value=''>Seleccione</option>";
        foreach ($data as $value => $name) {
            echo CHtml::tag('option', ['value' => $value], CHtml::encode($name), true);
        }
    }

    public function actionBusquedaPorcentajeAsociado()
    {
        $data = [];
        $modelPorcentajePatrono = Porcentaje::model()
            ->with('confPorcentajes')
            ->findAll(
                'idunidad=:idunidad  AND "confPorcentajes".blnborrado= false AND trabajador = TRUE AND tipo_aporte= 3',
                [':idunidad' => $_POST['idunidad'] != '' ? $_POST['idunidad'] : null]
            );
        if (!$modelPorcentajePatrono) {
            $modelPorcentajePatrono = Porcentaje::model()
                ->with('confPorcentajes')
                ->findAll(
                    'idtipotrabajador=:idtipotrabajador AND "confPorcentajes".blnborrado= false AND trabajador = TRUE AND tipo_aporte= 3',
                    [':idtipotrabajador' => $_POST['idtipotrabajador'] != '' ? $_POST['idtipotrabajador'] : null]
                );

            if (!$modelPorcentajePatrono) {
                $modelPorcentajePatrono = Porcentaje::model()
                    ->with('confPorcentajes')
                    ->findAll(
                        'idunidad=:idunidad AND idtipotrabajador=:idtipotrabajador AND "confPorcentajes".blnborrado= false AND trabajador = TRUE AND tipo_aporte= 3',
                        [
                            ':idunidad' => $_POST['idunidad'] != '' ? $_POST['idunidad'] : null,
                            ':idtipotrabajador' => $_POST['idtipotrabajador'] != '' ? $_POST['idtipotrabajador'] : null
                        ]
                    );
                if (!$modelPorcentajePatrono) {
                    $modelPorcentajePatrono = Porcentaje::model()
                        ->with('confPorcentajes')
                        ->findAll(
                            '"confPorcentajes".blnborrado= false AND "confPorcentajes".trabajador = TRUE AND tipo_aporte= 1'
                        );
                    if (!$modelPorcentajePatrono) {
                        $modelPorcentajePatrono = null;
                    }
                }
            }
        }

        $model = CHtml::listData($modelPorcentajePatrono, 'idporcentaje', 'descripcion');

        if ($model) {
            echo "<option value=''>Seleccione la Porcentaje</option>";
            foreach ($model as $value => $name) {
                echo CHtml::tag('option', ['value' => $value], CHtml::encode($name), true);
            }
        }
    }

    public function actionBuscarPersona()
    {
        $datosPersona = [];
        $datosPersona['error'] = 0;
        $datosPersona['nombre'] = '';
        if (isset($_POST['cedula'])) {
            $model = CrugeUserI::model()->find('cedula=:cedula', [':cedula' => $_POST['cedula']]);
            if ($model) {
                $datosPersona['nombres'] = $model->nombres;
                $datosPersona['apellidos'] = $model->apellidos;

                $modelAsociados = Asociado::model()->find(
                    'cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc',
                    [':cedula' => $model->cedula]
                );
                if ($modelAsociados) {
                    $datosPersona['error'] = 1;
                    $datosPersona['notificacion'] =
                        'El asociado de C.I. ' . $model->cedula . ' tiene una planilla Activa';
                }
            }
        }
        echo CJSON::encode($datosPersona);
    }

    public function actionBuscarAsociado()
    {
        $datosPersona = [];
        $datosPersona['error'] = 0;
        $datosPersona['nombres'] = '';
        if (isset($_POST['cedula'])) {
            $modelAsociado = Asociado::model()->find(
                'cedula=:cedula AND blnborrado=FALSE AND id_estatus in(1,4) ORDER BY idasociado desc',
                [':cedula' => $_POST['cedula']]
            );
            if ($modelAsociado) {
                $datosPersona['nombres'] = $modelAsociado->nombre;
                $datosPersona['apellidos'] = $modelAsociado->apellidos;
                if ($modelAsociado) {
                    $datosPersona['error'] = 1;
                    $datosPersona['notificacion'] =
                        'El asociado de C.I. ' . $modelAsociado->cedula . ' tiene una planilla Activa';
                }
            }
        }
        echo CJSON::encode($datosPersona);
    }

    public function actionFindData()
    {
        $dataAsociado = [];
        $dataAsociado['error'] = 1;
        $dataAsociado['idsocio'] = '';
        $dataAsociado['nombre_apellido'] = '';
        $dataAsociado['empresa'] = '';
        $dataAsociado['unidad'] = '';
        $dataAsociado['sueldo'] = '';
        $dataAsociado['porc_sueldo'] = '';
        $dataAsociado['porcentaje'] = '';
        $dataAsociado['fecha_inscripcion'] = '';
        $dataAsociado['status'] = '';
        $dataAsociado['mensajeError'] = '';
        $dataAsociado['registrado'] = false;
        $dataAsociado['flash'] = '';

        $dataAsociado['beneficiario'] = '';
        $dataAsociado['edad'] = '';

        if (isset($_POST['cedula']) && $_POST['cedula'] != 0 && is_numeric($_POST['cedula'])) {
            $modelAsociado = Asociado::model()->find('cedula=:cedula AND blnborrado=FALSE', [
                ':cedula' => $_POST['cedula']
            ]);

            if ($modelAsociado) {
                $registrado = Solicitud::model()->find('id_asociado=:asociado AND tipo_solicitud=true', [
                    ':asociado' => $modelAsociado->idasociado
                ]);

                if ($registrado) {
                    $dataAsociado['registrado'] = true;
                    $dataAsociado['flash'] =
                        '<span class="help-inline error">Ya existe una solicitud de montepio registrada para este asociado!.</span>';
                } else {
                    $dataAsociado['registrado'] = false;
                }

                $modelBenef = Beneficiario::model()->findAll('idasociado=:asociado', [
                    ':asociado' => $modelAsociado->idasociado
                ]);

                if (!$modelBenef) {
                    $dataAsociado['nobenef'] =
                        '<span class="help-inline error">No hay beneficiarios registrados para este asociado.</span>';
                } else {
                    if (count($modelBenef) > 0) {
                        $a = '<div class="beneficiarios">
                                <fieldset>
                                    <legend>Beneficiarios</legend>
                                    <table id="tabla-benf" class="table table-bordered">
                                    <tr>
                                        <td style="width:25%;"><b>Nombres y apellidos</b></td>
                                        <td style="width:25%;"><b>C&eacute;dula</b></td>
                                        <td style="width:25%;"><b>Edad</b></td>
                                        <td style="width:25%;"><b>Parentesco</b></td>
                                        <td style="width:25%;"><b>Seleccione</b></td>
                                    </tr>';

                        foreach ($modelBenef as $key => $value) {
                            $anio_nac = substr($value->fecha, 0, 4);
                            $anio_actual = date('Y');
                            $edad = $anio_actual - $anio_nac;

                            /*$pdesc = Parentesco::model()->find('idparentesco=:parentesco AND descripcion=:descripcion', array(':parentesco'=>$value->parentesco));*/

                            $a .=
                                '<tr>
                                    <td>' .
                                $value->nombre .
                                ' ' .
                                $value->apellido .
                                '</td>
                                    <td>' .
                                $value->cedula .
                                '</td>
                                    <td>' .
                                $edad .
                                '</td>
                                    <td>' .
                                $value->parent->descripcion .
                                '</td>
                                    <td><input text-align="center" type="checkbox" name="idbenef" value="' .
                                $value->idbeneficiario .
                                '"></td>
                                </tr>';
                        }

                        $a .= '</table>
                            </fieldset>
                            </div>';

                        $dataAsociado['beneficiario'] = $a;
                    }
                }

                $modelCreditosActivos = ReporteCreditos::model()->find(
                    'idasociado=:idasociado AND id_estatus_credito=1',
                    [':idasociado' => $modelAsociado->idasociado]
                );

                if (!$modelCreditosActivos) {
                    $dataAsociado['error'] = 0;

                    $sueldo = $modelAsociado->utltimoSueldoPorcentajeAporte($modelAsociado->idasociado);
                    $modelPorcentajeAporte = PorcentajeDescuentoAsociadoPatrono::model()->find(
                        'idasociado=:idasociado AND actual = true',
                        [':idasociado' => $modelAsociado->idasociado]
                    );

                    if ($modelPorcentajeAporte) {
                        $porcentaje = $modelPorcentajeAporte->idPorcentajeAsociado->descripcion;
                    } else {
                        $porcentaje = 10;
                    }

                    $dataAsociado['idsocio'] = $modelAsociado->idasociado;
                    $dataAsociado['nombre_apellido'] = $modelAsociado->nombre . ' ' . $modelAsociado->apellidos;
                    $dataAsociado['empresa'] = $modelAsociado->lugartrabajo0
                        ? $modelAsociado->lugartrabajo0->descripcion
                        : '';
                    $dataAsociado['unidad'] = $modelAsociado->unidad ? $modelAsociado->unidad->descripcion : '';
                    $dataAsociado['sueldo'] = number_format($sueldo, 2, ',', '.');
                    $dataAsociado['porcentaje'] = $porcentaje . '%';
                    $dataAsociado['fecha_inscripcion'] = $modelAsociado->fechaingreso;
                    $dataAsociado['estatus'] = $modelAsociado->blnborrado == '1' ? 'Inacivo' : 'Activo';
                } else {
                    $dataAsociado['mensajeError'] =
                        '<span class="help-inline error">La cédula suministrada no se encuentra registrada.</span>';
                }
            } else {
                $dataAsociado['mensajeError'] =
                    '<span class="help-inline error">La cédula suministrada no se encuentra registrada.</span>';
            }
        }
        echo CJSON::encode($dataAsociado);
    }

    public function actionDatosPersonalesPrestamos()
    {
        $datosPersona = [];
        $datosPersona['error'] = 1;
        $datosPersona['nombres_apellidos'] = '';
        $datosPersona['empresa'] = '';
        $datosPersona['unidad'] = '';
        $datosPersona['sueldo'] = '';
        $datosPersona['porcentaje_sueldo'] = '';
        $datosPersona['porcentaje'] = '';
        $datosPersona['fecha_inscripcion'] = '';
        $datosPersona['estatus'] = '';
        $datosPersona['titulos_tipo_prestamos'] = '';

        $model = false;
        $usuarioAdministrador = true;

        unset(Yii::app()->session['CapacidadPago']);
        if (
            Yii::app()->user->checkAccess('usuario_asociado') &&
            !Yii::app()->user->checkAccess('usuario_administrador')
        ) {
            $model = Asociado::model()->find(
                'cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc',
                [':cedula' => CrugeUserI::model()->findByPk(Yii::app()->user->id)->cedula]
            );
            $usuarioAdministrador = false;
        }
        if (isset($_POST['idasociado']) && $_POST['idasociado'] != 0 && is_numeric($_POST['idasociado'])) {
            $model = Asociado::model()->findByPk($_POST['idasociado']);
        }
        if (isset($_POST['cedula']) && is_numeric($_POST['cedula'])) {
            if (strlen($_POST['cedula']) <= 9) {
                $model = Asociado::model()->find(
                    'cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc',
                    [':cedula' => $_POST['cedula']]
                );
            }
        }

        if ($model) {
            $modelCreditosActivos = ReporteCreditos::model()->find('idasociado=:idasociado AND id_estatus_credito=1', [
                ':idasociado' => $model->idasociado
            ]);

            if (!$modelCreditosActivos) {
                $datosPersona['error'] = 0;

                $sueldo = $model->utltimoSueldoPorcentajeAporte($model->idasociado);
                $modelPorcentajeAporte = PorcentajeDescuentoAsociadoPatrono::model()->find(
                    'idasociado=:idasociado AND actual = true',
                    [':idasociado' => $model->idasociado]
                );
                if ($modelPorcentajeAporte) {
                    $porcentaje = $modelPorcentajeAporte->idPorcentajeAsociado->descripcion;
                } else {
                    $porcentaje = 10;
                }

                $datosPersona['nombres_apellidos'] = $model->nombre . ' ' . $model->apellidos;
                $datosPersona['empresa'] = $model->lugartrabajo0 ? $model->lugartrabajo0->descripcion : '';
                $datosPersona['unidad'] = $model->unidad ? $model->unidad->descripcion : '';
                $datosPersona['sueldo'] = number_format($sueldo, 2, ',', '.');
                $datosPersona['porcentaje'] = $porcentaje . '%';
                $datosPersona['fecha_inscripcion'] = $model->fechaingreso;
                $datosPersona['estatus'] = $model->blnborrado == '1' ? 'Inacivo' : 'Activo';
                $datosPersona['numero_cuenta'] = $model->cuenta_bancaria;
                $datosPersona['idasociado'] = $model->idasociado;

                $datosPersona['porcentaje_sueldo'] = number_format($sueldo * 0.33, 2, ',', '.');

                //verificacion que el tipo de credito se pueda refinanciar o reestructurar
                $datosPersona['tipo_operacion'] = "<option value=''>Seleccione</option>";

                $modelTpC = TipoCredito::model()->FindBySql(
                    'SELECT tc.refinanciamiento, tc.reestructuracion 
                                                                    FROM prestamos.credito as c
                                                                    JOIN  prestamos.tipo_credito as tc ON tc.id = c.id_tipo_credito
                                                                    WHERE (tc.refinanciamiento is true OR  tc.reestructuracion is true) AND idasociado =:idasociado
                                                                    ORDER BY tc.refinanciamiento desc , tc.reestructuracion desc',
                    [':idasociado' => (int) $model->idasociado]
                );
                if ($modelTpC) {
                    if ($modelTpC->refinanciamiento) {
                        $datosPersona['tipo_operacion'] .= "<option value='1'>Refinanciamiento</option>";
                    }

                    if ($modelTpC->reestructuracion) {
                        $datosPersona['tipo_operacion'] .= "<option value='2'>Reestructuración de deuda</option>";
                    }
                }

                $modelLiquidacion = EstatusLiquidacion::model()
                    ->with('idLiquidacion')
                    ->find('idasociado=:idasociado AND actual = true AND id_estatus_liquidacion !=3', [
                        ':idasociado' => $model->idasociado
                    ]);
                if ($modelLiquidacion) {
                    $datosPersona['error'] = 1;
                    $datosPersona['mensajeError'] =
                        '<span class="help-inline error">Usted posee una SOLICITUD de  liquidación' .
                        ($modelLiquidacion->id_estatus_liquidacion != 1
                            ? ' "' . $modelLiquidacion->idEstatusLiquidacion->nombre_estatus . '"'
                            : '') .
                        ', realizada el día ' .
                        date('d-m-Y', strtotime($modelLiquidacion->fecha_registro)) .
                        '</span></br>';
                }
                //buscar los titulos generales de los tipos de prestamos, que tengan asociado un tipo
                if ($usuarioAdministrador) {
                    $modelCategoria = TituloTipoCredito::model()
                        ->with('tiposCreditos')
                        ->findAll(' publicar_credito_administrador = TRUE AND blnborrado = false ');
                } else {
                    $modelCategoria = TituloTipoCredito::model()
                        ->with('tiposCreditos')
                        ->findAll(' publicar = TRUE AND blnborrado = false ');
                }

                if ($modelCategoria) {
                    foreach ($modelCategoria as $key => $value) {
                        $tipoCredito = [];
                        $mostar = false;
                        foreach ($value->tiposCreditos as $keyTipo => $valueTipo) {
                            if (!$valueTipo->publicar_tienda_virtual) {
                                //                                        $tipoCredito = TipoCredito::model()->validarTipoCreditoAdministrador($valueTipo, $tipoCredito = array(), $model);
                                //                                        if($tipoCredito['mensaje']=='')
                                $mostar = true;
                            }
                            if ($usuarioAdministrador && $valueTipo->publicar_credito_administrador) {
                                $mostar = true;
                            }
                        }
                        unset($tipoCredito);

                        if ($mostar) {
                            $datosPersona['titulos_tipo_prestamos'] .=
                                '<option value="' . $value->id . '">' . $value->nombre_titulo . '</option>';
                        }
                    }
                }
            } else {
                $datosPersona['mensajeError'] =
                    '<span class="help-inline error">La cédula suministrada posee una solicitud de préstamo activa.</span>';
            }
        } else {
            $datosPersona['mensajeError'] =
                '<span class="help-inline error">La cédula suministrada no se encuentra registrada.</span>';
        }

        echo CJSON::encode($datosPersona);
    }

    public function actionDatosPersonales()
    {
        $datosPersona = [];
        $datosPersona['error'] = 1;
        $datosPersona['nombres_apellidos'] = '';
        $datosPersona['empresa'] = '';
        $datosPersona['unidad'] = '';
        $datosPersona['sueldo'] = '';
        $datosPersona['porcentaje_sueldo'] = '';
        $datosPersona['porcentaje'] = '';
        $datosPersona['fecha_inscripcion'] = '';
        $datosPersona['estatus'] = '';
        $datosPersona['titulos_tipo_prestamos'] = '';
        $model = false;
        $usuarioAdministrador = true;
        if (isset($_POST['cedula']) && is_numeric($_POST['cedula'])) {
            if (strlen($_POST['cedula']) <= 9) {
                $model = Asociado::model()->find(
                    'cedula=:cedula AND blnborrado =false AND id_estatus in(1,4) ORDER BY idasociado desc',
                    [':cedula' => $_POST['cedula']]
                );
            }
        }

        if ($model) {
            if ($model->id_estatus != 2 || $model->id_estatus != 5) {
                $datosPersona['error'] = 0;
            } else {
                $datosPersona['mensajeError'] =
                    '<span class="help-inline error">La cédula suministrada esta <b>"' .
                    $model->idEstatus->nombre_estatus .
                    '"</b>.</span>';
            }

            $sueldo = $model->utltimoSueldoPorcentajeAporte($model->idasociado);
            $modelPorcentajeAporte = PorcentajeDescuentoAsociadoPatrono::model()->find(
                'idasociado=:idasociado AND actual = true',
                [':idasociado' => $model->idasociado]
            );
            if ($modelPorcentajeAporte) {
                $porcentaje = $modelPorcentajeAporte->idPorcentajeAsociado->descripcion;
            } else {
                $porcentaje = 10;
            }

            $datosPersona['nombres_apellidos'] = $model->nombre . ' ' . $model->apellidos;
            $datosPersona['empresa'] = $model->lugartrabajo0 ? $model->lugartrabajo0->descripcion : '';
            $datosPersona['unidad'] = $model->unidad ? $model->unidad->descripcion : '';
            $datosPersona['sueldo'] = number_format($sueldo, 2, ',', '.');
            $datosPersona['porcentaje'] = $porcentaje . '%';
            $datosPersona['fecha_inscripcion'] = $model->fechaingreso;
            $datosPersona['estatus'] = $model->blnborrado == '1' ? 'Inacivo' : 'Activo';
            $datosPersona['numero_cuenta'] = $model->cuenta_bancaria;

            $datosPersona['porcentaje_sueldo'] = number_format($sueldo * 0.33, 2, ',', '.');

            $modelLiquidacion = EstatusLiquidacion::model()
                ->with('idLiquidacion')
                ->find('idasociado=:idasociado AND actual = true AND id_estatus_liquidacion !=3', [
                    ':idasociado' => $model->idasociado
                ]);
            if ($modelLiquidacion) {
                $datosPersona['error'] = 1;
                $datosPersona['mensajeError'] =
                    '<span class="help-inline error">El asociado posee una SOLICITUD de  liquidación' .
                    ($modelLiquidacion->id_estatus_liquidacion != 1
                        ? ' "' . $modelLiquidacion->idEstatusLiquidacion->nombre_estatus . '"'
                        : '') .
                    ', realizada el día ' .
                    date('d-m-Y', strtotime($modelLiquidacion->fecha_registro)) .
                    '</span></br>';
            }
        } else {
            $datosPersona['mensajeError'] =
                '<span class="help-inline error">La cédula suministrada no se encuentra registrada.</span>';
        }
        echo CJSON::encode($datosPersona);
    }

    public function actionDatosPersonalesAbonoPrestamos()
    {
        $datosPersona = [];
        $datosPersona['error'] = 1;
        $datosPersona['nombres_apellidos'] = '';
        $datosPersona['empresa'] = '';
        $datosPersona['unidad'] = '';
        $datosPersona['sueldo'] = '';
        $datosPersona['porcentaje_sueldo'] = '';
        $datosPersona['porcentaje'] = '';
        $datosPersona['fecha_inscripcion'] = '';
        $datosPersona['estatus'] = '';
        $datosPersona['titulos_tipo_prestamos'] = '';
        $model = false;
        unset(Yii::app()->session['CapacidadPago']);
        if (
            Yii::app()->user->checkAccess('usuario_asociado') &&
            !Yii::app()->user->checkAccess('usuario_administrador')
        ) {
            $model = Asociado::model()->find(
                'cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc',
                [':cedula' => CrugeUserI::model()->findByPk(Yii::app()->user->id)->cedula]
            );
        }
        if (isset($_POST['idasociado']) && $_POST['idasociado'] != 0 && is_numeric($_POST['idasociado'])) {
            $model = Asociado::model()->findByPk($_POST['idasociado']);
        }
        if (isset($_POST['cedula']) && is_numeric($_POST['cedula'])) {
            if (strlen($_POST['cedula']) <= 9) {
                $model = Asociado::model()->find(
                    'cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc',
                    [':cedula' => $_POST['cedula']]
                );
            }
        }

        if ($model) {
            // $modelConfDiasPago=ConfCreditoAbono::model()->find('id_tipo_nomina=:id_tipo_nomina AND blnborrado= false',
            //     [':id_tipo_nomina'=>$model->getIdTipoNomina()]);
            // if($modelConfDiasPago){

            //     if($modelConfDiasPago->diasHabilesPagoAdministrador()==0){
            $modelCreditosActivos = ReporteCreditos::model()->find(
                'idasociado=:idasociado AND id_estatus_credito IN (2,4)',
                [':idasociado' => $model->idasociado]
            );

            if ($modelCreditosActivos) {
                $datosPersona['error'] = 0;

                $sueldo = $model->utltimoSueldoPorcentajeAporte($model->idasociado);
                $modelPorcentajeAporte = PorcentajeDescuentoAsociadoPatrono::model()->find(
                    'idasociado=:idasociado AND actual = true',
                    [':idasociado' => $model->idasociado]
                );
                if ($modelPorcentajeAporte) {
                    $porcentaje = $modelPorcentajeAporte->idPorcentajeAsociado->descripcion;
                } else {
                    $porcentaje = 10;
                }

                $datosPersona['nombres_apellidos'] = $model->nombre . ' ' . $model->apellidos;
                $datosPersona['empresa'] = $model->lugartrabajo0 ? $model->lugartrabajo0->descripcion : '';
                $datosPersona['unidad'] = $model->unidad ? $model->unidad->descripcion : '';
                $datosPersona['sueldo'] = number_format($sueldo, 2, ',', '.');
                $datosPersona['porcentaje'] = $porcentaje . '%';
                $datosPersona['fecha_inscripcion'] = $model->fechaingreso;
                $datosPersona['estatus'] = $model->blnborrado == '1' ? 'Inacivo' : 'Activo';
                $datosPersona['numero_cuenta'] = $model->cuenta_bancaria;

                $datosPersona['porcentaje_sueldo'] = number_format($sueldo * 0.33, 2, ',', '.');

                $modelLiquidacion = EstatusLiquidacion::model()
                    ->with('idLiquidacion')
                    ->find('idasociado=:idasociado AND actual = true AND id_estatus_liquidacion !=3', [
                        ':idasociado' => $model->idasociado
                    ]);
                if ($modelLiquidacion) {
                    $datosPersona['error'] = 1;
                    $datosPersona['mensajeError'] =
                        '<span class="help-inline error">Usted posee una SOLICITUD de  liquidación' .
                        ($modelLiquidacion->id_estatus_liquidacion != 1
                            ? ' "' . $modelLiquidacion->idEstatusLiquidacion->nombre_estatus . '"'
                            : '') .
                        ', realizada el día ' .
                        date('d-m-Y', strtotime($modelLiquidacion->fecha_registro)) .
                        '</span></br>';
                }
                //buscar los titulos generales de los tipos de prestamos, que tengan asociado un tipo
                $modelCategoria = TituloTipoCredito::model()
                    ->with('tiposCreditos')
                    ->findAll(' publicar = TRUE AND blnborrado = false ');

                if ($modelCategoria) {
                    foreach ($modelCategoria as $key => $value) {
                        $tipoCredito = [];
                        $mostar = false;
                        foreach ($value->tiposCreditos as $keyTipo => $valueTipo) {
                            if (!$valueTipo->publicar_tienda_virtual) {
                                //                                        $tipoCredito = TipoCredito::model()->validarTipoCreditoAdministrador($valueTipo, $tipoCredito = array(), $model);
                                //                                        if($tipoCredito['mensaje']=='')
                                $mostar = true;
                            }
                        }
                        unset($tipoCredito);

                        if ($mostar) {
                            $datosPersona['titulos_tipo_prestamos'] .=
                                '<option value="' . $value->id . '">' . $value->nombre_titulo . '</option>';
                        }
                    }
                }
            } else {
                $datosPersona['mensajeError'] =
                    '<span class="help-inline error">La cédula suministrada no posee una préstamo activo.</span>';
            }
            // }
            // else{
            //     $datosPersona['mensajeError'] = '<span class="help-inline error">No hay disponibilidad para reportar el abono a préstamo.</span>';
            // }
            // }else{
            //         $datosPersona['mensajeError'] = '<span class="help-inline error">no se ha configurado los dias limites para el registro de abonos a los prestamos.</span>';
            //     }
        } else {
            $datosPersona['mensajeError'] =
                '<span class="help-inline error">La cédula suministrada no se encuentra registrada.</span>';
        }

        echo CJSON::encode($datosPersona);
    }

    public function actionBusquedaTipoCreditos()
    {
        $data = [];
        $model = null;
        $asociado = false;
        unset(Yii::app()->session['CapacidadPago']);
        $publicar = 'publicar_credito_administrador';
        if (
            Yii::app()->user->checkAccess('usuario_asociado') &&
            !Yii::app()->user->checkAccess('usuario_administrador')
        ) {
            $model = Asociado::model()->find(
                'cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc',
                [':cedula' => CrugeUserI::model()->findByPk(Yii::app()->user->id)->cedula]
            );
            $asociado = true;
            $publicar = 'publicar';
        }
        if (isset($_POST['idasociado']) && $_POST['idasociado'] != 0 && is_numeric($_POST['idasociado'])) {
            $model = Asociado::model()->findByPk($_POST['idasociado']);
        }
        if (isset($_POST['cedula']) && is_numeric($_POST['cedula'])) {
            if (strlen($_POST['cedula']) <= 9) {
                $model = Asociado::model()->find(
                    'cedula=:cedula AND blnborrado = false AND id_estatus in(1,4) ORDER BY idasociado desc',
                    [':cedula' => $_POST['cedula']]
                );
            }
        }
        echo "<option value=''>... Seleccione...</option>";
        if ($model && isset($_POST['id_titulo_tipo_credito']) && $_POST['id_titulo_tipo_credito'] != '') {
            $modelCategoria = TipoCredito::model()->FindAll(
                $publicar . '= TRUE AND blnborrado = false AND id_titulo_tipo_credito=:id_titulo_tipo_credito',
                [':id_titulo_tipo_credito' => (int) $_POST['id_titulo_tipo_credito']]
            );

            if ($modelCategoria) {
                foreach ($modelCategoria as $key => $value) {
                    if (!$asociado) {
                        $tipoCredito = TipoCredito::model()->validarTipoCreditoAdministrador(
                            $value,
                            $tipoCredito = [],
                            $model
                        );
                        //if($tipoCredito['mensaje']=='')
                        echo CHtml::tag('option', ['value' => $value->id], CHtml::encode($value->descripcion), true);
                    } else {
                        echo CHtml::tag('option', ['value' => $value->id], CHtml::encode($value->descripcion), true);
                    }
                }
            }
        }
    }

    public function actionListarTipoCreditos()
    {
        echo "<option value=''>... Seleccione...</option>";
        if (isset($_POST['id_titulo_tipo_credito']) && $_POST['id_titulo_tipo_credito'] != '') {
            $modelCategoria = TipoCredito::model()->FindAll(
                'publicar = TRUE AND blnborrado = false AND id_titulo_tipo_credito=:id_titulo_tipo_credito',
                [':id_titulo_tipo_credito' => (int) $_POST['id_titulo_tipo_credito']]
            );

            if ($modelCategoria) {
                foreach ($modelCategoria as $key => $value) {
                    echo CHtml::tag('option', ['value' => $value->id], CHtml::encode($value->descripcion), true);
                }
            }
        }
    }

    public function actionBusquedaTipoServicio()
    {
        echo "<option value=''>-- TIPO DE SERVICIO --</option>";
        if (isset($_POST['idbanco']) && $_POST['idbanco'] != '') {
            $model = TipoServicio::model()->findAll(
                'id not in(SELECT id FROM configuracion.banco_tipo_servicio WHERE idbanco=:idbanco)',
                [':idbanco' => (int) $_POST['idbanco']]
            );

            if ($model) {
                foreach ($model as $key => $value) {
                    echo CHtml::tag('option', ['value' => $value->id], CHtml::encode($value->nombre), true);
                }
            }
        }
    }

    public function actionBusquedaBancoTipoServicio()
    {
        echo "<option value=''>-- TIPO DE SERVICIO --</option>";
        if (isset($_POST['idbanco']) && $_POST['idbanco'] != '') {
            $sql = "SELECT a.id, concat_ws(' ',nombre,codigo_servicio) as codigo_servicio
                          FROM configuracion.banco_tipo_servicio as a
                          JOIN configuracion.tipo_servicio as b ON a.id_tipo_servicio =b.id
                          WHERE idbanco=:idbanco";
            $model = BancoTipoServicio::model()->findAllBySql($sql, [':idbanco' => (int) $_POST['idbanco']]);

            if ($model) {
                foreach ($model as $key => $value) {
                    echo CHtml::tag('option', ['value' => $value->id], CHtml::encode($value->codigo_servicio), true);
                }
            }
        }
    }

    public function actionBusquedaVariableBanco()
    {
        echo "<option value=''>-- VARIABLE --</option>";
        if (isset($_POST['idbanco']) && $_POST['idbanco'] != '') {
            $model = ConfVaribaleBanco::model()->findAll();

            if ($model) {
                foreach ($model as $key => $value) {
                    echo CHtml::tag('option', ['value' => $value->id], CHtml::encode($value->nombre_variable), true);
                }
            }
        }
    }

    public function actionBusquedaParametrosBancoTipoServicio()
    {
        echo "<option value=''>-- TIPO DE SERVICIO --</option>";
        if (isset($_POST['idParametro']) && $_POST['idParametro'] != '') {
            $model = EstructuraArchivoBanco::model()->findAll(
                'id_param_bancos=:id_param_bancos AND st_formato_banco IS TRUE',
                [':id_param_bancos' => (int) $_POST['idParametro']]
            );

            if ($model) {
                foreach ($model as $key => $value) {
                    $servicio =
                        $value->idBancoTipoServicio->idTipoServicio->nombre .
                        ' (' .
                        $value->idBancoTipoServicio->codigo_servicio .
                        ')';
                    echo CHtml::tag(
                        'option',
                        ['value' => $value->id_banco_tipo_servicio],
                        CHtml::encode($servicio),
                        true
                    );
                }
            }
        }
    }

    public function actionBusquedaTiposServiciosBanco()
    {
        echo "<option value=''>-- TIPO DE SERVICIO --</option>";
        if (isset($_POST['idParametro']) && $_POST['idParametro'] != '') {
            $model = BancoTipoServicio::tipos($_POST['idParametro']);
            if ($model) {
                foreach ($model as $value) {
                    $servicio = "{$value->nombre} ({$value->codigo_servicio})";
                    echo CHtml::tag(
                        'option',
                        [
                            'value' => $value->id
                        ],
                        CHtml::encode($servicio),
                        true
                    );
                }
            }
        }
    }

    public function actionBusquedaTiposArchivos()
    {
        echo "<option value=''>-- TIPO DE SERVICIO --</option>";
        if (isset($_POST['idParametro']) && $_POST['idParametro'] != '') {
            $model = BancoTipoArchivo::tipos($_POST['idParametro']);
            if ($model) {
                foreach ($model as $value) {
                    $servicio = "{$value->nombre} ({$value->codigo_servicio})";
                    echo CHtml::tag(
                        'option',
                        [
                            'value' => $value->id
                        ],
                        CHtml::encode($servicio),
                        true
                    );
                }
            }
        }
    }

    public function actionBusquedaEscenarios()
    {
        echo "<option value=''>-- Seleccione --</option>";

        if (empty(array_filter($_POST))) {
            return;
        }

        Yii::import('application.modules.contable.models.*', true);
        $model = ParametrosContables::getClaves($_POST);

        if (!$model) {
            return;
        }

        foreach ($model as $value) {
            echo CHtml::tag(
                'option',
                [
                    'value' => $value->id
                ],
                CHtml::encode($value->clave),
                true
            );
        }
    }

    public function actionConceptos()
    {
        $tipoAjuste = (new Warp($_POST))->get('id_tipo_ajuste');

        if ($tipoAjuste == null) {
            return;
        }

        if ($tipoAjuste == 1) {
            $data = ConceptoAjuste::getAllDeducciones();
        } elseif ($tipoAjuste == 2) {
            $data = ConceptoAjuste::getAllAsignaciones();
        }

        echo "<option value=''>Seleccione</option>";
        foreach ($data as $value => $name) {
            echo CHtml::tag('option', ['value' => $value], CHtml::encode($name), true);
        }
    }

    public function actionBusquedaProceso()
    {
        $procesos = [];

        if (empty(array_filter($_POST))) {
            return;
        }

        Yii::import('application.modules.contable.models.*', true);
        $procesos[] = "<option value=''>Seleccione</option>";
        switch ($_POST['tipo_proceso']) {
            case 1:
                $model = Unidad::model()->findAll(['condition' => 'blnborrado IS FALSE', 'order' => 'descripcion ASC']);
                foreach ($model as $value) {
                    $procesos[] = CHtml::tag(
                        'option',
                        [
                            'value' => $value->idunidad
                        ],
                        CHtml::encode($value->descripcion),
                        true
                    );
                }

                break;
            case 3:
                foreach (TipoCredito::getTiposCreditos() as $value) {
                    $procesos[] = CHtml::tag(
                        'option',
                        [
                            'value' => $value['id']
                        ],
                        CHtml::encode($value['tipo_credito']),
                        true
                    );
                }

                break;
        }
        $escenarios = [];
        $escenarios[] = "<option value=''>Seleccione</option>";
        foreach (
            ParamEscenarios::model()->findAll([
                'condition' =>
                    'id_tipo_parametro=:tipo_parametro and (select count(*) from contable.param_contables where id_escenario=t.id_escenario and conf_unidad is true) > 0',
                'order' => 'descripcion',
                'params' => [
                    'tipo_parametro' => $_POST['tipo_proceso']
                ]
            ])
            as $key => $value
        ) {
            $escenarios[] = CHtml::tag(
                'option',
                [
                    'value' => $value->id_escenario
                ],
                CHtml::encode($value->descripcion),
                true
            );
        }

        echo json_encode([
            'escenarios' => $escenarios,
            'procesos' => $procesos
        ]);
    }

    public function actionListarTipoCreditosRefinanciamiento()
    {
        $datos = [
            'error' => 1,
            'mensaje' => '',
            'tipo_credito' => "<option value=''>Seleccione</option>"
        ];

        $idasociado = isset($_POST['idasociado']) && $_POST['idasociado'] != '' ? (int) $_POST['idasociado'] : 0;

        $tipoOpcion = isset($_POST['tipoOpcion']) ? $_POST['tipoOpcion'] : 0;

        if ($idasociado > 0 && $tipoOpcion > 0) {
            $datos['error'] = 0;

            $sql = 'SELECT * FROM prestamos.credito as c
                    LEFT JOIN prestamos.tipo_credito as tc ON c.id_tipo_credito = tc.id
                    WHERE idasociado =:idasociado';

            if ($tipoOpcion == 1) {
                $sql .= ' AND tc.refinanciamiento IS TRUE';
            } else {
                $sql .= ' AND tc.reestructuracion IS TRUE';
            }

            $tiposCreditos = TipoCredito::model()->findAllBySql($sql, [':idasociado' => $idasociado]);
            $conversion_prestasmo = [];
            foreach ($tiposCreditos as $key => $value) {
                if ($tipoOpcion == 1) {
                    if ($value->refinanciamiento_conversion_tipo != '') {
                        foreach (json_decode($value->refinanciamiento_conversion_tipo, true) as $keyR => $valueR) {
                            $conversion_prestasmo[$valueR] = CHtml::tag(
                                'option',
                                ['value' => $valueR],
                                CHtml::encode(TipoCredito::model()->FindByPk($valueR)->descripcion),
                                true
                            );
                        }
                    }
                } else {
                    if ($value->reestructuracion_conversion_tipo != '') {
                        foreach (json_decode($value->reestructuracion_conversion_tipo, true) as $keyR => $valueR) {
                            $conversion_prestasmo[$valueR] = CHtml::tag(
                                'option',
                                ['value' => $valueR],
                                CHtml::encode(TipoCredito::model()->FindByPk($valueR)->descripcion),
                                true
                            );
                        }
                    }
                }
            }

            $datos['tipo_credito'] .= implode($conversion_prestasmo);
        }

        echo CJSON::encode($datos);
    }

    public function actionListadoPrestamosRoR()
    {
        $datos = [
            'error' => 1,
            'mensaje' => '',
            'creditos' => ''
        ];

        $idasociado = isset($_POST['idasociado']) && $_POST['idasociado'] != '' ? (int) $_POST['idasociado'] : 0;

        $refinanciamiento = isset($_POST['refinanciamiento']) ? $_POST['refinanciamiento'] : 0;

        $idTipoCredito = isset($_POST['idtipocredito']) ? $_POST['idtipocredito'] : 0;
        if ($idasociado > 0) {
            $creditos = Credito::getDetallesCreditos([
                'idAsociado' => $idasociado,
                'id_estatus' => 4,
                'tipo_credito' => $idTipoCredito,
                'opcion' => $refinanciamiento
            ]);

            if ($creditos) {
                $creditosActivos = [];

                foreach ($creditos as $key => $value) {
                    array_push($creditosActivos, [
                        'idcredito' => $value['idcredito'],
                        'categoria' => $value['categoria'],
                        'plazo_prestamo' => $value['plazo_prestamo'],
                        'prestamo' => 'Bs. ' . number_format($value['prestamo'], 2, ',', '.'),
                        'monto_aprobado' => 'Bs. ' . number_format($value['prestamo'], 2, ',', '.'),
                        'fecha_registro' => date('d-m-Y', strtotime($value['fecha_registro'])),
                        'cuotas_pagadas' => (int) $value['cuotas_pagadas'],
                        'deuda_actual' => 'Bs. ' . number_format($value['deuda_actual'], 2, ',', '.'),
                        'nombre_estatus_credito' => $value['nombre_estatus']
                    ]);
                }
                $datos['creditos'] = $creditosActivos;
            }
        }

        echo CJSON::encode($datos);
    }

    public function actionValidarCreditoRefinanciamiento()
    {
        $datos = [];
        $datos['error'] = 1;
        $datos['mensajeError'] = '';
        // $datos['tipo_credito'] = "<option value=''>... Seleccione...</option>";
        $idCredito = isset($_POST['idcredito']) && $_POST['idcredito'] != '' ? $_POST['idcredito'] : 0;

        $idTipoCredito = isset($_POST['idtipocredito']) && $_POST['idtipocredito'] != '' ? $_POST['idtipocredito'] : 0;

        $tipoOpcion = isset($_POST['tipoOpcion']) && $_POST['tipoOpcion'] != '' ? $_POST['tipoOpcion'] : 0;

        if ($idCredito > 0 && $idTipoCredito > 0) {
            //verificacion que el tipo de credito se pueda refinanciar o reestructurar
            $model = Credito::model()->findByPk($idCredito);

            if ($model) {
                $montoCancelado = ReporteCreditos::model()->find('idcredito=:idcredito', [':idcredito' => $model->id]);

                if ($montoCancelado) {
                    // $montoCapitalCancelado = $montoCancelado->prestamo -$montoCancelado->deuda_actual;
                    $porcentajeCancelado = round((100 * $montoCancelado->deuda_actual) / $montoCancelado->prestamo, 2);

                    //verificar que el porcentaje cancelado del prestamo sea mayor o igual al porcentaje definido en el configurados
                    if ($porcentajeCancelado == '') {
                        $porcentajeCancelado = 0;
                    }

                    if ($tipoOpcion == 1) {
                        if ($porcentajeCancelado >= $model->idTipoCredito->porcentaje_refinanciamiento) {
                            if ($model->idTipoCredito->refinanciamiento_conversion_tipo != '') {
                                $datos['error'] = 0;
                            } else {
                                $datos['mensajeError'] .=
                                    '<div class="alert alert-block alert-error"><span class="help-inline error" style="font-size: 16px;"><b>No hay tipo de conversion disponible<b></span></div>';
                            }
                        } else {
                            $datos['mensajeError'] .=
                                '<div class="alert alert-block alert-error"><span class="help-inline error" style="font-size: 16px;"><b>Ha cancelado del préstamo seleccionado el ' .
                                ($porcentajeCancelado > 0 ? $porcentajeCancelado : 0) .
                                '%, el porcentaje cancelado para poder ser refinanciado es ' .
                                $model->idTipoCredito->porcentaje_refinanciamiento .
                                '%.<b></span></div>';
                        }
                    } else {
                        if ($porcentajeCancelado >= $model->idTipoCredito->porcentaje_reestructuracion) {
                            if ($model->idTipoCredito->reestructuracion_conversion_tipo != '') {
                                $datos['error'] = 0;
                            } else {
                                $datos['mensajeError'] .=
                                    '<div class="alert alert-block alert-error"><span class="help-inline error" style="font-size: 16px;"><b>No hay tipo de conversion disponible<b></span></div>';
                            }
                        } else {
                            $datos['mensajeError'] .=
                                '<div class="alert alert-block alert-error"><span class="help-inline error" style="font-size: 16px;"><b>Ha cancelado del préstamo seleccionado el ' .
                                ($porcentajeCancelado > 0 ? $porcentajeCancelado : 0) .
                                '%, el porcentaje cancelado para poder ser reestructurar la deuda es ' .
                                $model->idTipoCredito->porcentaje_refinanciamiento .
                                '%.<b></span></div>';
                        }
                    }
                }
            }
        }

        echo CJSON::encode($datos);
    }

    public function actionVerifivarTipoDescarga()
    {
        $datos = [];
        $datos['id_tipo_descarga'] = 0;
        if (isset($_POST['id']) && $_POST['id'] != '') {
            //verificacion que el tipo de credito se pueda refinanciar o reestructurar
            $model = BancoTipoServicio::model()->FindByPk((int) $_POST['id']);
            if ($model) {
                $datos['id_tipo_descarga'] = $model->tipo_descarga;
            }
        }
        echo CJSON::encode($datos);
    }

    public function actionListarOpcionesRoR()
    {
        $datos = [];
        $datos['error'] = 1;
        $datos['mensaje'] = '';
        $datos['tipo_credito'] = "<option value=''>... SELECCIONE...</option>";

        if (isset($_POST['id_credito']) && $_POST['id_credito'] != '') {
            //verificacion que el tipo de credito se pueda refinanciar o reestructurar
            $model = Credito::model()
                ->with('idTipoCredito')
                ->Find('t.id=:id_credito', [':id_credito' => (int) $_POST['id_credito']]);
            if ($model) {
                $datos['error'] = 0;
                if ($model->idTipoCredito->refinanciamiento) {
                    $datos['tipo_credito'] .= "<option value='1'>REFINANCIAMIENTO</option>";
                }

                if ($model->idTipoCredito->reestructuracion) {
                    $datos['tipo_credito'] .= "<option value='2'>REESTRUCTURACIÓN DE DEUDA</option>";
                }
            }
        }
        echo CJSON::encode($datos);
    }

    public function actionListarNumeroPeriodosNomina()
    {
        unset($_SESSION['datos_filtrados']);

        echo "<option value=''>... Seleccione...</option>";
        if (
            isset($_POST['CreditoTablaAmortizacion']['id_tipo_nomina']) &&
            $_POST['CreditoTablaAmortizacion']['id_tipo_nomina'] != ''
        ) {
            $idUnidad = $_POST['CreditoTablaAmortizacion']['unidad'];
            $idTipoNomina = $_POST['CreditoTablaAmortizacion']['id_tipo_nomina'];
            $modelCategoria = TipoNominaPeriodo::model()
                ->with('datosPreNominaCreditos')
                ->findAll([
                    'condition' => 'id_tipo_nomina=:id_tipo_nomina AND  (id_unidad !=:id_unidad OR id_unidad is null)',
                    'params' => [':id_tipo_nomina' => (int) $idTipoNomina, ':id_unidad' => $idUnidad],
                    'order' => 'fecha_desde'
                ]);
            if ($modelCategoria) {
                foreach ($modelCategoria as $key => $value) {
                    echo CHtml::tag(
                        'option',
                        ['value' => $value->id],
                        CHtml::encode(
                            'Periodo:' .
                                $value->numero_periodo .
                                " desde:'" .
                                date('d-m-Y', strtotime($value->fecha_desde)) .
                                ($value->fecha_hasta != ''
                                    ? "' hasta:'" . date('d-m-Y', strtotime($value->fecha_hasta))
                                    : '') .
                                "'"
                        ),
                        true
                    );
                }
            }
        }
    }

    public function actionListarNumeroPeriodosNominaRezagadas()
    {
        echo "<option value=''>... Seleccione...</option>";
        if (
            isset($_POST['CreditoTablaAmortizacion']['id_tipo_nomina']) &&
            $_POST['CreditoTablaAmortizacion']['id_tipo_nomina'] != ''
        ) {
            $idUnidad = $_POST['CreditoTablaAmortizacion']['unidad'];
            $idTipoNomina = $_POST['CreditoTablaAmortizacion']['id_tipo_nomina'];
            $modelCategoria = TipoNominaPeriodo::model()
                ->with('datosPreNominaCreditos')
                ->findAll([
                    'condition' => 'id_tipo_nomina=:id_tipo_nomina AND id_unidad =:id_unidad',
                    'params' => [':id_tipo_nomina' => (int) $idTipoNomina, ':id_unidad' => $idUnidad],
                    'order' => 'fecha_desde'
                ]);
            if ($modelCategoria) {
                foreach ($modelCategoria as $key => $value) {
                    echo CHtml::tag(
                        'option',
                        ['value' => $value->id],
                        CHtml::encode(
                            'Periodo:' .
                                $value->numero_periodo .
                                " desde:'" .
                                date('d-m-Y', strtotime($value->fecha_desde)) .
                                ($value->fecha_hasta != ''
                                    ? "' hasta:'" . date('d-m-Y', strtotime($value->fecha_hasta))
                                    : '') .
                                "'"
                        ),
                        true
                    );
                }
            }
        }
    }

    public function actionVerificarPeriodoActivo()
    {
        $datos = [];
        $datos['visible'] = 1;
        $datos['visibleBotonCuotasAnuales'] = 0;
        unset($_SESSION['datos_filtrados']);

        if (
            isset($_POST['idPeriodo']) &&
            $_POST['idPeriodo'] != '' &&
            (isset($_POST['idTipoNomina']) && $_POST['idTipoNomina'] != '')
        ) {
            $idTipoNomina = $_POST['idTipoNomina'];
            $idPeriodo = $_POST['idPeriodo'];
            //Mensual
            if ($idTipoNomina != 4) {
                // $fecha = new DateTime(date('Y-m-d'));
                $peridosDescargables = ConfPreNomina::getNumeroPeriodosDescargable($idTipoNomina);

                if ($idTipoNomina == 1) {
                    $fecha = date('Y-m-d', strtotime('last day of this month'));
                } elseif ($idTipoNomina == 2) {
                    $fecha = date('Y-m') . '-15';

                    if (date('d') > 15) {
                        $fecha = date('Y-m-d', strtotime('last day of this month'));
                    }
                } else {
                    $fechaInicioSemana = date(
                        'Y-m-d',
                        strtotime(date('Y') . 'W' . str_pad(date('W', strtotime(date('Y-m-d'))), 2, '0', STR_PAD_LEFT))
                    );

                    $fecha = date('Y-m-d', strtotime($fechaInicioSemana . ' 6 day'));
                }

                $fechaNueva = date(date('Y-m-d', strtotime($peridosDescargables, strtotime($fecha))));

                if ($idTipoNomina == 2) {
                    $fechaNueva = date('Y-m', strtotime($fechaNueva)) . '-15';

                    if (date('d', strtotime($fechaNueva)) > 15) {
                        date('Y-m-d', strtotime('last day of this month', strtotime($fecha)));
                    }
                }

                $modelPeriodo = TipoNominaPeriodo::model()->find('id=:id AND fecha_hasta <=:fecha1', [
                    ':id' => $idPeriodo,
                    ':fecha1' => $fechaNueva
                ]);
                if (!$modelPeriodo) {
                    $datos['visible'] = 0;
                }

                //verificacion de las cuotas anuales
                $modelP = TipoNominaPeriodo::model()->findByPk($idPeriodo);
                if ($modelP) {
                    $modelPA = TipoNominaPeriodo::model()->find(
                        'id_tipo_nomina = 4 AND fecha_desde BETWEEN :fecha1 AND :fecha2',
                        [':fecha1' => $modelP->fecha_desde, ':fecha2' => $modelP->fecha_hasta]
                    );
                    if ($modelPA) {
                        $datos['visibleBotonCuotasAnuales'] = 1;
                    }
                }
            } else {
                $peridoActual = TipoNominaPeriodo::model()->find(
                    'id_tipo_nomina=:id_tipo_nomina AND fecha_desde <=:fecha_desde',
                    [':id_tipo_nomina' => $idTipoNomina, ':fecha_desde' => date('Y-m-d')]
                );
                if (!$peridoActual) {
                    $datos['visible'] = 0;
                }
            }
        }
        echo CJSON::encode($datos);
    }

    public function actionTipoCreditoCaracteristica()
    {
        $datosPersona = [];
        $datosPersona['error'] = 1;
        $datosPersona['nombres_apellidos'] = '';
        $datosPersona['empresa'] = '';
        $datosPersona['unidad'] = '';
        $datosPersona['sueldo'] = '';
        $datosPersona['porcentaje_sueldo'] = '';
        $datosPersona['porcentaje'] = '';
        $datosPersona['fecha_inscripcion'] = '';
        $datosPersona['estatus'] = '';

        if (isset($_POST['cedula']) && isset($_POST['cedula'])) {
            $model = Asociado::model()->find(
                'cedula=:cedula and blnborrado= false AND id_estatus in(1,4) ORDER BY idasociado desc',
                [':cedula' => $_POST['cedula']]
            );
            if ($model) {
                $datosPersona['error'] = 0;
                $datosPersona['nombres_apellidos'] = $model->nombre . ' ' . $model->apellidos;
                $datosPersona['empresa'] = $model->lugartrabajo0 ? $model->lugartrabajo0->descripcion : '';
                $datosPersona['unidad'] = $model->unidad ? $model->unidad->descripcion : '';
                $datosPersona['sueldo'] = $model->utltimoSueldo($model->idasociado);

                $datosPersona['porcentaje'] = $model->aportes ? $model->aportes->descripcion . '%' : '';
                $datosPersona['fecha_inscripcion'] = $model->fechaingreso;
                $datosPersona['estatus'] = $model->blnborrado == '1' ? 'Inacivo' : 'Activo';

                $sueldo = str_replace('.', '', $datosPersona['sueldo']);
                $sueldo = str_replace(',', '.', $sueldo);
                $datosPersona['porcentaje_sueldo'] = number_format($sueldo * 0.33, 2, ',', '.');
            }
        }

        echo CJSON::encode($datosPersona);
    }

    public function actionExportarXls()
    {
        session_start();
        $filtro = unserialize(Yii::app()->session['filtro']);
        $modelo = unserialize(Yii::app()->session['modelo']);
        $data = [];
        $result = $modelo->findAll($filtro);
        foreach ($result as $key => $faltante) {
            $data[] = $faltante->attributes;
        }
        $phpExcelPath = Yii::getPathOfAlias('ext.Excel.PHPExcel.Classes');
        $phpExcelPath2 = Yii::getPathOfAlias('application.extensions.Excel.PHPExcel.Classes.PHPExcel');
        spl_autoload_unregister(['YiiBase', 'autoload']);
        include $phpExcelPath . DIRECTORY_SEPARATOR . 'PHPExcel.php';
        include $phpExcelPath .
            DIRECTORY_SEPARATOR .
            'PHPExcel' .
            DIRECTORY_SEPARATOR .
            'Reader' .
            DIRECTORY_SEPARATOR .
            'Excel2007.php';
        include $phpExcelPath2 . DIRECTORY_SEPARATOR . 'IOFactory.php';
        spl_autoload_register(['YiiBase', 'autoload']);
        $objPHPExcel2 = new PHPExcel();
        $objPHPExcel2->getActiveSheet()->fromArray($data, null, 'A1');
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel2);
        $objWriter->setOffice2003Compatibility(true);
        header('Content-type: application/vnd.ms-excel');

        // It will be called file.xls
        header('Content-Disposition: attachment; filename="export.xlsx"');

        // Write file to the browser
        $objWriter->save('php://output');
        //$objWriter->save(Yii::app()->params['rutaErroresNominaAportes']."export.xlsx");
    }

    public function actionBuscarCuotaNoDefinida()
    {
        $datosPersona = [];
        $datosPersona['error'] = 1;
        $datosPersona['id'] = 1;
        $datosPersona['cedula'] = '';
        $datosPersona['nombre'] = '';
        $datosPersona['apellido'] = '';
        $datosPersona['unidad'] = '';
        $datosPersona['fechaingreso'] = '';
        $datosPersona['clave'] = '';
        $datosPersona['categoria'] = '';
        $datosPersona['plazo'] = '';
        $datosPersona['monto_cuota'] = '';
        $model = false;
        $usuarioAdministrador = true;
        if (isset($_POST['id']) && is_numeric($_POST['id'])) {
            $model = DatosTxtTablaAmortizacionDiferido::model()->findByPk($_POST['id']);
        }

        if ($model) {
            $modelAsociado = Asociado::model()->find('cedula=:cedula ORDER BY idasociado desc', [
                ':cedula' => $model->cedula
            ]);
            if (!$modelAsociado) {
                echo CJSON::encode($datosPersona);
                exit();
            }
            $datosPersona['error'] = 0;
            $datosPersona['id'] = $model->id;
            $datosPersona['cedula'] = $modelAsociado->cedula;
            $datosPersona['nombre'] = $modelAsociado->nombre;
            $datosPersona['apellido'] = $modelAsociado->apellidos;
            $datosPersona['unidad'] = $modelAsociado->unidad->descripcion ? $modelAsociado->unidad->descripcion : '';
            $datosPersona['fechaingreso'] = date('d-m-Y', strtotime($modelAsociado->fechaingreso));
            $datosPersona['estatus'] = isset($modelAsociado->idEstatus->nombre_estatus)
                ? $modelAsociado->idEstatus->nombre_estatus
                : '';
            $datosPersona['clave'] = $model->id_tipo_credito;
            $datosPersona['categoria'] = $model->idTipoCredito
                ? ($model->idTipoCredito->idTituloTipoCredito
                    ? $model->idTipoCredito->idTituloTipoCredito->nombre_titulo
                    : '')
                : '';
            $datosPersona['plazo'] = $model->idTipoCredito ? $model->idTipoCredito->descripcion : '';
            $datosPersona['monto_cuota'] = number_format($model->monto_cuota, 2, ',', '.');
        } else {
            $datosPersona['mensajeError'] =
                '<span class="help-inline error">La cédula suministrada no se encuentra registrada.</span>';
        }
        echo CJSON::encode($datosPersona);
    }

    public function actionBuscarCuotaExcluidas()
    {
        $datosPersona = [];
        $datosPersona['error'] = 1;
        $datosPersona['cedula'] = '';
        $datosPersona['nombre'] = '';
        $datosPersona['apellido'] = '';
        $datosPersona['unidad'] = '';
        $datosPersona['fechaingreso'] = '';
        $datosPersona['categoria'] = '';
        $datosPersona['clave'] = '';
        $datosPersona['plazo'] = '';
        $datosPersona['monto_cuota'] = '';
        $model = false;
        $usuarioAdministrador = true;
        if (isset($_POST['id']) && is_numeric($_POST['id'])) {
            $model = PreNominaTablaAmortizacion::model()->findByPk((int) $_POST['id']);
        }

        if ($model) {
            $modelAsociado = isset($model->idTablaAmortizacion->idCredito->idAsociado)
                ? $model->idTablaAmortizacion->idCredito->idAsociado
                : new Asociado();

            $datosPersona['error'] = 0;
            $datosPersona['cedula'] = $modelAsociado->cedula;
            $datosPersona['nombre'] = $modelAsociado->nombre;
            $datosPersona['apellido'] = $modelAsociado->apellidos;
            $datosPersona['unidad'] = $modelAsociado->unidad->descripcion ? $modelAsociado->unidad->descripcion : '';
            $datosPersona['fechaingreso'] = date('d-m-Y', strtotime($modelAsociado->fechaingreso));
            $datosPersona['estatus'] = isset($modelAsociado->idEstatus->nombre_estatus)
                ? $modelAsociado->idEstatus->nombre_estatus
                : '';
            $datosPersona['clave'] = $model->idTablaAmortizacion->idCredito
                ? $model->idTablaAmortizacion->idCredito->id_tipo_credito
                : '';
            $datosPersona['categoria'] = $model->idTablaAmortizacion->idCredito->idTipoCredito
                ? $model->idTablaAmortizacion->idCredito->idTipoCredito->idTituloTipoCredito->nombre_titulo
                : '';
            $datosPersona['plazo'] = $model->idTablaAmortizacion->idCredito
                ? $model->idTablaAmortizacion->idCredito->idTipoCredito->descripcion
                : '';
        } else {
            $datosPersona['mensajeError'] =
                '<span class="help-inline error">La cédula suministrada no se encuentra registrada.</span>';
        }
        echo CJSON::encode($datosPersona);
    }

    public function actionEstadoTabsPrenomina()
    {
        if (isset(Yii::app()->session['MantenerTabsPreNomina'])) {
            $segmentos = Yii::app()->session['MantenerTabsPreNomina'];
        } else {
            $segmentos = [];
        }
        $segmentos[$_POST['id']] = $_POST['estado'];

        Yii::app()->session['MantenerTabsPreNomina'] = $segmentos;
    }

    public function actionSolicitudCodigoPreinscripcion()
    {
        $resultado = [];
        $resultado['error'] = 0;
        $resultado['mensajes'] = '';
        $model = false;
        $usuarioAdministrador = true;
        Yii::app()->session['nose'] = 1;

        $model = new PreinscripcionCodigo('SolicitudCodigo');

        $model->cedula = isset($_POST['cedula']) ? $_POST['cedula'] : null;
        $model->nombre = isset($_POST['nombre']) ? $_POST['nombre'] : null;
        $model->apellidos = isset($_POST['apellidos']) ? $_POST['apellidos'] : null;
        $model->correoelectronico = isset($_POST['correoelectronico']) ? $_POST['correoelectronico'] : null;
        if ($model->validate()) {
            $pattern = '1234567890abcdefghijklmnopqrstuvwxyz';
            $max = strlen($pattern) - 1;
            for ($i = 0; $i < 7; $i++) {
                $model->codigo .= $pattern[mt_rand(0, $max)];
            }

            $model2 = PreinscripcionCodigo::model()->find(
                'cedula=:cedula AND correoelectronico=:correoelectronico AND blnborrado = false',
                [':cedula' => $model->cedula, ':correoelectronico' => $model->correoelectronico]
            );
            if ($model2) {
                $model2->codigo = $model->codigo;
                $model2->save();
            } else {
                $model->save();
            }
            CorreoElectronico::enviarCorreoAjax([
                'nombre' => $model->nombre . ' ' . $model->apellidos,
                'correo' => $model->correoelectronico,
                'asunto' => 'Verificación de cuenta',
                'mensaje' => $this->renderPartial(
                    'application.views.site.correoElectronicoSolicitudCodigo',
                    [
                        'model' => $model,
                        'empresa' => Empresa::model()->find()
                    ],
                    true
                )
            ]);
            $resultado['mensajes'] =
                '<div class="alert in alert-block fade alert-success">Se ha enviado el código de verificación a la dirección de correo <b>' .
                $model->correoelectronico .
                '</b></div>';
        } else {
            $resultado['error'] = 1;
            $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'] =
                '<div class="alert in alert-block fade alert-error">Se han encontrado los siguientes errores:<ul>' .
                $errores .
                '</ul></div>';
        }

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

    public function actionVerificacionCedulaPreinscripcion()
    {
        $resultado = [];
        $resultado['error'] = 0;
        $resultado['mensajes'] = '';
        $model = false;
        $usuarioAdministrador = true;
        $model = new Preinscripcion('SolicitudCodigo');

        $model->cedula = isset($_POST['cedula']) ? $_POST['cedula'] : null;
        if (!$model->validate(['cedula'])) {
            $resultado['error'] = 1;
            $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'] =
                '<div class="alert in alert-block fade alert-error">Se han encontrado los siguientes errores:<ul>' .
                $errores .
                '</ul></div>';
        }

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

    public function actionMontosPermitidosRetiroParcial()
    {
        $model = Asociado::model()->find('idasociado=:cedula AND id_estatus in(1,4) ORDER BY idasociado desc', [
            ':cedula' => $_POST['cedula']
        ]);
        $confRP = ConfRetiroParcial::model()->find();

        Yii::import('application.modules.aportes.models.Disponibilidad');

        $montoSolicitud = 0;
        $montoBloqueo = 0;

        if ($confRP) {
            if ($confRP->opcion_administrador == 1) {
                if ($confRP->monto_maximo_administrador != '') {
                    $montoSolicitud = $confRP->monto_maximo_administrador;
                }
            } else {
                $montoSolicitud = (new Disponibilidad([
                    'asociado' => $model->idasociado,
                    'proceso' => 2,
                    'porcentaje_disponibilidad' => $confRP->porcentaje_maximo_administrador
                ]))->formula('T.total');
            }

            if ($confRP->opcion_haberes_administrador == 1) {
                if ($confRP->monto_bloqueo_haberes_administrador != '') {
                    $montoBloqueo = $confRP->monto_bloqueo_haberes_administrador;
                }
            } else {
                if ($confRP->porcentaje_bloqueo_haberes_administrador != '') {
                    $montoBloqueo = (new Disponibilidad([
                        'asociado' => $model->idasociado,
                        'proceso' => 2,
                        'porcentaje_disponibilidad' => $confRP->porcentaje_bloqueo_haberes_administrador
                    ]))->formula('T.total');
                }
            }

            if ($montoSolicitud > 0 || $montoBloqueo > 0 || $confRP->pago_prestamo_retiro_administrador > 0) {
                echo '<div class="alert alert-success">
                    <h3>Montos permitidos para la solicitud de retiro parcial</h3>
                    <hr>
                    <div id = "montos-retiro-parcial">
                                                  <div class="row">
                                                      <div class="span3"><b>Monto bloqueo de haberes</b></div>
                                                      <div class="span2 text-right">' .
                    number_format($montoBloqueo, 2, ',', '.') .
                    ' Bs</div>
                                                  </div>
                                                  <div class="row">
                                                      <div class="span3 "><b>Monto m&aacute;ximo a solicitar:</b></div>
                                                      <div class="span2 text-right">' .
                    number_format($montoSolicitud, 2, ',', '.') .
                    ' Bs</div>
                                                  </div>
                                              </div>
                                              </div>';
            }
        }
    }

    ////////////////////////////////////////////////  AJUSTE DE HABERES ////////////////////////////////////////////////////////
    public function actionEstadoTabsNominaAjusteHaberes()
    {
        if (isset(Yii::app()->session['MantenerTabsNominaAjusteHaberes'])) {
            $segmentos = Yii::app()->session['MantenerTabsNominaAjusteHaberes'];
        } else {
            $segmentos = [];
        }
        $segmentos[$_POST['id']] = $_POST['estado'];

        Yii::app()->session['MantenerTabsNominaAjusteHaberes'] = $segmentos;
    }

    public function actionBuscarAjusteHaberesNoDefinido()
    {
        $datosPersona = [];
        $datosPersona['error'] = 1;
        $datosPersona['cedula'] = '';
        $datosPersona['nombre'] = '';
        $datosPersona['apellido'] = '';
        $datosPersona['unidad'] = '';
        $datosPersona['fechaingreso'] = '';
        $datosPersona['estatus'] = '';
        $datosPersona['id_tipo_ajuste'] = '';
        $datosPersona['monto_asociado'] = '';
        $datosPersona['monto_patrono'] = '';
        $datosPersona['id_estatus_ajuste_diferido'] = '';
        $datosPersona['observacion'] = '';
        $model = false;
        $usuarioAdministrador = true;
        if (isset($_POST['id']) && is_numeric($_POST['id'])) {
            $model = AjusteHaberesDiferido::model()->findByPk((int) $_POST['id']);
        }

        if ($model) {
            $datosPersona['error'] = 0;
            $datosPersona['cedula'] = $model->cedula;
            $datosPersona['id_tipo_ajuste'] = $model->idTipoAjuste ? $model->idTipoAjuste->descripcion : '';
            $datosPersona['monto_asociado'] = number_format($model->monto_asociado, 2, ',', '.') . ' Bs';
            $datosPersona['monto_patrono'] = number_format($model->monto_patrono, 2, ',', '.') . ' Bs';
            $datosPersona['id_estatus_ajuste_diferido'] = $model->idEstatusAjusteHaberes
                ? $model->idEstatusAjusteHaberes->descripcion
                : '';
            $datosPersona['observacion'] = $model->observacion;

            $modelAsociado = Asociado::model()->find('cedula=:cedula ORDER BY idasociado desc', [
                ':cedula' => $model->cedula
            ]);
            if ($modelAsociado) {
                $datosPersona['nombre'] = $modelAsociado->nombre;
                $datosPersona['apellido'] = $modelAsociado->apellidos;
                $datosPersona['unidad'] = $modelAsociado->unidad->descripcion
                    ? $modelAsociado->unidad->descripcion
                    : '';
                $datosPersona['fechaingreso'] = date('d-m-Y', strtotime($modelAsociado->fechaingreso));
                $datosPersona['estatus'] = isset($modelAsociado->idEstatus->nombre_estatus)
                    ? $modelAsociado->idEstatus->nombre_estatus
                    : '';
            }
        } else {
            $datosPersona['mensajeError'] =
                '<span class="help-inline error">La cédula suministrada no se encuentra registrado.</span>';
        }
        echo CJSON::encode($datosPersona);
    }

    //////////////////////////////////////////////// FIN AJUSTE DE HABERES ////////////////////////////////////////////////////////

    //########################################################  PROVEEDORES ########################################################

    public function actionDatosProveedores()
    {
        $datosPersona = [];
        $datosPersona['error'] = 1;
        $datosPersona['razon_social'] = '';
        $datosPersona['bancos'] = '';
        $model = false;

        $id_tipo_persona =
            isset($_POST['id_tipo_persona']) && is_numeric($_POST['id_tipo_persona'])
                ? $_POST['id_tipo_persona']
                : null;
        $id_tipo_orden =
            isset($_POST['id_tipo_orden']) && is_numeric($_POST['id_tipo_orden']) ? $_POST['id_tipo_orden'] : null;
        $cedula = isset($_POST['cedula']) && is_numeric($_POST['cedula']) ? $_POST['cedula'] : null;

        if ($id_tipo_orden == 1) {
            $model = Proveedor::model()->find('id_tipo_persona=:id_tipo_persona AND rif=:rif', [
                ':id_tipo_persona' => $id_tipo_persona,
                ':rif' => $cedula
            ]);
        } elseif ($id_tipo_orden == 2) {
            $model = Asociado::model()->find('cedula=:cedula AND id_estatus NOT IN (3,5)', [':cedula' => $cedula]);
        }

        if ($model) {
            $datosPersona['error'] = 0;
            if ($id_tipo_orden == 1) {
                $datosPersona['razon_social'] = $model->razon_social;
                foreach ($model->proveedorCuentaBancos as $key => $value) {
                    $descripcion =
                        $value->idBanco->descripcion .
                        '  ' .
                        ($value->cuenta_corriente == 1 ? 'Cuenta Corriente' : 'Cuenta de Ahorro') .
                        '  ' .
                        $value->cuenta_bancaria;
                    $datosPersona['bancos'] .= '<option value="' . $value->id . '">' . $descripcion . '</option>';
                }
            } elseif ($id_tipo_orden == 2) {
                $datosPersona['razon_social'] = $model->nombre . ' ' . $model->apellidos;
                foreach ($model->cuentas as $key => $value) {
                    $descripcion =
                        $value->idBanco->descripcion .
                        '  ' .
                        ($value->cuenta_corriente == 1 ? 'Cuenta Corriente' : 'Cuenta de Ahorro') .
                        '  ' .
                        $value->cuenta_bancaria;
                    $datosPersona['bancos'] .= '<option value="' . $value->id . '">' . $descripcion . '</option>';
                }
            }
        } else {
            if ($id_tipo_orden == 1) {
                $datosPersona['mensajeError'] =
                    '<span class="help-inline error">El proveedor no se encuentra registrada.</span>';
            } elseif ($id_tipo_orden == 2) {
                $datosPersona['mensajeError'] =
                    '<span class="help-inline error">La cédula suministrada no se encuentra registrada.</span>';
            }
        }
        echo CJSON::encode($datosPersona);
    }

    //####################################################  FIN PROVEEDORES ########################################################
    //####################################################  Nomina de Aporte ########################################################
    public function actionBuscarAporteNoDefinido()
    {
        $datosPersona = [
            'error' => 1,
            'id' => 1,
            'cedula' => '',
            'nombre' => '',
            'apellido' => '',
            'unidad' => '',
            'fechaingreso' => '',
            'estatus' => '',
            'id_estatus_aod' => '',
            'clase' => ''
        ];

        $model = false;
        $usuarioAdministrador = true;

        if (isset($_POST['id']) && is_numeric($_POST['id'])) {
            $model = AporteOrdinarioDiferido::model()->findByPk($_POST['id']);
        }

        if ($model) {
            $modelAsociado = Asociado::model()->find('cedula=:cedula ORDER BY idasociado desc', [
                ':cedula' => $model->cedula
            ]);
            if (!$modelAsociado) {
                $datosPersona['cedula'] = $model->cedula;
                echo CJSON::encode($datosPersona);
                exit();
            }
            $datosPersona['error'] = 0;
            $datosPersona['id'] = $model->id;
            $datosPersona['cedula'] = $modelAsociado->cedula;
            $datosPersona['nombre'] = $modelAsociado->nombre;
            $datosPersona['apellido'] = $modelAsociado->apellidos;
            $datosPersona['unidad'] = $modelAsociado->unidad->descripcion ? $modelAsociado->unidad->descripcion : '';
            $datosPersona['fechaingreso'] = date('d-m-Y', strtotime($modelAsociado->fechaingreso));
            $datosPersona['estatus'] = isset($modelAsociado->idEstatus->nombre_estatus)
                ? $modelAsociado->idEstatus->nombre_estatus
                : '';
            $datosPersona['id_estatus_aod'] = $model->id_estatus_aod;
            $datosPersona['clase'] = $modelAsociado->colorEstatus();
        } else {
            $datosPersona['mensajeError'] =
                '<span class="help-inline error">La cédula suministrada no se encuentra registrada.</span>';
        }
        echo CJSON::encode($datosPersona);
    }

    //####################################################  FIN Nomina de Aporte ########################################################
    //####################################################  Aporte Voluntario    ########################################################

    public function actionDatosRetiroAporteVoluntario()
    {
        $datos = [
            'total_aporte' => '',
            'monto_capitalizado' => '',
            'monto_retiro' => '',
            'monto_disponible' => '',
            'cuenta_banco' => '',
            'mensaje' => ''
        ];

        $id = isset($_POST['id']) ? (int) $_POST['id'] : null;

        $model = Asociado::model()->find(
            'idAsociado=:idasociado AND blnborrado =false AND id_estatus in(1,4) ORDER BY idasociado desc',
            [':idasociado' => $id]
        );

        if ($model) {
            $aportes = AporteVoluntario::model()->getTotalAporte($id);

            if ($aportes) {
                $data = CHtml::listData(
                    AsociadoCuentaBanco::model()
                        ->with(['idBanco'])
                        ->together(true)
                        ->findAll([
                            'select' =>
                                "t.id AS id, \"idBanco\".descripcion ||''|| (CASE WHEN cuenta_corriente = true THEN 'Cuenta Corriente' ELSE 'Cuenta de Ahorro' END)||' '|| \"t\".cuenta_bancaria as cuenta_bancaria",
                            'condition' => 'idasociado=:idasociado AND t.blnborrado = false',
                            'params' => [':idasociado' => $model->idasociado]
                        ]),
                    'id',
                    'cuenta_bancaria'
                );

                $datos_bancarios[] = "<option value=''>-- SELECCIONE EL NUMERO DE CUENTA BANCARIO --</option>";

                foreach ($data as $value => $name) {
                    array_push($datos_bancarios, CHtml::tag('option', ['value' => $value], CHtml::encode($name), true));
                }

                $mensaje = '';

                $porcentaje = 1;

                $modelConf = ConfAporteVoluntario::model()->find();

                if ($modelConf) {
                    $porcentaje_retiro =
                        isset($_POST['asc']) && $_POST['asc'] == 1
                            ? $modelConf->porcentaje_retiro_asc
                            : $modelConf->porcentaje_retiro_adm;

                    $tiempo_inscripcion =
                        isset($_POST['asc']) && $_POST['asc'] == 1
                            ? $modelConf->tiempo_inscripcion_asc
                            : $modelConf->tiempo_inscripcion_adm;

                    $tiempo_solicitud =
                        isset($_POST['asc']) && $_POST['asc'] == 1
                            ? $modelConf->tiempo_solicitud_asc
                            : $modelConf->tiempo_solicitud_adm;

                    $id_estatus_solicitud =
                        isset($_POST['asc']) && $_POST['asc'] == 1
                            ? $modelConf->id_estatus_solicitud_asc
                            : $modelConf->id_estatus_solicitud_adm;

                    $tiempo_solicitud =
                        isset($_POST['asc']) && $_POST['asc'] == 1
                            ? $modelConf->tiempo_solicitud_asc
                            : $modelConf->tiempo_solicitud_adm;

                    if ($porcentaje_retiro != '') {
                        $porcentaje = $porcentaje_retiro / 100;
                    }

                    //###################### Tiempo de registro en la caja ##########################
                    if ($tiempo_inscripcion > 0) {
                        if ($tiempo_inscripcion > $model->validacionTiempoAsociado()) {
                            $valido = false;
                            $mensaje .=
                                '<b>No tiene el tiempo de ' .
                                $tiempo_inscripcion .
                                ' meses, necesario para optar para el retiro de aporte voluntario...</b><br/> ';
                        }
                    }

                    //###################### Tiempo de registro en la caja ##########################
                    if ($tiempo_solicitud > 0) {
                        $modelUltimoSolicitud = EstatusAporteVoluntario::model()
                            ->with('idAporteVoluntario')
                            ->find([
                                'condition' =>
                                    'id_asociado=:id_asociado AND id_tipo_aporte_voluntario = 2 AND id_status_av=:id_status_av',
                                'params' => [
                                    ':id_asociado' => $model->idasociado,
                                    ':id_status_av' => $id_estatus_solicitud
                                ],
                                'order' => 't.id_aporte_voluntario desc'
                            ]);

                        if ($modelUltimoSolicitud) {
                            if ($tiempo_solicitud > $modelUltimoSolicitud->validacionTiempoSolicitud()) {
                                $valido = false;
                                $mensaje .=
                                    '<b>No tiene el tiempo de ' .
                                    $tiempo_solicitud .
                                    ' meses, necesario para optar para el retiro de aporte voluntario...</b><br/> ';
                            }
                        }
                    }
                }

                if ($mensaje != '') {
                    $mensaje = '<div class="alert alert-error">' . $mensaje . '</div>';
                }

                $datos = [
                    'total_aporte' => $aportes['monto_capitalizado'] + $aportes['monto_retiro'],

                    'monto_capitalizado' => $aportes['monto_capitalizado'],

                    'monto_retiro' => number_format($aportes['monto_retiro'], 2, '.', ''),

                    'monto_disponible' => $aportes['monto_capitalizado'] * $porcentaje,

                    'cuenta_banco' => $datos_bancarios,

                    'mensaje' => $mensaje
                ];
            }
        }

        echo CJSON::encode($datos);
    }

    //####################################################  FIN Aporte Voluntario ########################################################
}
