<?php namespace App\Http\Controllers; 

use App\Custom\SQLConnection; 
use App\Custom\Misc;
use App\Custom\Mailer;
use Request;
use Session;
use DateTime;
use Illuminate\Support\Facades\Input;
use DB;
use stdClass;
use Response;
use App\Custom\DashboardJSON;

class IVOldController extends Controller{
    /// FUNCION QUE DEVUELVE LA VISTA DE SOLICITUD
    public function nuevaSolicitud(){
        $cliente = Session::get('usuario')->cliente['client_id'];
        //----
        $id_tipo_informe = !empty(Request::input('id_tipo_informe')) ? Request::input('id_tipo_informe') : NULL;
        //----
        $familias = SQLConnection::backendStoreProcedure('LN_familias_', array('inquirovitae', null, null, $cliente, null, 1, null), 'select');
		$prod = SQLConnection::backendStoreProcedure('IV_panel_control', array('productos_backend', NULL, Session::get('usuario')->user_id, env('IV_PRODUCTO')), 'select');
        //----
		if ( empty(Session::get('modo')) ){
			$modo = 0;
			Session::put('modo',$modo);
		}
		//----
        return view('iv/iv_vieja_busqueda')->with(compact(['prod','familias','id_tipo_informe']));
    }

    /// FUNCION ENCARGADA DE REDERIGIR AL USUARIO DEPENDIENDO DEL PRODUCTO ELEGIDO
    public function ivProductoOrg(){
        if ( isset($_POST['id_tipo_informe']) && $_POST['id_tipo_informe'] != ''){
            $id_tipo_informe = Request::input('id_tipo_informe');
            //----------
            $paises = SQLConnection::backendStoreProcedure('backend_obtener_paises',array(),'select');
            //----------
            if ( $id_tipo_informe == 'otros'){
				return redirect('/iv/iv-nueva-solicitud');
            } else {
				$tipo_busqueda = Request::input('pais_busqueda');
				if ( $tipo_busqueda == 'AR' ){
					$otro_busqueda = 0;
				} else {
					$otro_busqueda = 1;
				}
                return view('iv/new/iv_buscador')->with(compact('id_tipo_informe','paises','otro_busqueda'));
            }
        }
    }

	/// FUNCION ENCARGADA DE REDERIGIR AL USUARIO DEPENDIENDO DEL PRODUCTO ELEGIDO
    public function ivProducto(){
        if ( isset($_POST['pais_busqueda']) && $_POST['pais_busqueda'] != ''){
            $paises = SQLConnection::backendStoreProcedure('backend_obtener_paises',array(),'select');
			// SE BORRA EL ARCHIVO QUE ESTA ALMACENADO EN EL ESPACIO TEMPORARIO
			self::ivDeleteFile();
            //----------
			$tipo_busqueda = Request::input('pais_busqueda');
			if ( $tipo_busqueda == 'AR' ){
				$otro_busqueda = 0;
			} else {
				$otro_busqueda = 1;
			}
			return view('/iv/iv_vieja_buscadora')->with(compact('paises','otro_busqueda'));
        }
    }

    //// FUNCION QUE DEVUELVE UNA LISTA DE DATOS DEL REGISTRO PARA QUE EL USUARIO LO COMPLETE Y LO DE ALTA
	// 13/09/2023 - DIEGO - Esta función devuelve una vista que sigue el circuito nuevo para dar de alta un informe
    public function ivDatosBusqueda(){
        $familia = !empty(Request::input('familia')) ? Request::input('familia') : NULL;
		// $id_tipo_informe = !empty(Request::input('id_tipo_informe')) ? Request::input('id_tipo_informe') : NULL;
		$id_padron = !empty(Request::input('id_padron')) ? Request::input('id_padron') : NULL;
		//
		$cliente = Session::get('usuario')->cliente['client_id'];
		$familias = SQLConnection::backendStoreProcedure('LN_familias_', array('inquirovitae', null, null, $cliente, null, 1, null), 'select');
		// PRUEBA - PARA AGREGAR LOS COMPONENTES DE TODOS LOS INFORMES
		$componentes = [];
		foreach ($familias as $fam) {
			$tipos_informes = SQLConnection::backendStoreProcedure('LN_tipo_informes_', array('LISTAR_FAMILIA',NULL,NULL,NULL,NULL,NULL,NULL,$cliente,$fam->familia,NULL,NULL,Session::get('usuario')->user_id),'select');
			foreach ($tipos_informes as $ti) {
				$test = SQLConnection::backendStoreProcedure('LN_informe_design_', array('EDITARINF',$ti->idTipoInforme,null,null,null,null,null,null,null,null,null), 'select');
				$componentes = array_merge($componentes + $test);
			}			
		}
		//
		$otro_tipo_busqueda = Request::input('tipo_busqueda_otro');
		//
		$referencia = !empty(Request::input('referencia')) ? Request::input('referencia') : NULL;
		$ref = !empty(Request::input('ref')) ? Request::input('ref') : NULL;
		$ref_nombre = !empty(Request::input('ref_nombre')) ? Request::input('ref_nombre') : NULL;
		$ref_seccion = !empty(Request::input('ref_seccion')) ? Request::input('ref_seccion') : NULL;
		$ref_cargo = !empty(Request::input('ref_cargo')) ? Request::input('ref_cargo') : NULL;
		$email_candidato  = !empty(Request::input('email_candidato')) ? Request::input('email_candidato') : NULL;
		$telefono_candidato  = !empty(Request::input('telefono_candidato')) ? Request::input('telefono_candidato') : NULL;
		$notas_candidato  = !empty(Request::input('notas_candidato')) ? Request::input('notas_candidato') : NULL;
		//-------- VARIABLE IMPORTANTE PARA DETERMINAR SI EL USUARIO YA FUE AVISADO QUE EXISTE LA CONTRAPARTE EN EL PANEL Y LO QUIERE DAR DE ALTA DE VUELTA
		$candidato_repetir = !empty(Request::input('nueva_repeticion')) ? Request::input('nueva_repeticion') : NULL;
		//--------
		/* if ($id_tipo_informe != null) {
			$tipoinforme = SQLConnection::backendStoreProcedure('LN_informes', array('tipo_informe', NULL, NULL, NULL, NULL, NULL, $id_tipo_informe), 'selectOne');
		} */
		if ($id_padron != null) {
			$persona = SQLConnection::backendStoreProcedure('backend_obtener_id_padron', array($id_padron), 'selectOne');
		}
		$referencias = SQLConnection::backendStoreProcedure('IV_panel_control', array('referencias', Session::get('usuario')->cliente['client_id']), 'select');
		$file_name = null;
		$file_url = null;
		$dircliente = env('PATH_DOCUMENTOS_IV_TEMP') . '/' . $cliente . '/' . Session::get('usuario')->user_id;
		if (is_dir($dircliente)) {
			$dirhandle = opendir($dircliente);
			if ($dirhandle) {
				while (($archivo = readdir($dirhandle)) !== false) {
					if (is_file( env('PATH_DOCUMENTOS_IV_TEMP') . '/' . $cliente . '/' . Session::get('usuario')->user_id. '/' . $archivo )) {
						$file_name = $archivo;
						$file_url = env('RUTA_DOCUMENTOS_IV_TEMP') . '/' . $cliente . '/' . Session::get('usuario')->user_id. '/' . $archivo;
						break;
					}
				}
			}
		}
		/* 25/01/2021 esto estaba en produccion, pero no en desarrollo .... */
		/* $n = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe_cliente', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, Session::get('usuario')->cliente['client_id']));
		$resultado = SQLConnection::backendStoreProcedure('backend_contratos_consumos', array(Session::get('usuario')->cliente['client_id'], self::depurador_contador_consumo($n,$n[0]->id_tipo_informe)));
		//
		foreach ($resultado as $key) {
			$consumido = ($key->consumido != null) ? $key->consumido : '0';
			$disponible = ($key->disponible != null) ? $key->disponible : '0';
		} */
		/* */ 		
		/* 25/01/2021 se cambio el return .... */
		/*return view('/iv/iv_datos_busqueda')->with(compact(['familia', 'tipoinforme', 'persona', 'familias', 'familia', 'referencias', 'referencia', 'ref', 'ref_nombre', 'ref_seccion', 'ref_cargo', 'email_candidato', 'telefono_candidato', 'notas_candidato','file_name', 'file_url']));*/
		//---- MODIFICACION 18/10/2021
		if (!isset($candidato_repetir)){
			$user_id = Session::get('usuario')->user_id;
			$servicio = Session::get('servicio_actual');
			//----
			$indicadores = SQLConnection::backendStoreProcedure('IV_panel_control', array('indicadores_panel_controlr', $cliente, $user_id), 'select');
			$datoscontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_sc',array('search',null,$id_padron,$cliente,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,$servicio));
			//----- PROCESO DE CONOCER SI EL CANDIDATO YA EXISTE
			$registros_finalizados = [];
			$registros_en_proceso = [];
			foreach ($datoscontrap as $key => $value){
				if ( $value->activo == 1 ){
					$cont_activos++;
					foreach ( $indicadores as $clave => $valor ){
						//--- SI LA CONTRAPARTE ESTA EN PROCESO
						if ( $value->contraparte == $valor->contraparte and $valor->visible == 0 ){
							if ( !in_array($value,$registros_en_proceso) ){
								$value->created = date_format(date_create_from_format('Y-m-d H:i:s', $value->created),'d-m-Y');
								$value->created = str_replace('-','/',$value->created);
								array_push($registros_en_proceso,$value);
							}
						}
						elseif ( $value->contraparte == $valor->contraparte and $valor->visible == 1 ){
							//--- SI LA CONTRAPARTE ESTA FINALIZADA
							if ( !in_array($value,$registros_finalizados) ){
								$value->created = date_format(date_create_from_format('Y-m-d H:i:s', $value->created),'d-m-Y');
								$value->created = str_replace('-','/',$value->created);
								array_push($registros_finalizados,$value);
							}
						}
						//----
					}
				}
			}
			//
			if ( $cont_activos == 0 ){
				return view('/iv/new/iv_datos_busqueda')->with(compact(['familia','persona', 'familias', 'familia', 'referencias', 'referencia', 'ref', 'ref_nombre', 'ref_seccion', 'ref_cargo', 'email_candidato', 'telefono_candidato', 'notas_candidato','file_name', 'file_url','otro_tipo_busqueda']));
			} else {
				return view('/iv/new/iv_datos_busqueda_existentes')->with(compact(['persona','registros_finalizados','registros_en_proceso','familia','id_padron', 'referencias', 'referencia', 'ref', 'ref_nombre', 'ref_seccion', 'ref_cargo', 'email_candidato', 'telefono_candidato', 'notas_candidato','file_name', 'file_url','otro_tipo_busqueda']));
			}
		}
		else{
			//return view('/iv/new/iv_datos_busqueda')->with(compact(['familia', 'tipoinforme', 'persona', 'familias', 'familia', 'referencias', 'referencia', 'ref', 'ref_nombre', 'ref_seccion', 'ref_cargo', 'email_candidato', 'telefono_candidato', 'notas_candidato','file_name', 'file_url', 'consumido', 'disponible','otro_tipo_busqueda']));	
			return view('/iv/new/iv_datos_busqueda')->with(compact(['familia','persona','familias','familia','referencias','referencia', 'ref', 'ref_nombre', 'ref_seccion', 'ref_cargo', 'email_candidato', 'telefono_candidato', 'notas_candidato','file_name', 'file_url','otro_tipo_busqueda','componentes']));	
		}

    }

	// FUNCION QUE GUARDA EL ARCHIVO DE CV
	public static function ivUploadFile(){

		$cliente = Session::get('usuario')->cliente['client_id'];

		if(!empty($_FILES['archivo']) && $_FILES['archivo']['name'] !== '') {

			$userfile_name = $_FILES['archivo']['name'];
			$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);
			$file_url = env('RUTA_DOCUMENTOS_IV_TEMP') . '/' . $cliente . '/' . Session::get('usuario')->user_id. '/' . $userfile_name;

			$ftype = strtolower($userfile_extn); 

			if($ftype !== 'pdf' and $ftype !== 'doc' and $ftype !== 'docx') {
				$rslt = 5;
				$msg = 'El tipo de archivo especificado no está permitido. - Por favor ingrese un archivo del tipo PDF o Word.';
				return json_encode(array( 'error' => $rslt , 'mensaje' => $msg , 'archivo' => $file_url, 'nombre' => $userfile_name));
			}

			if( basename($userfile_name) != '' ) {

				/* Creacion de la carpeta del cliente para el storage de IV */
				$path_cli = env('PATH_DOCUMENTOS_IV') . '/' . $cliente;
				if (!is_dir( $path_cli )) {
			    	$carpeta_cliente = mkdir( $path_cli );
				}
				else {
					$carpeta_cliente = true;	
				}

				/* Creacion de la carpeta temporaria del cliente / usuario para el storage de IV */
				$path_temp = env('PATH_DOCUMENTOS_IV_TEMP') . '/' . $cliente . '/' . Session::get('usuario')->user_id;
				if (!is_dir( $path_temp )) {
			    	$carpeta_cliente_temp = mkdir( $path_temp , 0777, true );
				}
				else {
					$carpeta_cliente_temp = true;	
				}


				if($carpeta_cliente AND $carpeta_cliente_temp) {

					// Como todavía no creé la carpeta de la contraparte, va a la carpeta temporal 

					// Vacío la carpeta temporal del cliente
					$dirhandle = opendir($path_temp);
					if ($dirhandle) {
						while (($archivo_preexistente = readdir($dirhandle)) !== false) {
							if (is_file( $path_temp . '/' . $archivo_preexistente )) {
								unlink( $path_temp . '/' . $archivo_preexistente );
							}
						}
					}

					$path = env('PATH_DOCUMENTOS_IV_TEMP') . '/' . $cliente . '/' . Session::get('usuario')->user_id. '/' . $userfile_name;


					if(move_uploaded_file($_FILES['archivo']['tmp_name'], $path)) {
						$rslt = 0;
						$msg = 'Archivo subido exitosamente';

						$file_name = $userfile_name;
						$form = \View::make('/iv/new/iv_buscar_cv_temp')->with(compact(['file_name', 'file_url']))->render();

						return \Response::json(array( 'error' => $rslt ,
																	'mensaje' => $msg , 
																	'archivo' => $file_url, 
																	'nombre' => $userfile_name, 
																	'formulario' => $form),
															200,
															[],
															JSON_NUMERIC_CHECK);
					}
					else {
						$rslt = 4;
						$msg = 'No se pudo guardar el archivo seleccionado.';
						return json_encode(array( 'error' => $rslt , 'mensaje' => $msg , 'archivo' => $file_url, 'nombre' => $userfile_name));										
					}

				}
				else {
					$rslt = 3;
					$msg = 'No se pudo crear la carpeta correspondiente para almacenar el archivo.';
					return json_encode(array( 'error' => $rslt , 'mensaje' => $msg , 'archivo' => $file_url, 'nombre' => $userfile_name));
				}
			}
			else {
				$rslt = 2;
				$msg = 'El nombre del archivo especificado es inválido.';
				return json_encode(array( 'error' => $rslt , 'mensaje' => $msg , 'archivo' => $file_url, 'nombre' => $userfile_name));
			}
		}
		else {
			$rslt = 1;
			$msg = 'No se ha especificado el archivo a subir.';
			return json_encode(array( 'error' => $rslt , 'mensaje' => $msg , 'archivo' => NULL, 'nombre' => NULL));
		}

	}

	// FUNCION QUE GUARDA BORRA EL ARCHIVO DE CV
	public static function ivDeleteFile() {
		$cliente = Session::get('usuario')->cliente['client_id'];
		$dircliente = env('PATH_DOCUMENTOS_IV_TEMP') . '/' . $cliente . '/' . Session::get('usuario')->user_id;
		//
		$rslt = 0;
		$msg = '';
		//
		if (is_dir($dircliente)) {
			$dirhandle = opendir($dircliente);
			//
			if ($dirhandle) {
				while (($archivo = readdir($dirhandle)) !== false) {
					if (is_file( $dircliente . '/' . $archivo )) {
						unlink( $dircliente . '/' . $archivo );
						$rslt = 0;
						$msg = "Archivo eliminado.";
						break;
					}
				}
			}
		}
		//
		return \Response::json(array( 'error' => $rslt ,'mensaje' => $msg , 'formulario' => NULL),200,[],JSON_NUMERIC_CHECK);
	}

    //--  METODO DEPURADOR PARA OBTENER CONSUMOS, USADO POR EL METODO 'ivDatosBusqueda'  --//
	private static function depurador_contador_consumo($resuktado_store, $id_tipo_informe) {
		$nuevo = array();
		//
		foreach($resuktado_store as $key) {
			$nuevo[$key->id_tipo_informe] = $key->item_contrato;
		}
		//
		foreach($nuevo as $key => $value) {
			if($key == $id_tipo_informe) {
				return $value;
			}
		}
		return 0;
	}

	// FUNCION QUE DEVUELVE LOS TIPOS DE INFORME DE UNA FAMILIA
	public function tiposInformeFamilia(){
		if ( isset($_POST['familia']) && is_numeric($_POST['familia']) ){
			$cliente = Session::get('usuario')->cliente['client_id'];
			$user_id = Session::get('usuario')->user_id;
			$familia = Request::input('familia');
			// SE LEVANTAN LOS TIPOS DE INFORME DE LA FAMILIA
			$tipos_informe_familia = SQLConnection::backendStoreProcedure('LN_tipo_informes_', array('LISTAR_FAMILIA',NULL,NULL,NULL,NULL,NULL,NULL,$cliente,$familia,NULL,NULL,$user_id),'select');
			//
            // dd($tipos_informe_familia);
			foreach( $tipos_informe_familia as $clave_tipo_informe => $tipo_informe  ){
				if ( $tipo_informe->activo_fam_inf != '1' || $tipo_informe->activo != '1' ){
					unset($tipos_informe_familia[$clave_tipo_informe]);
				}
			}
			//
			$tipos_informe_familia = array_values($tipos_informe_familia);
			return json_encode($tipos_informe_familia);
		}
	}

	// FUNCION QUE DEVUELVE LOS CONSUMOS Y LO DISPONIBLE DEL INFORME
	public function ivInformeConsumos(){
		if ( isset($_POST['id_tipo_informe']) && is_numeric($_POST['id_tipo_informe']) ){
			$id_tipo_informe = Request::input('id_tipo_informe');
			$n = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe_cliente', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, Session::get('usuario')->cliente['client_id']));
			$resultado = SQLConnection::backendStoreProcedure('backend_contratos_consumos', array(Session::get('usuario')->cliente['client_id'], self::depurador_contador_consumo($n,$id_tipo_informe)));
			//
			foreach ($resultado as $key) {
				$consumido = ($key->consumido != null) ? $key->consumido : '0';
				$disponible = ($key->disponible != null) ? $key->disponible : '0';
			}
			//
			return json_encode(['consumido' => $consumido,'disponible' => $disponible]);
		}
	}

	/// METODO PARA DAR DE ALTA UNA CONTRAPARTE
    public function ivIngresarBusqueda(){
		$cliente = Session::get('usuario')->cliente['client_id'];
		//
		$id_tipo_informe = !empty(Request::input('id_tipo_informe')) ? Request::input('id_tipo_informe') : NULL;
		$id_padron = !empty(Request::input('id_padron')) ? Request::input('id_padron') : NULL;
		$duracion_informe = !empty(Request::input('duracion_informe')) ? Request::input('duracion_informe') : NULL;
		//
		$familia = !empty(Request::input('familia')) ? Request::input('familia') : NULL;
		$referencia = !empty(Request::input('referencia')) ? Request::input('referencia') : NULL;
		$ref = !empty(Request::input('ref')) ? Request::input('ref') : NULL;
		$ref_nombre = !empty(Request::input('ref_nombre')) ? Request::input('ref_nombre') : NULL;
		$ref_seccion = !empty(Request::input('ref_seccion')) ? Request::input('ref_seccion') : NULL;
		$ref_cargo = !empty(Request::input('ref_cargo')) ? Request::input('ref_cargo') : NULL;
		$nombre_contacto = !empty(Request::input('nombre_persona')) ? Request::input('nombre_persona') : NULL;
		$email_candidato  = !empty(Request::input('email_candidato')) ? Request::input('email_candidato') : NULL;
		$telefono_candidato  = !empty(Request::input('telefono_candidato')) ? Request::input('telefono_candidato') : NULL;
		$notas_candidato  = !empty(Request::input('notas_candidato')) ? Request::input('notas_candidato') : NULL;
		//------- SECCION PRUEBA
		$datoscontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_sc',array('search',null,$id_padron,$cliente,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,10));
		// SE ASIGNA EL TEAM DEFAULT AL INFORME
		$teams_familia = SQLConnection::backendStoreProcedure('LN_Teams_',array('LSTFAMILYTEAMS',Session::get('usuario')->user_id,null,null,null,null,null,null,null,null,null,null,$familia),'select');
		$team_default = ( isset($teams_familia[0]->id_team) ) ? $teams_familia[0]->id_team : NULL;
		if ( !empty($teams_familia) ){
			foreach( $teams_familia as $team ){
				if ( $team->isDefault == '1' && $team->activo == '1' ){
					$team_default = $team->id_team;
					break;
				}
			}
		}
		// en caso que no haya team que no permita el ingreso del pedido
		if ( !$team_default ){
			$err = 3;
			$msg = "Error tecnico, por favor comunique con el sector tecnico.";
			return \Response::json(array('error'=>$err, 'mensaje'=>$msg));
		}
		//------- FIN DE SECCION PRUEBA
		if ($cliente != null AND $id_padron != null AND $familia != null) {
			//
			$fechas = $this->establecerFechasInforme($duracion_informe);
			$fecha_inicio = $fechas['fecha_inicio'];
			$fecha_comprometida = $fechas['fecha_comprometida'];
			//
			$params = array('alta_contraparte_informe', 
				$cliente,
				Session::get('usuario')->user_id,
				env('IV_PRODUCTO'),
				$id_tipo_informe,
				$id_padron,
				$familia,
				$referencia,
				$ref,
				$ref_nombre,
				$ref_seccion,
				$ref_cargo,
				$email_candidato,
				$telefono_candidato,
				$notas_candidato,
				env('FILIAL_DEFAULT'),
				env('IDIOMA_DEFAULT'),
				env('DATAMANAGER_DEFAULT'),
				env('ASIGNADO_DEFAULT'),
				env('ESTADO_INFORME_INICIAL'),
				$fecha_comprometida,
				NULL,
				NULL,
				NULL,
				NULL,
				NULL,
				NULL,
				$team_default,
				$fecha_inicio
			);
			//
			$nueva_busqueda = SQLConnection::backendStoreProcedure('IV_panel_control', $params, 'selectOne');
			/* Ese SP lo manda al queue */
			if (!empty($nueva_busqueda)) {
				$rootcliente = env('PATH_DOCUMENTOS_IV') . '/' . $cliente;
				$dir_temp = env('PATH_DOCUMENTOS_IV_TEMP') . '/' . $cliente . '/' . Session::get('usuario')->user_id;
				$path_legajo = $rootcliente . '/' . $nueva_busqueda->contraparte . '/' . $nueva_busqueda->gestion;
		    	$legajo = mkdir( $path_legajo , 0777, true );
				//
		    	if ($legajo) {
		    		/* Copiar el CV en la carpeta temporal al legajo del candidato */
					if (is_dir($dir_temp)) {
						$dirhandle = opendir($dir_temp);
						if ($dirhandle) {
							while (($archivo = readdir($dirhandle)) !== false) {
								if (is_file( $dir_temp . '/' . $archivo )) {
									$target_name = str_pad($nueva_busqueda->iv_busqueda, 8, '0', STR_PAD_LEFT) . '_' . str_replace(' ', '_', $archivo);
									if (copy( $dir_temp . '/' . $archivo , $path_legajo . '/' . $target_name )) {
										unlink( $dir_temp . '/' . $archivo );
										$temp = SQLConnection::backendStoreProcedure('IV_busquedas_', array('subir_cv', $nueva_busqueda->iv_busqueda), 'selectOne');
									}
								}
							}
						}
					}
					$err = 0;
					$msg = "La búsqueda se ingresó correctamente.";
					//------ MODIFICACION 12/10/2021
					$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
					$servicio = Session::get('servicio_actual');
					$datoscontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_sc',array('search',null,$id_padron,$cliente,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,$servicio));
					$contraparte = $nueva_busqueda->contraparte;
					$nombre_completo = $nombre_contacto;
					//----
					if ($padron->country_code == 'AR'){
						$indicador_comercial_legal = Misc::CURLCall(env('API_SCORE_INFORME_COMERCIAL'),'cuit='.$padron->numero.'&cliente='.$cliente);
						$indicador_comercial_legal = json_decode($indicador_comercial_legal);
						$apikey_fidecheck = env('APIKEY_FIDECHECK');
						$indicador_compilance = Misc::CURLCall(env('API_SCORE_FIDECHECK_COMPLIANCE'),'apikey='.$apikey_fidecheck.'&country_code='.$padron->country_code.'&tax_id='.$padron->numero.'&full_name='.$nombre_completo);
						$indicador_compilance = json_decode($indicador_compilance);
						$indicador_compilance = $indicador_compilance->response[0] ?? NULL;
						//----- ESCALA DE SECCION COMERCIAL/LEGAL
						if ( isset($indicador_comercial_legal->score) ){
							$score_comercial_legal = 'X';
							if ($indicador_comercial_legal->score >= 0 and $indicador_comercial_legal->score <= 44){
								$score_comercial_legal = 'N';	
							} elseif ($indicador_comercial_legal->score >= 45 and $indicador_comercial_legal->score <= 69){
								$score_comercial_legal = 'O';	
							} elseif ($indicador_comercial_legal->score >= 70 and $indicador_comercial_legal->score <= 100){
								$score_comercial_legal = 'P';	
							}
							//---------
							$comercial_legal = SQLConnection::backendStoreProcedure('IV_panel_control', array('actualizar_indicador',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,$contraparte,'COMERCIAL_LEGAL',$score_comercial_legal), 'selectOne');
						}
						//------- ESCALA DE SECCION COMPLIANCE
						if ( is_object($indicador_compilance) ){
							$score_compliance = 'X';
							if ($indicador_compilance->fidecheck == 'NEGATIVO' or $indicador_compilance->fidecheck == 'SUJETO OBLIGADO'){
								$score_compliance = 'P';
							} elseif($indicador_compilance->fidecheck == 'PEP' or $indicador_compilance->fidecheck == 'SANCIONADO' or $indicador_compilance->fidecheck == 'TERRORISTA'){
								$score_compliance = 'N';
							} else{
								$score_compliance = 'O';
							}
							//-------
							$compliance = SQLConnection::backendStoreProcedure('IV_panel_control', array('actualizar_indicador',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,$contraparte,'COMPLIANCE',$score_compliance), 'selectOne');
						}
					}
					// CALCULAR DOCS OK EN CASO DE QUE LA FAMILIA NO TIENE FACON
					$fdata = SQLConnection::backendStoreProcedure('LN_familias_sc', array('select',$familia,null,null,null,null,Session::get('usuario')->user_id), 'selectOne');
					if ( is_null($fdata->set_doc) || empty($fdata->set_doc) ){
						$producto = SQLConnection::backendStoreProcedure('LN_demo_', array('reports', $nueva_busqueda->contraparte, $cliente), 'selectOne');
						$producto = $producto->producto;
						$temp = SQLConnection::backendStoreProcedure('LN_demo_', array('UPDATE', $nueva_busqueda->contraparte, $cliente, $producto,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,$nueva_busqueda->informe,$nueva_busqueda->gestion,null,null,null,null,null,null,null,1), 'selectOne');
					}
					// TRAZABILIDAD ADD CONTRAPARTE
					$temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Cliente ingresó Nueva Contraparte', $cliente, 'AGREGA_CONTRAPARTE','FI', $contraparte,Session::get('usuario')->user_id,null,$servicio), 'selectOne'); // TRAZABILIDAD - MIRAR BIEN SERVICIOS.
		    	} else {
					$err = 3;
					$msg = "No se ha podido generar la carpeta de documentos para el candidato.";
		    	}
			} else {
				$err = 2;
				$msg = "No se ha podido generar la búsqueda. Por favor reintente.";
			}
		} else {
			$err = 1;
			$msg = "Parámetros incorrectos.";
		}
		//------ FIN DE MODIFICACION
		return \Response::json(array('error'=>$err, 'mensaje'=>$msg));
    }

	/**
	 * Funcion que devuelve las fechas del informe en base a la duracion
	 * @access private
	 * @param string|null duracion del informe
	 * @return array
	 *
	 */
	private function establecerFechasInforme($duracion){
		$fecha_inicio = $this->obtenerFechaInicioInforme(); // calculamos la fecha de incio
		$fecha_comprometida = $this->obtenerFechaComprometidaInforme($duracion,$fecha_inicio); // calculamos la fecha comprometida del informe
		$this->omitirFeriados($fecha_inicio,$fecha_comprometida); // se omiten los feriados
		return [
			'fecha_inicio' => ($fecha_inicio->format('Y-m-d H:i:s')),
			'fecha_comprometida' => ($fecha_comprometida->format('Y-m-d H:i:s'))
		];
	}

	/**
	 * Funcion que establece la fecha de inicio del informe
	 * @access private
	 * @return \DateTime objeto del tiempo de la fecha de inicio
	 */
	private function obtenerFechaInicioInforme(){
		$fecha = new \DateTime();
		$intervalo_dia = new \DateInterval('P1D');  // intervalo de un dia
		$horario_corte = 14;
		$hora = intval($fecha->format('H'));
		//
		if ( $hora >= $horario_corte ){
			// Si el informe entra despues del horario de corte 
			// se pasa para que comienze el dia siguiente
			// a las 9
			$fecha->add($intervalo_dia);
			$fecha->setTime(9,0);
		} else{
			// Si el informe entra antes del horario de corte 
			if ( $hora < 9 ){
				// y antes de las 9 (antes del comienzo de la jornada laboral) 
				// comienza a las 9 del mismo dia
				$fecha->setTime(9,0);
			} else {
				// Si el informe entra despues de las 9 (despues del comienzo de la jornada laboral) 
				// comienza al horario de corte del mismo dia
				$fecha->setTime($horario_corte,0);
			}
			
		}
		// se valida que no caiga un sabado ni domingo
		$dia_semana = $fecha->format('w');
		if ( $dia_semana == '6' ){
			// sabado
			$fecha->add(new \DateInterval('P2D'));
		} elseif ( $dia_semana == '0' ){
			// domingo
			$fecha->add($intervalo_dia);
		}
		//
		return $fecha;
	}

	/**
	 * Funcion que establece la fecha de comprometida del informe
	 * @access private
	 * @param string|null duracion del informe
	 * @param \DateTime objeto de la fecha de inicio
	 * @return \DateTime objeto del tiempo de la fecha de comprometida
	 */
	private function obtenerFechaComprometidaInforme($duracion,$fecha_inicio){
		$fecha = clone $fecha_inicio; // clono el objeto del fecha de inicio para obtener uno nuevo
		$fecha->setTime(23,59,59); // setea la hora comprometida al final del dia
		$intervalo_dia = new \DateInterval('P1D'); // intervalo de un dia
		//
		if ( $duracion && is_numeric($duracion) && intval($duracion) > 0 ){
			// le agregamos la duracion y le restamos un dia (para que el dia de inicio este integrado en el calculo de duracion)
			$fecha->add(new \DateInterval('P'.$duracion.'D'));
			$fecha->sub($intervalo_dia);
		} else {
			// caso de duracion invalida
			$fecha->add($intervalo_dia);
		}
		// se valida que no caiga un sabado ni domingo
		$dia_semana = $fecha->format('w');
		if ( $dia_semana == '6' ){
			// sabado
			$fecha->add(new \DateInterval('P2D'));
		} elseif ( $dia_semana == '0' ){
			// domingo
			$fecha->add($intervalo_dia);
		}
		//
		return $fecha;
	}

	/**
	 * Funcion que valida que las fechas 
	 * no hayan en caido en tiempo de feriado
	 * si caen en feriado se modifican
	 * @access private
	 * @param \DateTime fecha de inicio informe
	 * @param \DateTime fecha comprometida informe
	 * @return void modifica el contenido de los objetos sin tener que devolverlos
	 */
	private function omitirFeriados($fecha_inicio,$fecha_comprometida){
		// $feriados = SQLConnection::backendStoreProcedure('IVferiados',array()); // obtenemos los feriados nacionales
		$feriados = SQLConnection::backendStoreProcedure('LN_feriados',array('LIST_PAIS', 'AR', NULL, NULL));
		//
		foreach( $feriados as $dia_feriado ){
			$obj_dia_feriado = new \DateTime($dia_feriado->fecha_feriado);
			if ( $obj_dia_feriado && $obj_dia_feriado == $fecha_inicio ){
				/* 
					si fecha de inicio es feriado , tambien se modifica
				 	la fecha comprometida para respetar la duracion
				*/
				$fecha->add($intervalo_dia);
				$fecha_comprometida->add($intervalo_dia);
			} elseif ( $obj_dia_feriado && $obj_dia_feriado == $fecha_comprometida ){
				$fecha_comprometida->add($intervalo_dia);
			}
		} 
	}

	//------------------------------------
	/// FUNCION QUE DEVUELVE EL FORMULARIO EVOLUTIVO
	public function devolverFormulario(){
		return view('/facon/formulario_candidatos_inquiro');
	}

	/// FUNCION ENCARGADA DE CREAR LA VISTA DE HIJOS DEPENDIENDO EN LA CANTIDAD DE HIJOS RECIBIDA
	public function devolverSeccionHijos(){
		//----
		$expReg = '/^[1-9]$/';
		if ( preg_match($expReg,$_POST['cantidad']) ){
			$cantidad = $_POST['cantidad'];
			//----
			$vista = \View::make('/facon/seccion_formulario_hijos')->with(compact('cantidad'));
			//----
			return $vista;
		}
	}

	/// FUNCION ENCARGADA DE CREAR LA VISTA DE DATOS DEPENDIENDO DEL NIVEL DE ESTUDIO
	public function devolverSeccionNivelDeEstudio(){
		//---
		if ($_POST['opcion'] == 'primario' or $_POST['opcion'] == 'secundario' or $_POST['opcion'] == 'terciario' or $_POST['opcion'] == 'universitario_curso' or $_POST['opcion'] == 'universitario_completo' or $_POST['opcion'] == 'postgrado'){
			$orden = $_POST['opcion'];
			//------
			$vista = \View::make('facon/seccion_nivel_de_estuido')->with(compact('orden'));
			//------
			return $vista;
		}
	}
	//------------------
	public function devolverFormularioDinamico(){
		return view('/facon/formulario_dinamico');
	}


	//////////////////////////////////
	///////// PANEL CONTROL //////////
	//////////////////////////////////


    // DEVUELVE LA VISTA DEL PANEL
	public function panelControlIVNuevo(){
		/* si el usuario / cliente tienen producto y cupo para solicitar un nuevo informe */
		$consumo = SQLConnection::backendStoreProcedure('IV_panel_control', array('control_consumo', NULL, Session::get('usuario')->user_id, env('IV_PRODUCTO')), 'selectOne');
		//
		$en_proceso = 0;
		if ( $_SERVER['REDIRECT_URL'] == '/iv/iv-panel-control-en-proceso' ){
			$en_proceso++;
		}
		//
		$clave_indicador = ( !is_null(Request::input('clave_indicador')) || !empty(Request::input('clave_indicador')) ) ? Request::input('clave_indicador') : NULL;
		$valor_texto = ( !is_null(Request::input('valor_texto')) || !empty(Request::input('valor_texto')) ) ? Request::input('valor_texto') : NULL;
		$sin_filtro_visibilidad = (!is_null(Request::input('sin_filtro_visibilidad')) && !empty(Request::input('sin_filtro_visibilidad')) ) ? Request::input('sin_filtro_visibilidad') : NULL ;
		//
		return view('/iv/new/iv_panel_control_nuevo')->with(compact(['consumo','en_proceso','clave_indicador','valor_texto','sin_filtro_visibilidad']));
	}
	
    // FUNCION QUE DEVUELVE LOS DATOS NECESARIOS PARA CREAR LA TABLA DEL PANEL DE INQUIRO
    public static function ivPanelFancyDataOrg(){
		$cliente = Session::get('usuario')->cliente['client_id'];
		$user_id = Session::get('usuario')->user_id;	
		//
		$clave_indicador = !is_null(Request::input('clave_indicador')) ? Request::input('clave_indicador') : NULL ;
		/* 30/09/2020 El sp con la accion columnasr y indicadores_panel_controlr devuelven solo las columnas que el usuario tiene autorizadas */
		$columnas = SQLConnection::backendStoreProcedure('IV_panel_control', array('columnasr', $cliente, $user_id), 'select'); 
		$indicadores = SQLConnection::backendStoreProcedure('IV_panel_control', array('indicadores_panel_controlr', $cliente, $user_id), 'select');
		//
		$personas = SQLConnection::backendStoreProcedure('IV_panel_control', array('panel_control', $cliente), 'select');		
		//
		$indic = [];
		foreach ($columnas as $y => $col) {
			// se descartan las columnas fijas
			if ($col->orden_producto > 0) {
				$indic[] = $col->clave_indicador;
			}
		}
		//
		$pais		= [];
		$familias 	= [];
		$data 		= [];
		foreach ($personas as $k => $cand) {
			$cc = strtolower($cand->country_code);

			$pais[$k]['info'] = $cc;
			$pais[$k]['cls'] = 'flag-icon-' . $cc;
			$pais[$k]['val'] = '<span class=flag-icon flag-icon-background flag-icon-' . $cc .'></span>';

			$familias[$k]['value'] = $cand->familia;
			$data[$cand->contraparte] = (array) $cand;
			foreach ($indic as $j => $indica) {
				$data[$cand->contraparte][$indica]  = NULL;
				$data[$cand->contraparte]['icono'][$indica] = NULL;
				$data[$cand->contraparte]['cls'][$indica]   = NULL;
				$data[$cand->contraparte]['color'][$indica] = NULL;
				$data[$cand->contraparte]['title'][$indica] = NULL;
			}
		}
		//
		foreach ($data as $k => $iv) {
			$data[$k]['foto_60'] = '<img src="'. env('RUTA_DOCUMENTOS_IV') . '/' . $data[$k]['foto_60'] . '?r=' . time() .  '" border="0" class="img img-responsive" width="50" height="50" />';
			$data[$k]['country'] = strtolower($data[$k]['country_code']);
		}
		$cv_iv			    = [];
		$valoracion_iv		= [];
		$academico			= [];
		$profesional 		= [];
		$comercial_legal 	= [];
		$compliance 		= [];
		$prensaiv 			= [];
		$contrapartes_a_servidor = [];
		$indicador = 0;
		//------ CREAR LA LISTA QUE VA A SER LLENADA CON LOS CONTRAPARTES DE LOS CASOS QUE ESTAN EN PROCESO QUE VAN A SER MANDADOS A LA BASE DE DATOS
		foreach ($indicadores as $n => $valores) {
			//
			if ($valores->visible == 0 and $valores->clave_indicador == 'IV_CV') {
				array_push($contrapartes_a_servidor,$valores->contraparte);
			}
		}
		$contrapartres_a_servidor_cadena = implode(',',$contrapartes_a_servidor);
		//---------- NUEVA LLAMADA AL STORE , QUE DEVUELVE INDICADORES PARA SEPARAR LO QUE ESTA EN PROCESO EN TRES ESTADOS
		$iconos_devueltos = SQLConnection::backendStoreProcedure('iv_estados_en_proceso',array('LISTAR',$contrapartres_a_servidor_cadena));
		foreach ($indicadores as $n => $valores) {
			if ($valores->visible == 0 and $valores->clave_indicador != 'COMERCIAL_LEGAL' and $valores->clave_indicador != 'COMPLIANCE') {
				$valores->cls = 'XX';
				$valores->icono = env('ICONO4_EN_PROCESO');
				$valores->color = env('COLOR4_EN_PROCESO');
				$valores->titulo = env('TEXTO4_EN_PROCESO');
			}
			//---------  EN ESTA SECCION SE MODIFICAN LOS CONTENIDOS DE LOS QUE ESTAN EN PROCESO PARA SEPARAR A ALGUNOS EN TRES ESTADOS
			if ($valores->visible == 0 and $valores->clave_indicador == 'IV_CV') {
				foreach($iconos_devueltos as $p => $value) {
					if ($valores->contraparte == $value->contraparte){
						if ($value->ICONO == 'ICONO1') {
							$valores->cls = 'XX1';
							$valores->icono = env('ICONO1_EN_PROCESO');
							$valores->color = env('COLOR1_EN_PROCESO');
							$valores->titulo = env('TEXTO1_EN_PROCESO');
							break;
						}
						elseif($value->ICONO == 'ICONO2') {
							$valores->cls = 'XX2';
							$valores->icono = env('ICONO2_EN_PROCESO');
							$valores->color = env('COLOR2_EN_PROCESO');
							$valores->titulo = env('TEXTO2_EN_PROCESO');
							break;
						}
						elseif($value->ICONO == 'ICONO3'){
							$valores->cls = 'XX3';
							$valores->icono = env('ICONO3_EN_PROCESO');
							$valores->color = env('COLOR3_EN_PROCESO');
							$valores->titulo = env('TEXTO3_EN_PROCESO');
							break;
						}
					}
				}
			}
            //			
			if($valores->clave_indicador == 'IV_CV' and $valores->visible == 1 ) {	
				$cv_iv[$n]['info'] = $valores->icono; 
				$cv_iv[$n]['cls']  = $valores->cls;
				$cv_iv[$n]['color'] = $valores->color;
				$cv_iv[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'VALORACION_IV' and $valores->visible == 1 ) {
				$valoracion_iv[$n]['info'] = $valores->icono;
				$valoracion_iv[$n]['cls']  = $valores->cls;
				$valoracion_iv[$n]['color'] = $valores->color;
				$valoracion_iv[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'ACADEMICO' and $valores->visible == 1) {
				$academico[$n]['info'] = $valores->icono;
				$academico[$n]['cls']  = $valores->cls;
				$academico[$n]['color'] = $valores->color;
				$academico[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'PROFESIONAL' and $valores->visible == 1) {
				$profesional[$n]['info'] = $valores->icono;
				$profesional[$n]['cls']  = $valores->cls;
				$profesional[$n]['color'] = $valores->color;
				$profesional[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'COMERCIAL_LEGAL' and $valores->visible == 1) {
				$comercial_legal[$n]['info'] = $valores->icono;
				$comercial_legal[$n]['cls']  = $valores->cls;
				$comercial_legal[$n]['color'] = $valores->color;
				$comercial_legal[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'COMPLIANCE' and $valores->visible == 1) {
				$compliance[$n]['info'] = $valores->icono;
				$compliance[$n]['cls']  = $valores->cls;
				$compliance[$n]['color'] = $valores->color;
				$compliance[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'PRENSAIV' and $valores->visible == 1) {
				$prensaiv[$n]['info'] = $valores->icono;
				$prensaiv[$n]['cls']  = $valores->cls;
				$prensaiv[$n]['color'] = $valores->color;
				$prensaiv[$n]['title'] = $valores->titulo;
			}
			$data[$valores->contraparte][$valores->clave_indicador] = $valores->titulo; 
			$data[$valores->contraparte][$valores->clave_indicador.'_icono']  = $valores->icono;
			$data[$valores->contraparte][$valores->clave_indicador.'_cls']    = $valores->cls;
			$data[$valores->contraparte][$valores->clave_indicador.'_color'] = $valores->color;
			$data[$valores->contraparte][$valores->clave_indicador.'_titulo']  = $valores->titulo;
		}
		$pais = array_map("unserialize", array_unique(array_map("serialize", $pais)));
		$familias = array_map("unserialize", array_unique(array_map("serialize", $familias)));
		$cv_iv = array_map("unserialize", array_unique(array_map("serialize", $cv_iv)));
		$valoracion_iv = array_map("unserialize", array_unique(array_map("serialize", $valoracion_iv)));
		$academico = array_map("unserialize", array_unique(array_map("serialize", $academico)));
		$profesional = array_map("unserialize", array_unique(array_map("serialize", $profesional)));
		$comercial_legal= array_map("unserialize", array_unique(array_map("serialize", $comercial_legal)));
		$compliance	= array_map("unserialize", array_unique(array_map("serialize", $compliance)));
		$prensaiv = array_map("unserialize", array_unique(array_map("serialize", $prensaiv)));
		$inquiro = [];
		$inquiro_en_proceso = [];
		//-----------
		if (empty($data)) {
			return json_encode( array( 'error'=>'Sin datos' ) );
		}
		//----------- 
		foreach ($data as $contraparte => $nd) {
			$pp = [];
			foreach ($columnas as $x => $col) {
				$g = (array) $col;
				$pp[$g['clave_indicador']] = $nd[ $g['clave_indicador'] ] ?? null;
				$pp[$g['clave_indicador'].'_icono'] = $nd[ $g['clave_indicador'].'_icono'] ?? null;
				$pp[$g['clave_indicador'].'_cls'] = $nd[ $g['clave_indicador'].'_cls'] ?? null;
				$pp[$g['clave_indicador'].'_color'] = $nd[ $g['clave_indicador'].'_color'] ?? null;
				$pp[$g['clave_indicador'].'_titulo'] = $nd[ $g['clave_indicador'].'_titulo'] ?? null;
			}
			//
			$pp['contraparte'] = $nd['contraparte'] ?? null;
			$pp['iv_busqueda'] = $nd['iv_busqueda'] ?? null;
			$pp['country_code'] = $nd['country_code'] ?? null;
			// NO SE MUESTRAN LOS DOCUMENTOS EN ESTADO ANULADO
			if ( !isset($nd['contraparte']) ){
				continue;
			}
			//------- SECCION DE TRADUCCIONES
			Traducciones::$blade = 'iv_panel_control';
			$trad = SQLConnection::obtenerTraduccionesPHP(Traducciones::$blade);
			//----
			$etiqueta_solicitud = env('TEXTO1_EN_PROCESO');
			$etiqueta_referencia = env('TEXTO2_EN_PROCESO');
			$etiqueta_redaccion = env('TEXTO3_EN_PROCESO');
			$etiqueta_control_calidad = env('TEXTO4_EN_PROCESO');
			//------
			if ( array_key_exists($etiqueta_solicitud,$trad) ) {
				foreach ($trad as $key => $value) {
					if ($etiqueta_solicitud == $key) {
						$etiqueta_solicitud = $value;
					}
				}
			}
			else {
				Traducciones::set($etiqueta_solicitud,Traducciones::$blade);
			}
			//-----
			if ( array_key_exists($etiqueta_referencia,$trad) ) {
				foreach ($trad as $key => $value) {
					if ($etiqueta_referencia == $key){
						$etiqueta_referencia = $value;
					}
				}
			}
			else {
				Traducciones::set($etiqueta_referencia,Traducciones::$blade);
			}
			//-----
			if ( array_key_exists($etiqueta_redaccion,$trad) ) {
				foreach ($trad as $key => $value) {
					if ($etiqueta_redaccion == $key){
						$etiqueta_redaccion = $value;
					}
				}
			}
			else {
				Traducciones::set($etiqueta_redaccion,Traducciones::$blade);
			}
			//----------	
			if ( array_key_exists($etiqueta_control_calidad,$trad) ) {
				foreach ($trad as $key => $value) {
					if ($etiqueta_control_calidad == $key){
						$etiqueta_control_calidad = $value;
					}
				}
			}
			else {
				Traducciones::set($etiqueta_control_calidad,Traducciones::$blade);
			}
			//---- FIN DE LA SECCION DE TRADUCCIONES
			if ($pp['IV_CV'] == env('TEXTO4_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO4_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO4_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO4_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO4_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO4_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO4_EN_PROCESO')) {
				//------------ SI TIENE ALGUN ESTADO EN PROCESO, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['IV_CV'] = null;
				$pp['IV_CV_cls'] = null;
				$pp['IV_CV_color'] = null;
				$pp['IV_CV_icono'] = null;
				$pp['IV_CV_titulo'] = null;
				$pp['VALORACION_IV'] = null;
				$pp['VALORACION_IV_cls'] = null;
				$pp['VALORACION_IV_color'] = null;
				$pp['VALORACION_IV_icono'] = null;
				$pp['VALORACION_IV_titulo'] = null;
				$pp['ACADEMICO'] = null;
				$pp['ACADEMICO_cls'] = null;
				$pp['ACADEMICO_color'] = null;
				$pp['ACADEMICO_icono'] = null;
				$pp['ACADEMICO_titulo'] = null;
				//-------- Y LE AGREGA EL ESTADO DE EN PROCESO A LA COLUMNA PROFESIONAL 
				$pp['PROFESIONAL'] = $etiqueta_control_calidad;
				$pp['PROFESIONAL_cls'] = 'XX';
				$pp['PROFESIONAL_color'] = env('COLOR4_EN_PROCESO');
				$pp['PROFESIONAL_icono'] = env('ICONO4_EN_PROCESO');
				$pp['PROFESIONAL_titulo'] = $etiqueta_control_calidad;
				$inquiro_en_proceso[] = $pp;
			}
			elseif ($pp['IV_CV'] == env('TEXTO1_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO1_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO1_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO1_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO1_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO1_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO1_EN_PROCESO')) {
				//-------- SI TIENE ALGUN ESTADO COMPLETANDO DOCUMENTO, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['VALORACION_IV'] = null;
				$pp['VALORACION_IV_cls'] = null;
				$pp['VALORACION_IV_color'] = null;
				$pp['VALORACION_IV_icono'] = null;
				$pp['VALORACION_IV_titulo'] = null;
				$pp['ACADEMICO'] = null;
				$pp['ACADEMICO_cls'] = null;
				$pp['ACADEMICO_color'] = null;
				$pp['ACADEMICO_icono'] = null;
				$pp['ACADEMICO_titulo'] = null;
				$pp['PROFESIONAL'] == null;
				$pp['PROFESIONAL_cls'] = null;
				$pp['PROFESIONAL_color'] = null;
				$pp['PROFESIONAL_icono'] = null;
				$pp['PROFESIONAL_titulo'] = null;
				//-------- Y LE AGREGA EL ESTADO COMPLETANDO DOCUMENTO A LA COLUMNA IV_CV
				$pp['IV_CV'] = $etiqueta_solicitud;
				$pp['IV_CV_cls'] = 'XX1';
				$pp['IV_CV_color'] = env('COLOR1_EN_PROCESO');
				$pp['IV_CV_icono'] = env('ICONO1_EN_PROCESO');
				$pp['IV_CV_titulo'] = $etiqueta_solicitud;
				$inquiro_en_proceso[] = $pp;
			}
			elseif ($pp['IV_CV'] == env('TEXTO2_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO2_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO2_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO2_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO2_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO2_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO2_EN_PROCESO')) {
				//-------- SI TIENE ALGUN ESTADO EN AGUARDANDO REFERENCIA, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['ACADEMICO'] = null;
				$pp['ACADEMICO_cls'] = null;
				$pp['ACADEMICO_color'] = null;
				$pp['ACADEMICO_icono'] = null;
				$pp['ACADEMICO_titulo'] = null;
				$pp['PROFESIONAL'] == null;
				$pp['PROFESIONAL_cls'] = null;
				$pp['PROFESIONAL_color'] = null;
				$pp['PROFESIONAL_icono'] = null;
				$pp['PROFESIONAL_titulo'] = null;
				$pp['IV_CV'] = null;
				$pp['IV_CV_cls'] = null;
				$pp['IV_CV_color'] = null;
				$pp['IV_CV_icono'] = null;
				$pp['IV_CV_titulo'] = null;
				//-------- Y LE AGREGA EL ESTADO AGUARDANDO REFERENCIA A LA COLUMNA VALORACION_IV
				$pp['VALORACION_IV'] = $etiqueta_referencia;
				$pp['VALORACION_IV_cls'] = 'XX2';
				$pp['VALORACION_IV_color'] = env('COLOR2_EN_PROCESO');
				$pp['VALORACION_IV_icono'] = env('ICONO2_EN_PROCESO');
				$pp['VALORACION_IV_titulo'] = $etiqueta_referencia;
				$inquiro_en_proceso[] = $pp;
			}
			elseif ($pp['IV_CV'] == env('TEXTO3_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO3_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO3_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO3_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO3_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO3_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO3_EN_PROCESO')) {
				//-------- SI TIENE ALGUN ESTADO EN REDACTANDO INFORME, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['PROFESIONAL'] == null;
				$pp['PROFESIONAL_cls'] = null;
				$pp['PROFESIONAL_color'] = null;
				$pp['PROFESIONAL_icono'] = null;
				$pp['PROFESIONAL_titulo'] = null;
				$pp['IV_CV'] = null;
				$pp['IV_CV_cls'] = null;
				$pp['IV_CV_color'] = null;
				$pp['IV_CV_icono'] = null;
				$pp['IV_CV_titulo'] = null;
				$pp['VALORACION_IV'] = null;
				$pp['VALORACION_IV_cls'] = null;
				$pp['VALORACION_IV_color'] = null;
				$pp['VALORACION_IV_icono'] = null;
				$pp['VALORACION_IV_titulo'] = null;
				$pp['ACADEMICO'] = $etiqueta_redaccion; //-------- Y LE AGREGA EL ESTADO REDACTANDO INFORME A LA COLUMNA ACADEMICO
				$pp['ACADEMICO_cls'] = 'XX3';
				$pp['ACADEMICO_color'] = env('COLOR3_EN_PROCESO');
				$pp['ACADEMICO_icono'] = env('ICONO3_EN_PROCESO');
				$pp['ACADEMICO_titulo'] = $etiqueta_redaccion;
				$inquiro_en_proceso[] = $pp;
			}
			elseif($pp['IV_CV'] == null and $pp['ACADEMICO'] == null and $pp['PRENSAIV'] == null and $pp['VALORACION_IV'] == null) {
				$inquiro_en_proceso[] = $pp;
			}
			else {
				$inquiro[] = $pp;	
			}
		}
		//--------------------- SECCION DONDE SE DETERMINA SI UNA DE LAS DOS SECCIONES SON VACIAS O NO
		//-------- VARIABLE QUE DETERMINA SI HAY ALGUNA SECCION VACIA
		$grid_tiene_valores = 0;
		//-------- SI NO HAY CONTRAPARTES QUE ESTEN EN PROCESO
		if ( empty($inquiro_en_proceso) ) {
			$grid_tiene_valores += 1;
		} elseif ( empty($inquiro) ) {
			//-------- SI NO HAY CONTRAPARTES QUE ESTEN FINALIZADAS
			$grid_tiene_valores += 2;
		} else {
			//-------- SI AMBAS SECCIONES TIENE CONTENIDO
			$grid_tiene_valores += 3;
		}
		//--------------------- SECCION DONDE SE ORDENAN LOS VALORES EN PROCESO DE FORMA DIAGONAL, PRIMERO SE VERIFICA QUE EL ARRAY DE EN PROCESO NO ESTE VACIO
		if ($grid_tiene_valores != 1) {
			//--------
			$inquiro_sorteado = [];
			$inquiro_xx = [];
			$inquiro_xx1 = [];
			$inquiro_xx2 = [];
			$inquiro_xx3 = [];
			$inquiro_sin_estado = [];
			//----- SE CORRE UN LOOP PARA SEPARAR EL CONTENIDO DE MANERA ORDENADA
			foreach ($inquiro_en_proceso as $key => $value) {
				if ( $value['IV_CV_cls'] == 'XX1' ) {
					array_push($inquiro_xx1,$value);
				} elseif ( $value['VALORACION_IV_cls'] == 'XX2' ) {
					array_push($inquiro_xx2,$value);
				} elseif ( $value['ACADEMICO_cls'] == 'XX3' ) {
					array_push($inquiro_xx3,$value);
				} elseif ( $value['PROFESIONAL_cls'] == 'XX' ) {
					array_push($inquiro_xx,$value);
				} else {
					array_push($inquiro_sin_estado,$value);
				}
			}
			//---------------- SE UNEN LOS ARRAYS DESPUES DEL LOOP EN EL ARRAY inquiro_sorteado PARA FORMAR LA ESTRUCTURA DIAGONAL
			$inquiro_sorteado = array_merge($inquiro_xx1,$inquiro_xx2,$inquiro_xx3,$inquiro_xx,$inquiro_sin_estado);
		}
		//------------ EN ESTA SECCION SE MODIFICAN LAS ULTIMAS CUATRO COLUMNAS DE LA SECCION EN PROCESO
		$columnas_en_proceso = [];
		//-------- SE CREA UN NUEVO ARRAY DE COLUMNAS Y SE LES SACA ALGUNOS CONTENIDOS DE LAS ULTIMAS CUATRO COLUMNAS
		foreach ($columnas as $key => $value) {
			if ($key < 8) {
				$objeto = clone $columnas[$key];
				array_push($columnas_en_proceso,$objeto);
			} elseif ($key >= 8 and $key <= 13) {
				//----------
				$objeto = clone $columnas[$key];
				if ($objeto->clave_indicador == 'IV_CV') {
				    //-------- Y LE AGREGA EL ESTADO REDACTANDO INFORME A LA COLUMNA ACADEMICO
					$objeto->class_icon = 'fas '.env('ICONO1_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_solicitud;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				elseif ($objeto->clave_indicador == 'VALORACION_IV') {
					$objeto->class_icon = 'fas '.env('ICONO2_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_referencia;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				elseif ($objeto->clave_indicador == 'ACADEMICO') {
					$objeto->class_icon = 'fas '.env('ICONO3_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_redaccion;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				elseif ($objeto->clave_indicador == 'PROFESIONAL') {
					$objeto->class_icon = 'fas '.env('ICONO4_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_control_calidad;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				else {
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
			}
		}
		// VARIABLE QUE INDICA SI LAS CONTRAPARTES QUE TIENEN QUE MOSTRARSE SON EN PROCESO O FINALIZADOS
		$filtro = $_POST['mostrar_en_proceso'];
		//----------- EN ESTA SECCION SE DEVUELVEN LOS VALORES A LA VISTA SEGUN EL ESTADO QUE TIENEN
	    if ( $grid_tiene_valores == 3) {            
            //--------SI ENTRA EN ESTA CONDICION DEVUELVE LOS VALORES FINALIZADOS
            if ($filtro == '0') {
                return json_encode( array(
                    'columnas' => $columnas,
                    'data' => $inquiro,
                    'pais' => $pais ,
                    'familias' => $familias,
                    //'cv' => $cv,
                    'cv_iv' => $cv_iv,
                    'valoracion_iv' => $valoracion_iv,
                    'academico' => $academico,
                    'profesional' => $profesional,
                    'comercial_legal' => $comercial_legal,
                    'compliance' => $compliance,
                    'prensa' => $prensaiv,
                    'indicador_boton' => '0',
                    'indicador_estado_grid' => '0',
                    'error'=>'0'
                ));
            } elseif ($filtro == '1') {
					//--------SI ENTRA EN ESTA CONDICION DEVUELVE LOS VALORES EN PROCESO
					// echo('debe ir a en procesos');die();
					//---NUEVO
                    return json_encode( array(
                    'columnas' => $columnas_en_proceso,
                    'data' => $inquiro_sorteado,
                    'pais' => $pais ,
                    'familias' => $familias,
                    //'cv' => $cv,
                    'cv_iv' => $cv_iv,
                    'valoracion_iv' => $valoracion_iv,
                    'academico' => $academico,
                    'profesional' => $profesional,
                    'comercial_legal' => $comercial_legal,
                    'compliance' => $compliance,
                    'prensa' => $prensaiv,
                    'indicador_boton' => '1',
                    'indicador_estado_grid' => '0',
                    'error'=>'0'
                ));
            }
        } elseif ( $grid_tiene_valores == 2 ) {
			//-------------- SI ENTRA EN ESTA CONDICION VA A DEVOLVER UNICAMENTE LOS QUE ESTAN EN PROCESO PORQUE NO HAY NINGUNO FINALIZADO
			// echo('VA A DEVOLVER UNICAMENTE LOS QUE ESTAN EN PROCESO PORQUE NO HAY NINGUNO FINALIZADO');die();
			if ( $filtro == '1' ){
				return json_encode( array(
					//---NUEVO
					'columnas' => $columnas_en_proceso,
					'data' => $inquiro_sorteado,
					'pais' => $pais ,
					'familias' => $familias,
					//'cv' => $cv,
					'cv_iv' => $cv_iv,
					'valoracion_iv' => $valoracion_iv,
					'academico' => $academico,
					'profesional' => $profesional,
					'comercial_legal' => $comercial_legal,
					'compliance' => $compliance,
					'prensa' => $prensaiv,
					'indicador_boton' => '1',
					'indicador_estado_grid' => '1',
					'error'=>'0'
				));
			} else {
				return json_encode( array(
					//---NUEVO
					'columnas' => $columnas_en_proceso,
					'data' => $inquiro_sorteado,
					'pais' => $pais ,
					'familias' => $familias,
					//'cv' => $cv,
					'cv_iv' => $cv_iv,
					'valoracion_iv' => $valoracion_iv,
					'academico' => $academico,
					'profesional' => $profesional,
					'comercial_legal' => $comercial_legal,
					'compliance' => $compliance,
					'prensa' => $prensaiv,
					'indicador_boton' => '0',
					'indicador_estado_grid' => '1',
					'error'=>'0'
				));
			}
        } elseif ( $grid_tiene_valores == 1) {
			//------------- SI ENTRA EN ESTA CONDICION VA A DEVOLVER LOS QUE ESTAN FINALIZADAS PORQUE NO HAY NINGUNO EN PROCESO
			// echo('SI ENTRA EN ESTA CONDICION VA A DEVOLVER LOS QUE ESTAN FINALIZADAS PORQUE NO HAY NINGUNO EN PROCESO');die();
			if ( $filtro == '0' ){
				return json_encode( array(
					'columnas' => $columnas,
					'data' => $inquiro,
					'pais' => $pais ,
					'familias' => $familias,
					'cv_iv' => $cv_iv,
					'valoracion_iv' => $valoracion_iv,
					'academico' => $academico,
					'profesional' => $profesional,
					'comercial_legal' => $comercial_legal,
					'compliance' => $compliance,
					'prensa' => $prensaiv,
					'indicador_boton' => '0',
					'indicador_estado_grid' => '2',
					'error'=>'0'
				));
			} else {
				return json_encode( array(
					'columnas' => $columnas,
					'data' => $inquiro,
					'pais' => $pais ,
					'familias' => $familias,
					'cv_iv' => $cv_iv,
					'valoracion_iv' => $valoracion_iv,
					'academico' => $academico,
					'profesional' => $profesional,
					'comercial_legal' => $comercial_legal,
					'compliance' => $compliance,
					'prensa' => $prensaiv,
					'indicador_boton' => '1',
					'indicador_estado_grid' => '2',
					'error'=>'0'
				));
			}
        }
	}

	// FUNCION QUE DEVUELVE LOS DATOS NECESARIOS PARA CREAR LA TABLA DEL PANEL DE INQUIRO
    public static function ivPanelFancyDataOld(){
		$cliente = Session::get('usuario')->cliente['client_id'];
		$user_id = Session::get('usuario')->user_id;	
		//
		$filtro = 0;
		// VARIABLE QUE TIENE EL CLAVE DEL INDICADOR
		$clave_indicador = (!is_null(Request::input('clave_indicador')) && !empty(Request::input('clave_indicador')) ) ? Request::input('clave_indicador') : NULL ;
		// VARIBLE QUE TIENE EL VALOR DEL INDICADOR A FILTRARSE CON
		$valor_texto_filtro = (!is_null(Request::input('valor_texto')) && !empty(Request::input('valor_texto')) ) ? Request::input('valor_texto') : NULL ;
		// VARIABLE QUE SI TIENE VALOR 1 NO FILTRA EL PANEL POR VISIBILIDAD
		$sin_filtro_visibilidad = (!is_null(Request::input('sin_filtro_visibilidad')) && !empty(Request::input('sin_filtro_visibilidad')) ) ? Request::input('sin_filtro_visibilidad') : NULL ;
		//
		if ( !is_null($clave_indicador) ){
			$filtro++;
		}
		/* 30/09/2020 El sp con la accion columnasr y indicadores_panel_controlr devuelven solo las columnas que el usuario tiene autorizadas */
		$columnas = SQLConnection::backendStoreProcedure('IV_panel_control', array('columnasr', $cliente, $user_id), 'select'); 
		$indicadores = SQLConnection::backendStoreProcedure('IV_panel_control', array('indicadores_panel_controlr', $cliente, $user_id), 'select');
		//
		$personas = SQLConnection::backendStoreProcedure('IV_panel_control', array('panel_control', $cliente), 'select');		
		//
		Traducciones::$blade = 'iv_panel_control_nuevo';
		$trad = SQLConnection::obtenerTraduccionesPHP(Traducciones::$blade);
		foreach ($columnas as $key => $value) {
			if ( isset($trad[$value->etiqueta_indicador]) ){
				$value->etiqueta_indicador = $trad[$value->etiqueta_indicador];
			} else {
				Traducciones::set($value->etiqueta_indicador,Traducciones::$blade);
			}
		}
		// --
		foreach ($indicadores as $key => $indic) {
			if( !(is_null($indic->titulo)) ){
				if( isset($trad[$indic->titulo]) ){
					$indic->titulo = $trad[$indic->titulo];
				} else {
					Traducciones::set($indic->titulo,Traducciones::$blade);
				}
			}
		}
		// --
		$indic = [];
		foreach ($columnas as $y => $col) {
			// se descartan las columnas fijas
			if ($col->orden_producto > 0) {
				$indic[] = $col->clave_indicador;
			}
		}
		// SECCION DE FILTRO
		$contrapartes_filtradas = [];
 		//
		if ( $clave_indicador == 'IV_OBSERVADOS' ){
			foreach( $indicadores as $n => $valores ){
				if ( $valores->visible == 0 && !in_array($valores->contraparte,$contrapartes_filtradas) ){
					if ( $valores->clave_indicador == 'IV_CV' || $valores->clave_indicador == 'VALORACION_IV' || $valores->clave_indicador == 'ACADEMICO' || $valores->clave_indicador == 'PROFESIONAL' || $valores->clave_indicador == 'COMERCIAL_LEGAL' || $valores->clave_indicador == 'COMPLIANCE' || $valores->clave_indicador == 'PRENSAIV' ){
						if ( $valores->valor_texto == 'O' ){
							array_push($contrapartes_filtradas,$valores->contraparte);
						}
					}
				}
			}
		} elseif ( $clave_indicador == 'SCORE_IV' ){
			foreach( $indicadores as $n => $valores ){
				if ( !in_array($valores->contraparte,$contrapartes_filtradas)  ){
					if ( $valores->clave_indicador == 'VALORACION_IV' && $valores->valor_texto == $valor_texto_filtro ){
						array_push($contrapartes_filtradas,$valores->contraparte);
					}
				}
			}
		} elseif ( $clave_indicador == 'COMPLIANCE' ) {
			foreach( $indicadores as $n => $valores ){
				if ( !in_array($valores->contraparte,$contrapartes_filtradas)  ){
					if ( $valores->clave_indicador == 'COMPLIANCE' && $valores->valor_texto == $valor_texto_filtro ){
						array_push($contrapartes_filtradas,$valores->contraparte);
					}
				}
			}
		} elseif ( $clave_indicador == 'ACADEMICO_IV' ){
			foreach( $indicadores as $n => $valores ){
				if ( !in_array($valores->contraparte,$contrapartes_filtradas)  ){
					if ( $valores->clave_indicador == 'ACADEMICO' && $valores->valor_texto == $valor_texto_filtro ){
						array_push($contrapartes_filtradas,$valores->contraparte);
					}
				}
			}
		} elseif ( $clave_indicador == 'PROFESIONAL_IV' ){
			foreach( $indicadores as $n => $valores ){
				if ( !in_array($valores->contraparte,$contrapartes_filtradas)  ){
					if ( $valores->clave_indicador == 'PROFESIONAL' && $valores->valor_texto == $valor_texto_filtro ){
						array_push($contrapartes_filtradas,$valores->contraparte);
					}
				}
			}
		} elseif ( $clave_indicador == 'COMERCIAL_LEGAL_IV' ){
			foreach( $indicadores as $n => $valores ){
				if ( !in_array($valores->contraparte,$contrapartes_filtradas)  ){
					if ( $valores->clave_indicador == 'COMERCIAL_LEGAL' && $valores->valor_texto == $valor_texto_filtro ){
						array_push($contrapartes_filtradas,$valores->contraparte);
					}
				}
			}
		}
		//
		$pais		= [];
		$familias 	= [];
		$data 		= [];
		foreach ($personas as $k => $cand) {
			if ( !empty($contrapartes_filtradas) && !in_array($cand->contraparte,$contrapartes_filtradas) ){
				unset($personas[$k]);
				continue;
			}
			//
			$cc = strtolower($cand->country_code);

			$pais[$k]['info'] = $cc;
			$pais[$k]['cls'] = 'flag-icon-' . $cc;
			$pais[$k]['val'] = '<span class=flag-icon flag-icon-background flag-icon-' . $cc .'></span>';

			$familias[$k]['value'] = $cand->familia;
			$data[$cand->contraparte] = (array) $cand;
			
			foreach ($indic as $j => $indica) {
				$data[$cand->contraparte][$indica]  = NULL;
				$data[$cand->contraparte]['icono'][$indica] = NULL;
				$data[$cand->contraparte]['cls'][$indica]   = NULL;
				$data[$cand->contraparte]['color'][$indica] = NULL;
				$data[$cand->contraparte]['title'][$indica] = NULL;
			}
		}
		//
		foreach ($data as $k => $iv) {
			$data[$k]['foto_60'] = '<img src="'. env('RUTA_DOCUMENTOS_IV') . '/' . $data[$k]['foto_60'] . '?r=' . time() .  '" border="0" class="img img-responsive" width="50" height="50" />';
			$data[$k]['country'] = strtolower($data[$k]['country_code']);
		}
		$cv_iv			    = [];
		$valoracion_iv		= [];
		$academico			= [];
		$profesional 		= [];
		$comercial_legal 	= [];
		$compliance 		= [];
		$prensaiv 			= [];
		$contrapartes_a_servidor = [];
		$indicador = 0;
		//
		//------ CREAR LA LISTA QUE VA A SER LLENADA CON LOS CONTRAPARTES DE LOS CASOS QUE ESTAN EN PROCESO QUE VAN A SER MANDADOS A LA BASE DE DATOS
		foreach ($indicadores as $n => $valores) {
			//
			if ( !empty($contrapartes_filtradas) && !in_array($valores->contraparte,$contrapartes_filtradas) ){
				unset($indicadores[$n]);
				continue;
			}
			//
			if ( $sin_filtro_visibilidad == '1' ){
				if ( $valores->clave_indicador == 'IV_CV' ){
					array_push($contrapartes_a_servidor,$valores->contraparte);
				}
			} else {
				if ($valores->visible == 0 and $valores->clave_indicador == 'IV_CV') {
					array_push($contrapartes_a_servidor,$valores->contraparte);
				}
			}
		}
		$contrapartres_a_servidor_cadena = implode(',',$contrapartes_a_servidor);
		//---------- NUEVA LLAMADA AL STORE , QUE DEVUELVE INDICADORES PARA SEPARAR LO QUE ESTA EN PROCESO EN TRES ESTADOS
		$iconos_devueltos = SQLConnection::backendStoreProcedure('iv_estados_en_proceso',array('LISTAR',$contrapartres_a_servidor_cadena));
		foreach ($indicadores as $n => $valores) {
			if ( $sin_filtro_visibilidad != '1'  ){
				//
				if ($valores->visible == 0 and $valores->clave_indicador != 'COMERCIAL_LEGAL' and $valores->clave_indicador != 'COMPLIANCE') {
					// COMENTADO TEMPORARIAMENTE DEVOLVER AL ESTADO ANTERIOR 07/12/2022 (RAMI)
					$valores->cls = 'XX1';
					$valores->icono = env('ICONO1_EN_PROCESO');
					$valores->color = env('COLOR1_EN_PROCESO');
					$valores->titulo = env('TEXTO1_EN_PROCESO');
					/* $valores->cls = 'XX';
					$valores->icono = env('ICONO4_EN_PROCESO');
					$valores->color = env('COLOR4_EN_PROCESO');
					$valores->titulo = env('TEXTO4_EN_PROCESO'); */
				}
				//---------  EN ESTA SECCION SE MODIFICAN LOS CONTENIDOS DE LOS QUE ESTAN EN PROCESO PARA SEPARAR A ALGUNOS EN TRES ESTADOS
				if ($valores->visible == 0 and $valores->clave_indicador == 'IV_CV') {
					foreach($iconos_devueltos as $p => $value) {
						if ($valores->contraparte == $value->contraparte){
							if ($value->ICONO == 'ICONO1') {
								$valores->cls = 'XX1';
								$valores->icono = env('ICONO1_EN_PROCESO');
								$valores->color = env('COLOR1_EN_PROCESO');
								$valores->titulo = env('TEXTO1_EN_PROCESO');
								break;
							}
							elseif($value->ICONO == 'ICONO2') {
								$valores->cls = 'XX2';
								$valores->icono = env('ICONO2_EN_PROCESO');
								$valores->color = env('COLOR2_EN_PROCESO');
								$valores->titulo = env('TEXTO2_EN_PROCESO');
								break;
							}
							elseif($value->ICONO == 'ICONO3'){
								$valores->cls = 'XX3';
								$valores->icono = env('ICONO3_EN_PROCESO');
								$valores->color = env('COLOR3_EN_PROCESO');
								$valores->titulo = env('TEXTO3_EN_PROCESO');
								break;
							}
						}
					}
				}
			}
            //			
			if($valores->clave_indicador == 'IV_CV' and $valores->visible == 1 ) {	
				$cv_iv[$n]['info'] = $valores->icono; 
				$cv_iv[$n]['cls']  = $valores->cls;
				$cv_iv[$n]['color'] = $valores->color;
				$cv_iv[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'VALORACION_IV' and $valores->visible == 1 ) {
				$valoracion_iv[$n]['info'] = $valores->icono;
				$valoracion_iv[$n]['cls']  = $valores->cls;
				$valoracion_iv[$n]['color'] = $valores->color;
				$valoracion_iv[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'ACADEMICO' and $valores->visible == 1) {
				$academico[$n]['info'] = $valores->icono;
				$academico[$n]['cls']  = $valores->cls;
				$academico[$n]['color'] = $valores->color;
				$academico[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'PROFESIONAL' and $valores->visible == 1) {
				$profesional[$n]['info'] = $valores->icono;
				$profesional[$n]['cls']  = $valores->cls;
				$profesional[$n]['color'] = $valores->color;
				$profesional[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'COMERCIAL_LEGAL' and $valores->visible == 1) {
				$comercial_legal[$n]['info'] = $valores->icono;
				$comercial_legal[$n]['cls']  = $valores->cls;
				$comercial_legal[$n]['color'] = $valores->color;
				$comercial_legal[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'COMPLIANCE' and $valores->visible == 1) {
				$compliance[$n]['info'] = $valores->icono;
				$compliance[$n]['cls']  = $valores->cls;
				$compliance[$n]['color'] = $valores->color;
				$compliance[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'PRENSAIV' and $valores->visible == 1) {
				$prensaiv[$n]['info'] = $valores->icono;
				$prensaiv[$n]['cls']  = $valores->cls;
				$prensaiv[$n]['color'] = $valores->color;
				$prensaiv[$n]['title'] = $valores->titulo;
			}
			$data[$valores->contraparte][$valores->clave_indicador] = $valores->titulo; 
			$data[$valores->contraparte][$valores->clave_indicador.'_icono']  = $valores->icono;
			$data[$valores->contraparte][$valores->clave_indicador.'_cls']    = $valores->cls;
			$data[$valores->contraparte][$valores->clave_indicador.'_color'] = $valores->color;
			$data[$valores->contraparte][$valores->clave_indicador.'_titulo']  = $valores->titulo;
		}
		$pais = array_map("unserialize", array_unique(array_map("serialize", $pais)));
		$familias = array_map("unserialize", array_unique(array_map("serialize", $familias)));
		$cv_iv = array_map("unserialize", array_unique(array_map("serialize", $cv_iv)));
		$valoracion_iv = array_map("unserialize", array_unique(array_map("serialize", $valoracion_iv)));
		$academico = array_map("unserialize", array_unique(array_map("serialize", $academico)));
		$profesional = array_map("unserialize", array_unique(array_map("serialize", $profesional)));
		$comercial_legal= array_map("unserialize", array_unique(array_map("serialize", $comercial_legal)));
		$compliance	= array_map("unserialize", array_unique(array_map("serialize", $compliance)));
		$prensaiv = array_map("unserialize", array_unique(array_map("serialize", $prensaiv)));
		$inquiro = [];
		$inquiro_en_proceso = [];


		$etiqueta_solicitud = env('TEXTO1_EN_PROCESO');
		$etiqueta_referencia = env('TEXTO2_EN_PROCESO');
		$etiqueta_redaccion = env('TEXTO3_EN_PROCESO');
		$etiqueta_control_calidad = env('TEXTO4_EN_PROCESO');
		//-----------
		if (empty($data)) {
			return json_encode( array( 'error'=>'1' ) );
		}
		//----------- 
		foreach ($data as $contraparte => $nd) {
			$pp = [];
			foreach ($columnas as $x => $col) {
				$g = (array) $col;
				$pp[$g['clave_indicador']] = $nd[ $g['clave_indicador'] ] ?? null;
				$pp[$g['clave_indicador'].'_icono'] = $nd[ $g['clave_indicador'].'_icono'] ?? null;
				$pp[$g['clave_indicador'].'_cls'] = $nd[ $g['clave_indicador'].'_cls'] ?? null;
				$pp[$g['clave_indicador'].'_color'] = $nd[ $g['clave_indicador'].'_color'] ?? null;
				$pp[$g['clave_indicador'].'_titulo'] = $nd[ $g['clave_indicador'].'_titulo'] ?? null;
			}
			//
			$pp['contraparte'] = $nd['contraparte'] ?? null;
			$pp['iv_busqueda'] = $nd['iv_busqueda'] ?? null;
			$pp['country_code'] = $nd['country_code'] ?? null;
			// NO SE MUESTRAN LOS DOCUMENTOS EN ESTADO ANULADO
			if ( !isset($nd['contraparte']) ){
				continue;
			}
			//------- SECCION DE TRADUCCIONES
			Traducciones::$blade = 'iv_panel_control';
			$trad = SQLConnection::obtenerTraduccionesPHP(Traducciones::$blade);
			//----
			// $etiqueta_solicitud = env('TEXTO1_EN_PROCESO');
			// $etiqueta_referencia = env('TEXTO2_EN_PROCESO');
			// $etiqueta_redaccion = env('TEXTO3_EN_PROCESO');
			// $etiqueta_control_calidad = env('TEXTO4_EN_PROCESO');
			//------
			if ( array_key_exists($etiqueta_solicitud,$trad) ) {
				foreach ($trad as $key => $value) {
					if ($etiqueta_solicitud == $key) {
						$etiqueta_solicitud = $value;
					}
				}
			}
			else {
				Traducciones::set($etiqueta_solicitud,Traducciones::$blade);
			}
			//-----
			if ( array_key_exists($etiqueta_referencia,$trad) ) {
				foreach ($trad as $key => $value) {
					if ($etiqueta_referencia == $key){
						$etiqueta_referencia = $value;
					}
				}
			}
			else {
				Traducciones::set($etiqueta_referencia,Traducciones::$blade);
			}
			//-----
			if ( array_key_exists($etiqueta_redaccion,$trad) ) {
				foreach ($trad as $key => $value) {
					if ($etiqueta_redaccion == $key){
						$etiqueta_redaccion = $value;
					}
				}
			}
			else {
				Traducciones::set($etiqueta_redaccion,Traducciones::$blade);
			}
			//----------
			if ( array_key_exists($etiqueta_control_calidad,$trad) ) {
				foreach ($trad as $key => $value) {
					if ($etiqueta_control_calidad == $key){
						$etiqueta_control_calidad = $value;
					}
				}
			}
			else {
				Traducciones::set($etiqueta_control_calidad,Traducciones::$blade);
			}
			//---- FIN DE LA SECCION DE TRADUCCIONES
			if ($pp['IV_CV'] == env('TEXTO4_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO4_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO4_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO4_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO4_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO4_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO4_EN_PROCESO')) {
				//------------ SI TIENE ALGUN ESTADO EN PROCESO, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['IV_CV'] = null;
				$pp['IV_CV_cls'] = null;
				$pp['IV_CV_color'] = null;
				$pp['IV_CV_icono'] = null;
				$pp['IV_CV_titulo'] = null;
				$pp['VALORACION_IV'] = null;
				$pp['VALORACION_IV_cls'] = null;
				$pp['VALORACION_IV_color'] = null;
				$pp['VALORACION_IV_icono'] = null;
				$pp['VALORACION_IV_titulo'] = null;
				$pp['ACADEMICO'] = null;
				$pp['ACADEMICO_cls'] = null;
				$pp['ACADEMICO_color'] = null;
				$pp['ACADEMICO_icono'] = null;
				$pp['ACADEMICO_titulo'] = null;
				//-------- Y LE AGREGA EL ESTADO DE EN PROCESO A LA COLUMNA PROFESIONAL 
				$pp['PROFESIONAL'] = $etiqueta_control_calidad;
				$pp['PROFESIONAL_cls'] = 'XX';
				$pp['PROFESIONAL_color'] = env('COLOR4_EN_PROCESO');
				$pp['PROFESIONAL_icono'] = env('ICONO4_EN_PROCESO');
				$pp['PROFESIONAL_titulo'] = $etiqueta_control_calidad;
				$inquiro_en_proceso[] = $pp;
			}
			elseif ($pp['IV_CV'] == env('TEXTO1_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO1_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO1_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO1_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO1_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO1_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO1_EN_PROCESO')) {
				//-------- SI TIENE ALGUN ESTADO COMPLETANDO DOCUMENTO, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['VALORACION_IV'] = null;
				$pp['VALORACION_IV_cls'] = null;
				$pp['VALORACION_IV_color'] = null;
				$pp['VALORACION_IV_icono'] = null;
				$pp['VALORACION_IV_titulo'] = null;
				$pp['ACADEMICO'] = null;
				$pp['ACADEMICO_cls'] = null;
				$pp['ACADEMICO_color'] = null;
				$pp['ACADEMICO_icono'] = null;
				$pp['ACADEMICO_titulo'] = null;
				$pp['PROFESIONAL'] == null;
				$pp['PROFESIONAL_cls'] = null;
				$pp['PROFESIONAL_color'] = null;
				$pp['PROFESIONAL_icono'] = null;
				$pp['PROFESIONAL_titulo'] = null;
				//-------- Y LE AGREGA EL ESTADO COMPLETANDO DOCUMENTO A LA COLUMNA IV_CV
				$pp['IV_CV'] = $etiqueta_solicitud;
				$pp['IV_CV_cls'] = 'XX1';
				$pp['IV_CV_color'] = env('COLOR1_EN_PROCESO');
				$pp['IV_CV_icono'] = env('ICONO1_EN_PROCESO');
				$pp['IV_CV_titulo'] = $etiqueta_solicitud;
				$inquiro_en_proceso[] = $pp;
			}
			elseif ($pp['IV_CV'] == env('TEXTO2_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO2_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO2_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO2_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO2_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO2_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO2_EN_PROCESO')) {
				//-------- SI TIENE ALGUN ESTADO EN AGUARDANDO REFERENCIA, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['ACADEMICO'] = null;
				$pp['ACADEMICO_cls'] = null;
				$pp['ACADEMICO_color'] = null;
				$pp['ACADEMICO_icono'] = null;
				$pp['ACADEMICO_titulo'] = null;
				$pp['PROFESIONAL'] == null;
				$pp['PROFESIONAL_cls'] = null;
				$pp['PROFESIONAL_color'] = null;
				$pp['PROFESIONAL_icono'] = null;
				$pp['PROFESIONAL_titulo'] = null;
				$pp['IV_CV'] = null;
				$pp['IV_CV_cls'] = null;
				$pp['IV_CV_color'] = null;
				$pp['IV_CV_icono'] = null;
				$pp['IV_CV_titulo'] = null;
				//-------- Y LE AGREGA EL ESTADO AGUARDANDO REFERENCIA A LA COLUMNA VALORACION_IV
				$pp['VALORACION_IV'] = $etiqueta_referencia;
				$pp['VALORACION_IV_cls'] = 'XX2';
				$pp['VALORACION_IV_color'] = env('COLOR2_EN_PROCESO');
				$pp['VALORACION_IV_icono'] = env('ICONO2_EN_PROCESO');
				$pp['VALORACION_IV_titulo'] = $etiqueta_referencia;
				$inquiro_en_proceso[] = $pp;
			}
			elseif ($pp['IV_CV'] == env('TEXTO3_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO3_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO3_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO3_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO3_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO3_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO3_EN_PROCESO')) {
				//-------- SI TIENE ALGUN ESTADO EN REDACTANDO INFORME, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['PROFESIONAL'] == null;
				$pp['PROFESIONAL_cls'] = null;
				$pp['PROFESIONAL_color'] = null;
				$pp['PROFESIONAL_icono'] = null;
				$pp['PROFESIONAL_titulo'] = null;
				$pp['IV_CV'] = null;
				$pp['IV_CV_cls'] = null;
				$pp['IV_CV_color'] = null;
				$pp['IV_CV_icono'] = null;
				$pp['IV_CV_titulo'] = null;
				$pp['VALORACION_IV'] = null;
				$pp['VALORACION_IV_cls'] = null;
				$pp['VALORACION_IV_color'] = null;
				$pp['VALORACION_IV_icono'] = null;
				$pp['VALORACION_IV_titulo'] = null;
				$pp['ACADEMICO'] = $etiqueta_redaccion; //-------- Y LE AGREGA EL ESTADO REDACTANDO INFORME A LA COLUMNA ACADEMICO
				$pp['ACADEMICO_cls'] = 'XX3';
				$pp['ACADEMICO_color'] = env('COLOR3_EN_PROCESO');
				$pp['ACADEMICO_icono'] = env('ICONO3_EN_PROCESO');
				$pp['ACADEMICO_titulo'] = $etiqueta_redaccion;
				$inquiro_en_proceso[] = $pp;
			}
			elseif($pp['IV_CV'] == null and $pp['ACADEMICO'] == null and $pp['PRENSAIV'] == null and $pp['VALORACION_IV'] == null) {
				$inquiro_en_proceso[] = $pp;
			}
			else {
				$inquiro[] = $pp;	
			}
		}
		//--------------------- SECCION DONDE SE DETERMINA SI UNA DE LAS DOS SECCIONES SON VACIAS O NO
		//-------- VARIABLE QUE DETERMINA SI HAY ALGUNA SECCION VACIA
		$grid_tiene_valores = 0;
		//-------- SI NO HAY CONTRAPARTES QUE ESTEN EN PROCESO
		if ( empty($inquiro_en_proceso) ) {
			$grid_tiene_valores += 1;
		} elseif ( empty($inquiro) ) {
			//-------- SI NO HAY CONTRAPARTES QUE ESTEN FINALIZADAS
			$grid_tiene_valores += 2;
		} else {
			//-------- SI AMBAS SECCIONES TIENE CONTENIDO
			$grid_tiene_valores += 3;
		}
		//--------------------- SECCION DONDE SE ORDENAN LOS VALORES EN PROCESO DE FORMA DIAGONAL, PRIMERO SE VERIFICA QUE EL ARRAY DE EN PROCESO NO ESTE VACIO
		if ($grid_tiene_valores != 1) {
			//--------
			$inquiro_sorteado = [];
			$inquiro_xx = [];
			$inquiro_xx1 = [];
			$inquiro_xx2 = [];
			$inquiro_xx3 = [];
			$inquiro_sin_estado = [];
			//----- SE CORRE UN LOOP PARA SEPARAR EL CONTENIDO DE MANERA ORDENADA
			foreach ($inquiro_en_proceso as $key => $value) {
				if ( $value['IV_CV_cls'] == 'XX1' ) {
					array_push($inquiro_xx1,$value);
				} elseif ( $value['VALORACION_IV_cls'] == 'XX2' ) {
					array_push($inquiro_xx2,$value);
				} elseif ( $value['ACADEMICO_cls'] == 'XX3' ) {
					array_push($inquiro_xx3,$value);
				} elseif ( $value['PROFESIONAL_cls'] == 'XX' ) {
					array_push($inquiro_xx,$value);
				} else {
					array_push($inquiro_sin_estado,$value);
				}
			}
			//---------------- SE UNEN LOS ARRAYS DESPUES DEL LOOP EN EL ARRAY inquiro_sorteado PARA FORMAR LA ESTRUCTURA DIAGONAL
			$inquiro_sorteado = array_merge($inquiro_xx1,$inquiro_xx2,$inquiro_xx3,$inquiro_xx,$inquiro_sin_estado);
		}
		//------------ EN ESTA SECCION SE MODIFICAN LAS ULTIMAS CUATRO COLUMNAS DE LA SECCION EN PROCESO
		$columnas_en_proceso = [];
		//-------- SE CREA UN NUEVO ARRAY DE COLUMNAS Y SE LES SACA ALGUNOS CONTENIDOS DE LAS ULTIMAS CUATRO COLUMNAS
		foreach ($columnas as $key => $value) {
			if ($key < 8) {
				$objeto = clone $columnas[$key];
				array_push($columnas_en_proceso,$objeto);
			} elseif ($key >= 8 and $key <= 13) {
				//----------
				$objeto = clone $columnas[$key];
				if ($objeto->clave_indicador == 'IV_CV') {
				    //-------- Y LE AGREGA EL ESTADO REDACTANDO INFORME A LA COLUMNA ACADEMICO
					$objeto->class_icon = 'fas '.env('ICONO1_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_solicitud;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				elseif ($objeto->clave_indicador == 'VALORACION_IV') {
					$objeto->class_icon = 'fas '.env('ICONO2_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_referencia;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				elseif ($objeto->clave_indicador == 'ACADEMICO') {
					$objeto->class_icon = 'fas '.env('ICONO3_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_redaccion;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				elseif ($objeto->clave_indicador == 'PROFESIONAL') {
					$objeto->class_icon = 'fas '.env('ICONO4_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_control_calidad;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				else {
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
			}
		}
		// VARIABLE QUE INDICA SI LAS CONTRAPARTES QUE TIENEN QUE MOSTRARSE SON EN PROCESO O FINALIZADOS
		$en_proceso = $_POST['mostrar_en_proceso'];
		
		//----------- EN ESTA SECCION SE DEVUELVEN LOS VALORES A LA VISTA SEGUN EL ESTADO QUE TIENEN
	    if ( $grid_tiene_valores == 3) {            
            //--------SI ENTRA EN ESTA CONDICION DEVUELVE LOS VALORES FINALIZADOS
            if ($en_proceso == '0') {
                return json_encode( array(
                    'columnas' => $columnas,
                    'data' => $inquiro,
                    'pais' => $pais ,
                    'familias' => $familias,
                    //'cv' => $cv,
                    'cv_iv' => $cv_iv,
                    'valoracion_iv' => $valoracion_iv,
                    'academico' => $academico,
                    'profesional' => $profesional,
                    'comercial_legal' => $comercial_legal,
                    'compliance' => $compliance,
                    'prensa' => $prensaiv,
                    'indicador_boton' => '0',
                    'indicador_estado_grid' => '0',
                    'error'=>'0',
					'filtro' => $filtro
                ));
            } elseif ($en_proceso == '1') {
					//--------SI ENTRA EN ESTA CONDICION DEVUELVE LOS VALORES EN PROCESO
					// echo('debe ir a en procesos');die();
					//---NUEVO
                    return json_encode( array(
                    'columnas' => $columnas_en_proceso,
                    'data' => $inquiro_sorteado,
                    'pais' => $pais ,
                    'familias' => $familias,
                    //'cv' => $cv,
                    'cv_iv' => $cv_iv,
                    'valoracion_iv' => $valoracion_iv,
                    'academico' => $academico,
                    'profesional' => $profesional,
                    'comercial_legal' => $comercial_legal,
                    'compliance' => $compliance,
                    'prensa' => $prensaiv,
                    'indicador_boton' => '1',
                    'indicador_estado_grid' => '0',
                    'error'=>'0',
					'filtro' => $filtro
                ));
            }
        } elseif ( $grid_tiene_valores == 2 ) {
			//-------------- SI ENTRA EN ESTA CONDICION VA A DEVOLVER UNICAMENTE LOS QUE ESTAN EN PROCESO PORQUE NO HAY NINGUNO FINALIZADO
			// echo('VA A DEVOLVER UNICAMENTE LOS QUE ESTAN EN PROCESO PORQUE NO HAY NINGUNO FINALIZADO');die();
			if ( $en_proceso == '1' ){
				return json_encode( array(
					//---NUEVO
					'columnas' => $columnas_en_proceso,
					'data' => $inquiro_sorteado,
					'pais' => $pais ,
					'familias' => $familias,
					//'cv' => $cv,
					'cv_iv' => $cv_iv,
					'valoracion_iv' => $valoracion_iv,
					'academico' => $academico,
					'profesional' => $profesional,
					'comercial_legal' => $comercial_legal,
					'compliance' => $compliance,
					'prensa' => $prensaiv,
					'indicador_boton' => '1',
					'indicador_estado_grid' => '1',
					'error'=>'0',
					'filtro' => $filtro
				));
			} else {
				return json_encode( array(
					//---NUEVO
					'columnas' => $columnas_en_proceso,
					'data' => $inquiro_sorteado,
					'pais' => $pais ,
					'familias' => $familias,
					//'cv' => $cv,
					'cv_iv' => $cv_iv,
					'valoracion_iv' => $valoracion_iv,
					'academico' => $academico,
					'profesional' => $profesional,
					'comercial_legal' => $comercial_legal,
					'compliance' => $compliance,
					'prensa' => $prensaiv,
					'indicador_boton' => '0',
					'indicador_estado_grid' => '1',
					'error'=>'0',
					'filtro' => $filtro
				));
			}
        } elseif ( $grid_tiene_valores == 1) {
			//------------- SI ENTRA EN ESTA CONDICION VA A DEVOLVER LOS QUE ESTAN FINALIZADAS PORQUE NO HAY NINGUNO EN PROCESO
			// echo('SI ENTRA EN ESTA CONDICION VA A DEVOLVER LOS QUE ESTAN FINALIZADAS PORQUE NO HAY NINGUNO EN PROCESO');die();
			if ( $en_proceso == '0' ){
				return json_encode( array(
					'columnas' => $columnas,
					'data' => $inquiro,
					'pais' => $pais ,
					'familias' => $familias,
					//'cv' => $cv,
					'cv_iv' => $cv_iv,
					'valoracion_iv' => $valoracion_iv,
					'academico' => $academico,
					'profesional' => $profesional,
					'comercial_legal' => $comercial_legal,
					'compliance' => $compliance,
					'prensa' => $prensaiv,
					'indicador_boton' => '0',
					'indicador_estado_grid' => '2',
					'error'=>'0',
					'filtro' => $filtro
				));
			} else {
				return json_encode( array(
					'columnas' => $columnas,
					'data' => $inquiro,
					'pais' => $pais ,
					'familias' => $familias,
					//'cv' => $cv,
					'cv_iv' => $cv_iv,
					'valoracion_iv' => $valoracion_iv,
					'academico' => $academico,
					'profesional' => $profesional,
					'comercial_legal' => $comercial_legal,
					'compliance' => $compliance,
					'prensa' => $prensaiv,
					'indicador_boton' => '1',
					'indicador_estado_grid' => '2',
					'error'=>'0',
					'filtro' => $filtro
				));
			}
        }
	}

    // DEVUELVE LOS DATOS PARA GENERAR EL MODAL
    public static function ivModalNuevo() {
		
		$iv_busqueda = Request::input('iv_busqueda');
		$contraparte = Request::input('contraparte');
		$en_proceso = Request::input('es_en_proceso');
		// este es el nombre del index (valor texto) de la columna clickeada en la fancy.
		$column = Request::input('column');
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$familia = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $contraparte, null, null, null, null, null), 'selectOne');
		if ( !is_null($iv_busqueda) ){
			$busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', $iv_busqueda), 'selectOne');
		} else {
			$busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search',NULL,$contraparte), 'selectOne');
			$iv_busqueda = $busqueda->iv_busqueda;
		}
		//
		$files = self::getIVFiles($iv_busqueda);
		$cv_exists = $files['cv_exists'];
		$cv_full_url = $files['cv_full_url'];
		$foto_exists = $files['foto_exists'];
		$foto_full_url = $files['foto_full_url'];

		$iv_exists = FALSE;
		$iv_full_url = NULL;
		if (file_exists( env('PATH_DOSSIER_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->contraparte . '_' . $busqueda->gestion . '.pdf' )) {
			$iv_exists = TRUE;
			$iv_full_url = env('RUTA_DOSSIER_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->contraparte . '_' . $busqueda->gestion . '.pdf?rnd=' . time();
		}
		$indicadores = SQLConnection::backendStoreProcedure('IV_panel_control', array('obtener_indicadores',null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,$contraparte), 'select');
		$usuarios_restricciones = Session::get('usuarios_restricciones');
		$servicio_actual = Session::get('servicio_actual');
		if(!empty($usuarios_restricciones)){
			foreach ($usuarios_restricciones as $key_ur => $value_ur) {
				if($servicio_actual == $key_ur){
					foreach ($value_ur as $key_n2 => $value_n2) {
						foreach ($indicadores as $key => $value) {
							if ($value->indicador == $value_n2->indicador){
								unset($indicadores[$key]);
							}
						}
					}
				}
			}
		}
		
		$vista = \View::make('/iv/new/iv_modal_panel')->with(compact(['contrap', 'familia', 'busqueda', 'column', 'cv_exists', 'cv_full_url', 'foto_exists', 'foto_full_url', 'iv_exists', 'iv_full_url', 'indicadores','en_proceso']))->render();

		return json_encode(array(   
            'nombre_persona' => $contrap->nombre_persona,
            'abreviatura' => $contrap->abreviatura,
            'identificacion' => $contrap->identificacion,
            'country' =>  '<span class="flag-icon flag-icon-background flag-icon-' . strtolower($contrap->country_code) . '"></span>',
            'vista' => $vista
        ));

	}

    // DEVUELVE BÚSQUEDA
    public static function getIVFiles($iv_busqueda = null) {

		$cv_exists = FALSE;
		$cv_full_url = NULL;
		$foto_exists = FALSE;
		$foto_full_url = NULL;
		
		if (!empty($iv_busqueda)) {
			$pattern = str_pad($iv_busqueda, 8, '0', STR_PAD_LEFT) . '_*.*';
			
			$busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', $iv_busqueda), 'selectOne');
			
			// Buscar el archivo de CV -- puede ser PDF o Word  y la foto de perfil
			$rootpath = env('PATH_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion;
			
			$foto_file = str_pad($iv_busqueda, 8, '0', STR_PAD_LEFT) . '_foto_120.jpg';
			$foto_full_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion . '/' . $foto_file . '?r=' . time();
			
			if (is_dir($rootpath)) {				
				$files = glob( $rootpath . '/' . $pattern );
				foreach ($files as $f => $file) {
					$extn = strtolower(substr($file, strrpos($file, '.') + 1));					
					if ($cv_full_url == NULL) {
						if ($extn == 'pdf' /*OR $extn == 'doc' OR $extn == 'docx'*/) {
							$cv_file = basename($file);							
							$cv_full_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->cliente . '/' . $busqueda->contraparte . '/' . $busqueda->gestion . '/' . $cv_file . '?r=' . time();
							$cv_exists = TRUE;
						}
					}					
				}
			}		
		}

		return array('cv_exists' => $cv_exists, 'cv_full_url' => $cv_full_url, 'foto_exists' => $foto_exists, 'foto_full_url' => $foto_full_url);
	}

	// DEVUELVE LOS DATOS PARA GENERAR EL MODAL
    public static function ivExportarExcelNuevo(){
		$data = json_decode($_POST['data']);
		if ( is_string($data) ){
			$fecha = date("Y-m-d");
			$nombreExcel = 'Reporte_InquiroVitae_'.$fecha.'.xlsx';
			//
			$xlsx = SimpleXLSXGen::fromArray( $data );
			$xlsx->saveAs(env('EXCEL_INQUIRO_GUARDAR').$nombreExcel); // or downloadAs('books.xlsx') or $xlsx_content = (string) $xlsx
			echo(env('EXCEL_INQUIRO_BUSCAR').$nombreExcel);
		} else {
			throw new \Exception('Datos invalidos recibidos.');
		}
	}

	public static function eliminaResiduos(){
		$url = Request::input('url_nueva');
		$url = explode('/', $url);
		$url_expl = $url[2];
		unlink(env('EXCEL_INQUIRO_GUARDAR').$url_expl);
	}

	// DEVUELVE LOS DATOS PARA GENERAR EL MODAL
    public static function ivExportarExcelNuevo_Original() {
		
		$cliente = Session::get('usuario')->cliente['client_id'];
		$contrapartes = Request::input('contrapartes');

		$acontr = explode(',', $contrapartes); 

		$candidatos = SQLConnection::backendStoreProcedure('IV_panel_control', array('panel_control_excel', $cliente), 'select');
        
		$user_id = Session::get('usuario')->user_id;
		$columnas = SQLConnection::backendStoreProcedure('IV_panel_control', array('columnasr', $cliente, $user_id), 'select'); 
		$indicadores = SQLConnection::backendStoreProcedure('IV_panel_control', array('indicadores_panel_controlr', $cliente, $user_id), 'select');

		foreach($candidatos as $cand) {
			if (in_array($cand->contraparte, $acontr)) {
				$data[$cand->contraparte]['pais'] = $cand->country_name;
				$data[$cand->contraparte]['familia'] = $cand->familia;
				$data[$cand->contraparte]['nombre'] = $cand->nombre_persona;
				$data[$cand->contraparte]['fecha'] = $cand->creado;
				$data[$cand->contraparte]['referencia'] = $cand->ref . ' - ' . $cand->ref_nombre;
				$data[$cand->contraparte]['sector'] = $cand->ref_seccion;
				$data[$cand->contraparte]['cargo'] = $cand->ref_cargo;
				$data[$cand->contraparte]['tipo'] = $cand->abreviatura;
				$data[$cand->contraparte]['documento'] = $cand->identificacion;
				$data[$cand->contraparte]['email'] = $cand->email_candidato;
				$data[$cand->contraparte]['telefono'] = $cand->telefono_candidato;
			}
		}

		// Acá hago corte de control por ID de contraparte para no buscar en array por cada registro de indicadores
		$last = 0;
		foreach($indicadores as $indica) {
			if ($indica->contraparte != $last) {
				$cand = $indica->contraparte;
				$incluye = in_array($cand, $acontr);
			}
            //--
			if ($incluye) {
				if($indica->clave_indicador == 'IV_CV') {
					if ($indica->valor_numerico == '1') {
                        $data[$cand][$indica->clave_indicador] = 'SI'; 
                    }
					else {	
                        $data[$cand][$indica->clave_indicador] = 'NO'; 
                    }
				} 
				else {
				$data[$cand][$indica->clave_indicador] = $indica->valor_texto != NULL ? ( ($indica->valor_texto == 'P') ? 'Positivo' : (($indica->valor_texto == 'O') ? 'Observado' : 'Alerta') ) : NULL;
				}
			}
			$last = $cand;
		}
		
		$file = '<table border="1">';
		$file .= '<tr><th>País</th><th>Familia</th><th>Apellido y Nombres</th><th>Fecha</th><th>Referencia</th><th>Sector</th><th>Cargo</th>';
		$file .= '<th>Tipo</th><th>Documento</th><th>E-mail</th><th>Teléfono</th>';
        // $fileArray = json_encode(['Pais']);

		foreach($columnas as $j => $col) {
			if ($col->orden_producto <= 0) { continue; }
			$file .= '<th>' . $col->etiqueta_indicador . '</th>';
		}
		$file .= '</tr>';
		
		foreach($data as $x => $candidato) {
			$file .= '<tr>';
			$file .= '<td style="text-align:center;">' . $candidato['pais'] . '</td>';
			$file .= '<td>' . $candidato['familia'] . '</td>';
			$file .= '<td>' . $candidato['nombre'] . '</td>';
			$file .= '<td style="text-align:center;">' . $candidato['fecha'] . '</td>';
			$file .= '<td>' . $candidato['referencia'] . '</td>';
			$file .= '<td>' . $candidato['sector'] . '</td>';
			$file .= '<td>' . $candidato['cargo'] . '</td>';
			$file .= '<td>' . $candidato['tipo'] . '</td>';
			$file .= '<td style="mso-number-format:\'@\';">' . $candidato['documento'] . '</td>';
			$file .= '<td>' . $candidato['email'] . '</td>';
			$file .= '<td style="mso-number-format:\'@\';">' . $candidato['telefono'] . '</td>';
            
			foreach($columnas as $j => $col) {
				if ($col->orden_producto <= 0) { continue; }
				$file .= '<td style="text-align:center;">' .(isset($candidato[$col->clave_indicador]) ? $candidato[$col->clave_indicador] : '') . '</td>';				
			}
			$file .= '</tr>';
		}
		$file .= '</table>';

		$fecha = date("Y-m-d");
		header('Content-disposition: attachment; filename=Reporte_InquiroVitae_' . $fecha . '.xlsx');
		// header('Content-type: application/vnd.ms-excel; charset=utf-8');
        header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml; charset=utf-8');

		$file = utf8_decode($file);
		$response =  array(
			'op' => 'ok',
			'archivo' => 'Reporte_InquiroVitae_' . $fecha . '.xlsx',
            'file' => "data:application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml;base64,".base64_encode($file)
			// 'file' => "data:application/vnd.ms-excel;base64,".base64_encode($file)
		);

		return(json_encode($response));
	}

	// DEVUELVE LA VISTA DEL CV DE INQUIRO
	public function ivDatosCV() {
		$iv_busqueda = Request::input('iv_busqueda');
		//
		$files = self::getIVFiles($iv_busqueda);
		$cv_exists = $files['cv_exists'];
		$cv_full_url = $files['cv_full_url'];
		$foto_exists = $files['foto_exists'];
		$foto_full_url = $files['foto_full_url'];
		//
		return view('/iv/new/iv_datos_cv')->with(compact(['files']));
	}

	// DEVUELVE LA VISTA DE LOS ANEXOS DEL MODAL
	public function ivDatosAnexos() {
		$iv_busqueda = Request::input('iv_busqueda');
		$contraparte = Request::input('contraparte');
		$busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', $iv_busqueda), 'selectOne');
		//
		//$docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$docs = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('DOCUMENTOS_GESTION_ACTIVA',
		$contraparte,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		null,
		'L'));
		//
		$cumpldoc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte',null,null,null,$contraparte,'CUMPL_DOC'), 'selectOne');
		//
		$files = [];
		$n = -1;
		foreach ($docs as $k => $doc) {
			if ($doc->estado_doc == 'N' || $doc->estado_doc == 'I' || $doc->estado_doc == 'R' || $doc->estado_doc == 'V'){
				$n++;
				$file_path = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
				$file_url = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf' . '?rnd=' . time();
				//
				$file_exists = file_exists($file_path);
				//
				$files[$n]['path'] = $file_path;
				$files[$n]['url'] = $file_url;
				$files[$n]['exists'] = $file_exists;
			}
		}
		/* Traducciones de los nombres de documento */
		Traducciones::$blade = 'iv_datos_anexos';
		SQLConnection::obtenerTraducciones(Traducciones::$blade); 
		//
		return view('/iv/new/iv_datos_anexos')->with(compact(['busqueda', 'docs', 'files', 'cumpldoc']));
	}

	// DEVUELVE LOS CAMPOS QUE TIENE EL DOCUMENTO PEDIDO
    public static function ivDocsDetailAnexo() {
		$plain = null != Request::input('plain') ? Request::input('plain') : false;
		$carga = null != Request::input('carga') ? Request::input('carga') : false;
		$verifica = null != Request::input('verifica') ? Request::input('verifica') : false;

		// para que el botón de ver archivo apunte a abrir en un custom modal -- por ahora sólo usado desde panel de control Inquiro
		$custommodal = null != Request::input('custommodal') ? Request::input('custommodal') : false;

		$docid = Request::input('doc_id');

		$temp = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('GENERATE', $docid, null, null, null, null, null, null, null, null), 'select');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
		$flds = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('search', $docid, null, null, null, null, null, null, null, null), 'select');
		
		// STORE QUE DEVUELVE LOS DOCUMENTOS HIJOS
		$dependencia_docs = SQLConnection::backendStoreProcedure('LN_docs_AGB', array('SELECT', $docid, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null), 'select');
		$doc_group = 0;
		if ( !empty($dependencia_docs) && is_array($dependencia_docs) && count($dependencia_docs) > 1 ){
			$doc_group = 1;
		}
		
		//** Documento foto de Inquiro vitae
		$foto_perfil_url = NULL;
		if ($doc->es_foto_perfil > 0) {
			$busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $doc->contraparte), 'selectOne');
			if (!empty($busqueda)) {
				$foto_perfil_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->foto;
			}
		}
		//
		$hay_campos = false;
		$hay_archivo = false;
		foreach ($flds as $fld) {
			$hay_campos = !$hay_campos ? ($fld->tipo_campo != 'F' ? true : $hay_campos) : $hay_campos;
			$hay_archivo = !$hay_archivo ? ($fld->tipo_campo == 'F' ? true : $hay_archivo) : $hay_archivo;
		}

		$secciones = [];

		$data = [];
		foreach ($flds as $k => $fld) {
			if ($fld->tipo_campo=='G') {

				/* encabezados de la tabla */
				$c1 = SQLConnection::backendStoreProcedure('LN_campos_col_', array('search', $fld->campo, null, null, null, null, null, null), 'select');
				$cols=[];
				foreach ($c1 as $clm) {
					$cols[] = $clm->etiqueta;
				}
				/* configuración de los campos y valores de la tabla */
				$c2 = SQLConnection::backendStoreProcedure('LN_doc_campos_col_', array($fld->doc_id, $fld->seccion, $fld->campo), 'select');
				$valores = [];
				foreach ($c2 as $k1 => $valor) {
					$valores[$valor->fila][$valor->col]['valor_texto'] = $valor->valor_texto;
					$valores[$valor->fila][$valor->col]['valor_fecha'] = $valor->valor_fecha;
					$valores[$valor->fila][$valor->col]['valor_fecha_str'] = $valor->valor_fecha_str;
					$valores[$valor->fila][$valor->col]['valor_numerico'] = $valor->valor_numerico;
					$valores[$valor->fila][$valor->col]['tipo_campo'] = $valor->tipo_campo;
					$valores[$valor->fila][$valor->col]['longitud'] = $valor->longitud;
					$valores[$valor->fila][$valor->col]['decimales'] = $valor->decimales;

					//$valores[$valor->fila][$valor->col]['opciones'] = $valor->opciones;

					if ($valor->tipo_campo == 'S' or $valor->tipo_campo == 'R' or $valor->tipo_campo == 'C') {
						if (strlen($valor->opciones) > 0) {
							$r = explode("^", $valor->opciones);
							$txt = [];
							$val = [];
							if (sizeof($r) >= 2) {
								$txt = explode("|", $r[0]);
								$val = explode("|", $r[1]);
							}
							$valores[$valor->fila][$valor->col]['opciones']['txt'] = $txt;
							$valores[$valor->fila][$valor->col]['opciones']['val'] = $val;
						}
					}
				}

				$fld->headers = $cols;
				$fld->values = $valores;
			} else {
				/* campo no tabla */
				if ($fld->tipo_campo == 'S' or $fld->tipo_campo == 'R' or $fld->tipo_campo == 'C') {
					$valores = [];

					if (strlen($fld->opciones) > 0) {
						$r = explode("^", $fld->opciones);
						$txt = [];
						$val = [];
						if (sizeof($r) >= 2) {
							$txt = explode("|", $r[0]);
							$val = explode("|", $r[1]);
						}
						$valores[] = $txt;
						$valores[] = $val;
					}

					$fld->opciones = $valores;
				}
			}
			//
			$data[$fld->titulo_seccion][] = $fld;
			//
			if ($fld->titulo_seccion != '') {
				$secciones[$fld->titulo_seccion]['texto_bajada'] = $fld->texto_bajada;
				$secciones[$fld->titulo_seccion]['texto_pie'] = $fld->texto_pie;
			}
		}

		if ($doc->es_balance > 0) {
			/*$file_path = env('PATH_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';
			$file_url = env('RUTA_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';	  */

			$file_path = env('PATH_COMPARTIDO') . '/' . $doc->ruta_archivo;
			$file_url = env('RUTA_COMPARTIDO') . '/' . $doc->ruta_archivo;
		} else {
			$file_path = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
			$file_url = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
		}

		$file_exists = file_exists($file_path);

		$search_array = array( '%inicio_vigencia_fecha%' , '%fin_vigencia_fecha%' , '%inicio_vigencia_periodo%' , '%fin_vigencia_periodo%' );
		$replace_array = array( $doc->inicio_vigencia , $doc->fecha_vigencia , (null !== $doc->inicio_vigencia) ? substr($doc->inicio_vigencia, 3, 7) : null , (null !== $doc->fecha_vigencia) ? substr($doc->fecha_vigencia, 3, 7) : null );

		/* Traducciones de los nombres de documento */
		Traducciones::$blade = 'detalle documento';
		SQLConnection::obtenerTraducciones(Traducciones::$blade); 

		return view('/iv/new/iv_doc_detail_anexo_facon')->with(compact(['docid', 'doc', 'data', 'secciones', 'plain', 'file_path', 'file_url', 'file_exists', 'hay_campos', 'hay_archivo', 'search_array', 'replace_array', 'foto_perfil_url', 'custommodal','doc_group']));
		if ($carga === false and $verifica === false) { 
			return view('/iv/new/iv_doc_detail_anexo')->with(compact(['docid', 'doc', 'data', 'secciones', 'plain', 'file_path', 'file_url', 'file_exists', 'hay_campos', 'hay_archivo', 'search_array', 'replace_array', 'foto_perfil_url', 'custommodal','doc_group']));
		}
		else {
			$mode = ($verifica !== false) ? 'readonly' : 'edit';
			return view('/led/led_carga_documentos_detalle')->with(compact(['docid', 'doc', 'data', 'secciones', 'plain', 'file_path', 'file_url', 'file_exists', 'hay_campos', 'hay_archivo', 'search_array', 'replace_array', 'foto_perfil_url', 'custommodal', 'mode','doc_group']));
		}
  
	}

    //////////////// INFORME COMERCIAL //////////////////////

	/**
	 * @access public
	 * Funcion que devuelve el informe
	 * comercial de la contraparte
	 */
    public function ivDatosInformeComercial() {
		if ( isset($_POST['contraparte']) ){
			$contraparte = Request::input('contraparte');
			if (  isset($_POST['country_code']) && $_POST['country_code'] != 'AR' ){
				// caso extranjero
				return $this->informeComercialExtranjero($contraparte);
			} else {
				// caso argentina
				$incluir_homonimos_impresion = Request::input('incluir_homonimos_impresion');
				return $this->informeComercialArgentina($contraparte,$incluir_homonimos_impresion);
			}
		} else {
			return 0;
		}	
	}

	/**
	 * Funcion que hace la llamada de inquiro
	 * al informe comercial argentino
	 * @access private
	 * @param string|int id de la contraparte
	 * @param string|null si se tienen que incluir homonimos en el informe
	 * @return Illuminate\View\View la vista inquiro del informe comercial
	 */
	private function informeComercialArgentina($contraparte,$incluir_homonimos_impresion=NULL){
		$prod = '2016';
		$apikey = env('API_KEY');
		// datos del producto y de la contraparte
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$qproducto = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $prod, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
		// determina si tiene que incluir homonimos
		$mostrar_homonimos = true;
		if ( isset(Session::get('usuario')->preferencias->incluir_homonimos) && (!(Session::get('usuario')->preferencias->incluir_homonimos)) ){
			$mostrar_homonimos = false;
		} elseif( isset($incluir_homonimos_impresion) ){
			$mostrar_homonimos = ($incluir_homonimos_impresion == 'on');
		} 
		/* Evalúo si la contraparte tiene asociado el producto balances */
		$tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $contraparte);
		/* Si la contraparte LED va a tener balance, el score del informe comercial sábana lo pido sin incluir balances */
		$incluye_balance = ($tiene_balance->balance > 0) ? 0 : 1;
		//
		return view('/iv/new/iv_informe_comercial')->with(compact('qcontrap', 'qproducto', 'apikey', 'incluye_balance','mostrar_homonimos'));
	}

	/**
	 * Funcion que hace la llamada de inquiro
	 * al informe comercial extranjero
	 * @access private
	 * @param string|int id de la contraparte
	 * @return Illuminate\View\View la vista inquiro del informe comercial
	 */
	private function informeComercialExtranjero($contraparte){
		// obtener datos contraparte
		$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_',array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, null),'selectOne');
		// obtenemos el archivo del documento antecedentes comerciales
		$ruta_ic_exterior = NULL;
		$doc_ic_exterior = SQLConnection::backendStoreProcedure('IV_contraparte_exterior',array($contraparte,$qcontrap->gestion,env('PLATAFORMA')),'selectOne'); // Documento que devuelve el documento del ic exterior
        //$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('sin_accion',null, $qcontrap->cliente, $contraparte,'1205',null,null,null,null,null,null,null,null,null,null,$qcontrap->gestion,Session::get('usuario')->user_id,null,null), 'selectOne');
        if ( $doc_ic_exterior && $doc_ic_exterior->estado_doc == 'V' ){
            $path = env('PATH_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $contraparte . '/' . $qcontrap->gestion . '/' . $doc_ic_exterior->doc_id.'.pdf';
            //
            if ( file_exists($path) ){
                $ruta_ic_exterior = env('RUTA_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $contraparte . '/' . $qcontrap->gestion . '/' . $doc_ic_exterior->doc_id.'.pdf';
            }
        }
		// obtenemos el score y la descripcion
		$score = NULL;
        $score_res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $contraparte, 'SCORE_IC'), 'selectOne');
		if (isset($score_res)) {
		   $score = $score_res->valor;
    	}
		//
		return view('/iv/new/iv_informe_comercial_extranjero')->with(compact('score','ruta_ic_exterior'));
	}

    public function obtenerBrief($json=true,$graf_pdf_financiero='',$graf_pdf_empleados='',$graf_pdf_cheques='',$graf_pdf_score='',$graf_pdf_comex ='',$incluye_balance = 1, $cliente_login = 0){
        //--  ARRAY PARA GUARDAR LOS DATOS EN LOS CUALES SE GENERA ALGUN TIPO DE ERROR  --//
		//echo("Rs: ".$_POST['razon_social'].' Idp: '.$_POST['idp'].' Cuit: '.$_POST['cuit']); die();
		$partes_del_informe = '';
		try {
			$cuit  = Request::input("cuit");
			$user_id = Session::get('usuario')->user_id;
			$razon_social       = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona;
			// $partes_del_informe .= "datos_usuario -> Cuit: ".$cuit." - User Id: ".$user_id.'<br>';
			$partes_del_informe .= "<b>DATOS DE USUARIO<br>Cuit: ".$cuit." - User Id: ".$user_id.'</b><br><br>';
			if(isset( Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')])){
				$servicio = SQLConnection::consumirServicio($user_id,$cuit,ENV('ID_INFORME_COMERCIAL'));
			} else if(isset(Session::get('usuario')->cliente[ENV('INFORME_API')])){
				$servicio = SQLConnection::consumirServicio($user_id,$cuit,ENV('INFORME_API'));
			}else {
				$servicio = new \stdClass;
				$servicio->sumar = 0;
			}

			if($servicio->sumar == 1){
				if(isset( Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')])){
					// SQLConnection::insertarRegistroActividad("INFORME COMERCIAL",$cuit);
					Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->usuario_consumido++;
					Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->cliente_consumido++;
				}
			}
			  /* Fin 08/10/2020 */ 
			/* 1 es lo que se toma por default, si está en 1, vemos si tenemos algo distinto en la sesion */
			if ($incluye_balance == 1) { 
				$incluye_balance = session::get('incluye_balance') ?? 1; 
			}
			/* vemos si tenemos algo distinto en la sesion */
			if ($cliente_login == 0) { 
				$cliente_login = Session::get('cliente_login') ?? Session::get('usuario')->cliente['client_id']; 
			}
	
			$idp               = Request::input('idp');
			$cuit              = Request::input("cuit");
			$imagen_fidelitas  = Misc::obtenerImagenFidelitas();
			$afip_respuesta = [];
            
			if(ENV('SERVICIOS_AFIP') == true){
				$afip_respuesta = AFIPController::obtenerPadron_test($cuit); //--> LINEA CON MEJORAS, PARA VOLVER AL ESTADO ANTERIOR DESCOMENTAR LA DE ABAJO Y COMENTAR ESTA.
				//$afip_respuesta = AFIPController::obtenerPadron($cuit); //--> LINEA ORIGINAL
				// $partes_del_informe .= 'obtenerPadron_test: si <br>';
				$partes_del_informe .= '<ul><li>Consulta AFIP --> Si </li>';
			} else {
				// $partes_del_informe .= 'obtenerPadron_test: no <br>';
				$partes_del_informe .= '<ul><li>Consulta AFIP --> No </li>';
			}
	
			// Agregado 10/07/2018: Si es persona fisica, ve si puede completar datos con Padron Electoral (ultimo domicilio, año de nacimiento)
			$fisica_juridica = Misc::tipoPersona($cuit);
			$p_fisica = ($fisica_juridica == 'F') ? true : false;
			if ($p_fisica){
				$actualiza = SQLConnection::actualizarDatosConPadron($cuit,'0');
				// $partes_del_informe .= 'actualizarDatosConPadron: si <br>';
				$partes_del_informe .= '<li>Persona física --> Si </li>';
			} else {
				// $partes_del_informe .= 'actualizarDatosConPadron: no <br>';
				$partes_del_informe .= '<li>Persona física --> No </li>';
			}
			// Obtener Bancos para calcular si amerita por situación uno y sumar al score
			// Se almacenan en variable de clase para ser reutilizadas en la pestaña de bancos
			$obtener_bancos = SQLConnection::obtenerBancos($cuit);
			// $partes_del_informe .= 'obtenerBancos: si <br>';
			if($obtener_bancos != []){
				$partes_del_informe .= '<li>Cálculo Bancos --> Si, registra '.strval(count($obtener_bancos)).' resultados de la consulta</li>';
			} else {
				$partes_del_informe .= '<li>Cálculo Bancos --> No, registra '.strval(count($obtener_bancos)).' resultados de la consulta</li>';
			}			
	
			$situacion_1 = Misc::ameritaPorSituacionUno($obtener_bancos);
			// $partes_del_informe .= 'ameritaPorSituacionUno: si <br>';
			if($obtener_bancos != []){
				$partes_del_informe .= '<li>Amerita Score --> Si</li>';
			} else {
				$partes_del_informe .= '<li>Amerita Score --> No</li>';
			}	
            
			$amerita_situacion_1 = $situacion_1['amerita'];
			$cantidad_situacion_1 = $situacion_1['cantidad'];
            
			$link_pdf = env('AFIP_URL_COMPARTIDO_LEER').'/'.substr($cuit, 0, 2).'/'.substr($cuit, 2, 3).'/'.substr($cuit, 5, 3).'/'.$cuit.'.pdf';
			    $tiene_pdf = file_exists($link_pdf);
			// $partes_del_informe .= 'tiene_pdf: si <br>';
			if(file_exists($link_pdf)){
				$partes_del_informe .= '<li>Pdf AFIP --> Existe </li>';
			} else {
				$partes_del_informe .= '<li>Pdf AFIP --> No existe </li>';
			}
	
			$card_score                   = [];
			$card_bancos                  = [];
			$card_cheques                 = [];
			$card_domicilios              = [];
			$card_empleados               = [];
			$card_comex                   = [];
			$card_personas_relacionadas   = [];
			$card_sociedades_relacionadas = [];
			$partes_del_informe .= '<li>cards_varios --> si </li>';
	
			//$p_fisica                     = (substr($cuit,0,1) == 3) ? false : true;
			$fisica_juridica = Misc::tipoPersona($cuit); 
			$p_fisica = ($fisica_juridica == 'F') ? true : false;
			$periodo                      = [];
			$grafico_cheques_ordenados    = [];
			$cheques[]                    =  new \stdClass;
			$env                          = Misc::obtenerColoresEnv();
			$score_ordenado               = [];
			$defuncion                    = [];
			/*CALCULO SCORE inicio*/
			$debug_score                  = '';
			$sesion_externa               = (Session::get('externo')) ? true : false;
			$partes_del_informe .= '<li>config_panel --> si </li>';
	
			$comex_impo                   = SQLConnection::obtenerComex($cuit);
			// $partes_del_informe .= 'obtenerComex: si <br>';
			if($comex_impo != []){
				$partes_del_informe .= '<li>Servicio de ComEx --> Si tiene</li>';
			} else {
				$partes_del_informe .= '<li>Servicio de ComEx --> No tiene</li>';
			}
	
			if(!$sesion_externa){
				if(isset(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')])){
					$cliente = Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->nombre_cliente;
				}
			}else{
				$cliente = 'Externo';
			}
	
			/* card 6 empleados inicio*/
			
			if(!$p_fisica){
				$card_fiscales = SQLConnection::obtenerCardFiscales($cuit);
				//$card_fiscales); //error con AKAPOL SA CUIT 30504065207 (12/09/2017) 
				if (is_null($card_fiscales)) {
					$card_fiscales = '';
				} else {
					$card_fiscales->inicio_actividad = Misc::convertirFormatoFecha($card_fiscales->inicio_actividad,'Y-m-d','d/m/Y');
				} 
			} else {
				$card_fiscales = SQLConnection::obtenerCardFiscalesPF($cuit);
				$edad = Misc::obtenerEdadPersonaFisica($cuit);	
			}
			
			$sircreb = SQLConnection::obtenerSircreb($cuit);
			$riesgo_fiscal = 'NO';
			if($sircreb){
				foreach($sircreb as $info){
					$hoy = date('Y-m-d h:i:s');
					if (($hoy > $info->vigencia_desde) && ($hoy < $info->vigencia_hasta)) {
						$riesgo_fiscal='SI';
					}else if($hoy > $info->vigencia_desde){
						$riesgo_fiscal = '--';
					}
				}
			}
			$partes_del_informe .= '<li>card_6_empleados --> si </li>';
			/* card 6 empleados fin*/
			if (!$tiene_pdf && empty($card_fiscales)){
				$observado = true;
			}
			$respuesta_score = '';
			if(strlen($cuit) == 11){
				$respuesta_score  = json_decode(ApiControllerV1::obtenerServicioScore($cuit,$incluye_balance),true);
				// $partes_del_informe .= 'obtenerServicioScore: si <br>';
				$partes_del_informe .= '<li>obtenerServicioScore --> si </li>';
	
			} else {
				$partes_del_informe .= '<li>obtenerServicioScore --> no </li>';
			}
            
			$resp_constancia  = $respuesta_score['resp_constancia'] ?? '';
	
			if($respuesta_score == ''){
				$score = 0;
				$debug_score = '';
			}else{
				$score            = $respuesta_score['score'];
				$debug_score      = $respuesta_score['debug_score'];
			}
			if($p_fisica){
				$defuncion      = SQLConnection::obtenerDefuncion($cuit);
				$dni            = (int)substr($cuit, 2,-1);
				$partes_del_informe .= '<li>obtenerDefuncion --> Si </li>';
			} else {
				$partes_del_informe .= '<li>obtenerDefuncion --> no </li>';
			}
			if(env('SERVICIOS_AFIP') == FALSE){
				$debug_score .= "<br>---------------<br><strong>RESPUESTA AFIP</strong><br>---------------<br><strong>EL LLAMADO A AFIP SE ENCUENTRA DESHABILITADO</strong><br>";
			}
            
			// En el detalle del score, se muestra la respuesta de AFIP
			if(ENV('SERVICIOS_AFIP') == true){
				$afip_ordenado = '';
				if(is_array($afip_respuesta)) {
					foreach($afip_respuesta as $afip){
						$afip_decode[] = json_decode($afip,true);
					}
					$afip_respuesta = $afip_decode;
				}
				  
				if(!is_array($afip_respuesta)) {
					$afip_ordenado .= "<br>" . $afip_respuesta;

				} else {
					foreach ($afip_respuesta as $key => $value) {
						if(!is_array($value)) {
							$afip_ordenado  .= "<strong><br>". $key .":</strong> ". $value ;
						} else {
							$afip_ordenado .= "<strong><br>" . $key . ":" . "</strong>";
							foreach ($value as $key2 => $value2) {
								if(!is_array($value2)) {
									$afip_ordenado  .= "<strong><br>   ". $key2 .":</strong> ". $value2 ;
								} else {
									$afip_ordenado .= "<strong><br>   " . $key2 . ":" . "</strong>";
	
									foreach ($value2 as $key3 => $value3) {
										if(!is_array($value3)) {
											$afip_ordenado  .= "<strong><br>      ". $key3 .":</strong> ". $value3 ;
										} else {
											foreach ($value3 as $key4 => $value4) {
												if(!is_array($value4)) {
													$afip_ordenado  .= "<strong><br>      ". $key4 .":</strong> ". $value4 ;
												} else {
						
												}
											}
										}
									}
								}
							}
						}
					}
				}
				
				if ($afip_ordenado != '') {
					$debug_score .= "<br>---------------<br><strong>RESPUESTA AFIP</strong><br>---------------" .$afip_ordenado;
				}
	
			}
			$debug_score  .= "<br>---------------<br><strong>RESPUESTA CONSTANCIA CUIT</strong><br>---------------<br><br>" ;
			if(!empty($resp_constancia)){
				$debug_score  .= "RESPUESTA : ".$resp_constancia['response']."<br>ERROR:".$resp_constancia['constancia_error'];
			}
			$partes_del_informe .= '<li>debug_score --> si </li>';
	 
			if(!$p_fisica){
				$datos_card_score   = SQLConnection::obtenerCardScore($cuit);
			}else{
				$datos_card_score   = SQLConnection::obtenerCardScorePF($cuit);
			}
			$partes_del_informe .= '<li>obtenerCardScorePF --> si </li>';
			/*CALCULO SCORE fin*/
			/*card 1 inicio */
			$vitalidad = 1;
			$motivo_vitalidad = 1;
			// CALCULO DE EDAD
			$menor_de_edad = 0;
			if ($p_fisica){
				$edad = Misc::obtenerEdadPersonaFisica($cuit);
				//--
				if ( $edad < 18 ){
					$menor_de_edad = 1;
				}
			}
			//
			$cheque_ultimo_rechazo_desde = '';
			if(!$p_fisica && strlen($cuit) == 11){
				$sintomas = SQLConnection::backendStoreProcedure('obtener_sintomas_de_vitalidad', array($cuit), true);
				$cheque_ultimo_rechazo_desde   = SQLConnection::backendStoreProcedure('obtener_no_cheqrech_desde', array($cuit), true);
				$vitalidad = 1;
				if ((!$p_fisica) && isset($sintomas->vitalidad) && $sintomas->vitalidad == 0) {
					$score = 0;
					$vitalidad = 0;
					$motivo_vitalidad = $sintomas->motivo; 
				}
			}
			$card_score['score']= $score;
			$card_score['datos']= $datos_card_score;
	
			// $partes_del_informe .= 'card_1: si <br>';
			$partes_del_informe .= '<li>Card Score --> Si </li>';
			/*card 1 fin */
	  
			/*card 2 inicio */
			$garantias          = SQLConnection::obtenerGarantiasBrief($cuit);
			$financiero         = SQLConnection::obtenerFinancieroBrief($cuit);
			$card_bancos        = SQLConnection::obtenerCardBancos($cuit);
            
			// $partes_del_informe .= 'card_2: si <br>';
			$partes_del_informe .= '<li>Card Financiero --> Si </li>';
			/*card 2 fin */
	
			/* card 3 cheques rechazados inicio*/
			$card_cheques     = SQLConnection::obtenerCardChequesRechazados($cuit);
			$grafico_cheques  = SQLConnection::graficoCardChequesRechazados($cuit);
			// return response()->json($grafico_cheques);
			$grafico_cheques  = self::generarGraficoCheques($grafico_cheques,24);
	
			// $partes_del_informe .= 'card_3: si <br>';
			$partes_del_informe .= '<li>Card Cheques --> Si </li>';
			/* card 3 cheques rechazados fin*/
	  
			/* card 4 domicilios inicio*/
			$domicilios = new \stdClass;
			$formales       = SQLConnection::obtenerDomicilios($cuit);
			$domicilios->otros_domicilios = '';
			$domicilios->domicilio_legal  = '';
			$domicilios->domicilio        = '';
			$domicilios->domicilio_fiscal = '';
	
			foreach($formales as $formal) {
				/* Domicilio Legal */
				if(strpos($formal->tipo_domicilio, 'L') !== false){
					if (isset($domicilios->domicilio_legal) && $domicilios->domicilio_legal != '') {
						if (strpos($formal->tipo_domicilio, 'D') === false && strpos($formal->tipo_domicilio, 'E') === false && strpos($formal->tipo_domicilio, 'F') === false) {
							$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
						}
					} else {
						$domicilios->domicilio_legal = Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
					}
				}
				/* Domicilio Fiscal */
				if(strpos($formal->tipo_domicilio, 'F') !== false){
					if (isset($domicilios->domicilio_fiscal) && $domicilios->domicilio_fiscal != '') {
						if (strpos($formal->tipo_domicilio, 'D') === false && strpos($formal->tipo_domicilio, 'E') === false && strpos($formal->tipo_domicilio, 'L') === false) {
							$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
						}
					} else {
						$domicilios->domicilio_fiscal = Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
					}
				}
	
				/* Domicilio Principal */ 
				if(strpos($formal->tipo_domicilio, 'D') !== false || strpos($formal->tipo_domicilio, 'E') !== false) {
					if (isset($domicilios->domicilio) && $domicilios->domicilio != '') {
						if (strpos($formal->tipo_domicilio, 'F') === false && strpos($formal->tipo_domicilio, 'L') === false) {
							$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
						}
					} else {
						$domicilios->domicilio = Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
					}
				}
				/* Otros Domicilios */
				if (strpos($formal->tipo_domicilio, 'O') !== false && strpos($formal->tipo_domicilio, 'D') === false && strpos($formal->tipo_domicilio, 'E') === false && strpos($formal->tipo_domicilio, 'L') === false && strpos($formal->tipo_domicilio, 'F') === false){
					$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
				}
			}
	
			if($domicilios->domicilio == '' && $domicilios->domicilio_fiscal != ''){
				$domicilios->domicilio  .= $domicilios->domicilio_fiscal;
			}
	
			$card_domicilios['domicilios'] = $domicilios;
			
			// $partes_del_informe .= 'card_4: si <br>';
			$partes_del_informe .= '<li>Card Domicilio --> Si </li>';
			  /* card 4 domicilios fin*/
	  
			/* card 5 empleados inicio*/
			$card_empleados = SQLConnection::obtenerEmpleados($cuit);
			// $partes_del_informe .= 'card_5: si <br>';
			$partes_del_informe .= '<li>Card Empleados --> Si </li>';
			/* card 5 empleados fin*/
	
			/* card 7 empleados inicio*/
			$primero =date('Y');
			$segundo =date('Y')-1;
			$tercero =date('Y')-2;
			$mostrar_grafico_card_comex = false;
			$card_comex[$primero] = SQLConnection::obtenerCardComex($cuit,$primero);
			$card_comex[$segundo] = SQLConnection::obtenerCardComex($cuit,$segundo);
			$card_comex[$tercero] = SQLConnection::obtenerCardComex($cuit,$tercero);
			foreach($card_comex as $comex){
				foreach($comex as $info){
					if(!empty($info) && $info->total_anual != null){
						$mostrar_grafico_card_comex = true;
					}
				}
			}
			// $partes_del_informe .= 'card_7: si <br>';
			$partes_del_informe .= '<li>Card Comex --> Si </li>';
			/* card 7 empleados fin*/
			/* card 8 empleados inicio*/
			$card_personas_relacionadas = SQLConnection::obtenerCardPersonasRelacionadas($cuit);
			// $partes_del_informe .= 'card_8: si <br>';
			$partes_del_informe .= '<li>Card Relacionadas --> Si </li>';
			/* card 8 empleados fin*/
	  
			/* card 9 empleados inicio*/
			$tipo_persona = (substr($cuit,0,1) != '3') ? 'f' : 'j' ;
			$card_sociedades_relacionadas = SQLConnection::obtenerCardSociedadesRelacionadas($cuit,$tipo_persona);
	
			// $partes_del_informe .= 'card_9: si <br>';
			$partes_del_informe .= '<li>Card Sociedades --> Si </li>';
			/* card 9 empleados fin*/
			
			/*card 10 Juicios*/
			//$razon_social       = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona;
			/*$razon_debug = $razon_social;
			$razon_debug = explode(' ', $razon_debug);
			$razon_debug = $razon_debug[0].' '.$razon_debug[1];*/
			//$razon_social_legales = Misc::diccionarioSinonimos($razon_social);
			$razon_social_legales = Misc::diccionarioSinonimos2020($razon_social);
			$cuit_enmascarado = $cuit;
	
			$dni = '';
			if($p_fisica){
				$dni = (int)substr($cuit, 2,-1);
			}
			$mask = substr( $cuit_enmascarado, 1,1 );
			$mask .= '-';
			$cuit_enmascarado = substr_replace ( $cuit_enmascarado, $mask, 1,1);
			$mask = substr( $cuit_enmascarado, -1,-1 );
			$mask .= '-';
			$cuit_enmascarado = substr_replace ( $cuit_enmascarado, $mask, -1,-1);
	
			$card_juicios = new \stdClass();
			$card_juicios->concursos_quiebras         = [];
			$card_juicios->pedidos_quiebra            = [];
			$card_juicios->remates                    = SQLConnection::obtenerRemates($cuit,$cuit_enmascarado,$dni);
			$card_juicios->otros_juicios_comerciales  = [];
			$card_juicios->remates = sizeof($card_juicios->remates);
	
			$resultado_nombres_ant     = []; 
			$razon_social_completa     = '';
	
            if($p_fisica == false) {
                //P Juridica
                $nombres_anteriores = SQLConnection::backendCambiosNombres($cuit);
                if ($nombres_anteriores) {
                    foreach ($nombres_anteriores as $nombre_ant) {
                        $resultado_nombres_ant[] = $nombre_ant->nombre; 
                    }		
                    $resultado_nombres_ant[] = $razon_social;
                }
                
                $sinonimos =  Misc::diccionarioSinonimosTest($resultado_nombres_ant);
                $count_sinonimo = count($sinonimos)-1;

                foreach($sinonimos as $key => $rs) {
                    if (strlen($rs) < 3) {
                        continue; 
                    }

                    if(!($key == $count_sinonimo)){
                        $razon_social_completa .= $rs.'OR';
                    }else{
                        $razon_social_completa .= $rs;
                    }
                }

                if(!$razon_social_completa) {
                    $razon_social_completa = $razon_social_legales;
                }
            } else {//caso PF
                $razon_social_completa = "\"".$razon_social."\"";
            }

            $razon_social_legales = $razon_social_completa; 
            $juicios_cantidades = new \stdClass();
            
            if (strlen($razon_social_legales) >= 4 && $razon_social_legales !== '"DE"') {
                $razon_social_legales = (Misc::parche_cla($razon_social_legales)); 
                try {
                    $juicios_cantidades  =  SQLConnection::backendStoreProcedure('obtener_count_juicios',array($cuit,$razon_social_legales),true);
                    $card_juicios->otros_juicios_comerciales = $juicios_cantidades->cantidad_ojc;
                    $card_juicios->concursos_quiebras        = $juicios_cantidades->cantidad_cyq;
                    $card_juicios->pedidos_quiebra           = $juicios_cantidades->cantidad_pq;
                    $card_juicios->actor                     = $juicios_cantidades->cantidad_actor;
                    $card_juicios->demandado_homonimo        = $juicios_cantidades->cantidad_demandado_homonimo;
                    $card_juicios->actores_homonimos         = $juicios_cantidades->cantidad_actor_homonimo; 					
                } catch (\Throwable $th) {
                    /*$card_juicios->otros_juicios_comerciales = '-';
                    $card_juicios->concursos_quiebras        = '-';
                    $card_juicios->pedidos_quiebra           = '-';
                    $card_juicios->actor                     = '-';
                    $card_juicios->demandado_homonimo        = '-';
                    $card_juicios->actores_homonimos         = '-'; */
                    
                    $card_juicios->otros_juicios_comerciales = '0';
                    $card_juicios->concursos_quiebras        = '0';
                    $card_juicios->pedidos_quiebra           = '0';
                    $card_juicios->actor                     = '0';
                    $card_juicios->demandado_homonimo        = '0';
                    $card_juicios->actores_homonimos         = '0'; 	
                }
            } else {
                $card_juicios->otros_juicios_comerciales = '0';
                $card_juicios->concursos_quiebras        = '0';
                $card_juicios->pedidos_quiebra           = '0';
                $card_juicios->actor                     = '0';
                $card_juicios->demandado_homonimo        = '0';
                $card_juicios->actores_homonimos         = '0'; 
            }
            $card_juicios->total = $card_juicios->actores_homonimos + $card_juicios->demandado_homonimo + $card_juicios->actor + $card_juicios->otros_juicios_comerciales + $card_juicios->remates + $card_juicios->concursos_quiebras + $card_juicios->pedidos_quiebra;
            // $partes_del_informe .= 'card_10: si <br>';
            $partes_del_informe .= '<li>Card Juicios --> Si </li>';
            $secciones = [];
            //$sesion_externa = (Session::get('externo')) ? true : false;
            if(isset(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')])){
                $secciones = array_keys(Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->secciones);
            }else if(isset(Session::get('usuario')->cliente[env('INFORME_API')])){
                $secciones = array_keys(Session::get('usuario')->cliente[ENV('INFORME_API')]->secciones);
            }

            $antiguedad_situacion_1 = SQLConnection::backendStoreProcedure('obtener_cendeu_sit1_desde', array($cuit),true);

            $nivel_socioeconomico = new \stdClass();
            if($tipo_persona == 'j'){
                if($score > 50){
                    $nivel_socioeconomico = SQLConnection::backendStoreProcedure('obtener_nivel_socioeconomico_2021', array($cuit,$tipo_persona),true);
                        
                } else {
                    $nivel_socioeconomico->error = 'El Nivel del rango de ventas de la compañia no puede ser calculado';
                }
            } else {
                $nivel_socioeconomico = SQLConnection::backendStoreProcedure('obtener_nivel_socioeconomico_2021', array($cuit,$tipo_persona),true);
            }
            $sujeto_obligado    = 0;
            $apocrifas          = SQLConnection::backendStoreProcedure('obtener_apocrifas', array($cuit), true);
            $client_id          = isset(Session::get('usuario')->cliente['client_id'] ) ? Session::get('usuario')->cliente['client_id'] : 0;

                if($client_id > 0 AND ($client_id == '2254875' || $client_id == '745239806')) {
                $respuestaso      =  SQLConnection::backendStoreProcedure('obtener_sujeto_obligado',array($cuit),true);
                if(!empty($respuestaso)){
                        $sujeto_obligado = $respuestaso->sujeto_obligado;
                }  
                }

                /* 06/11/2020 : Card de Limite de Crédito - Dependencia Económica */
            $solicitado = new \stdClass;
            $otorgado = new \stdClass;
            $cme = new \stdClass;
            $otorgado_cme = new \stdClass;
            $multiple = new \stdClass;
            $multiples_montos = []; 
            $depecon = new \stdClass;
            $depebal = new \stdClass;
            $fecha_bal = new \stdClass;
            $datos_dep = new \stdClass;
            $contraparte_lcs = 0; 
            $contraparte_de  = 0; 

            $contrapartes = SQLConnection::backendStoreProcedure('LN_cuit_contraparte_lcs', array($cliente_login, $cuit,'LCS'), 'select');

            if(!empty($contrapartes)){
                $id = $contrapartes[0]->contraparte; 
                $contraparte_lcs = $id; 
                $solicitado = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'monto_solicitado'), 'selectOne');
                $otorgado = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'monto_otorgado'), 'selectOne');
                $cme = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'CAPACIDAD_ENDEUDAMIENTO'), 'selectOne');
                $otorgado_cme = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'MONTO_OTORGADO_CME'), 'selectOne');
                $multiple  = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'PORCENTAJE_CREDITO'), 'selectOne');
                if (!empty($multiple )){
                    $multiples_montos = SQLConnection::backendStoreProcedure('LN_limite_credito_multiple', array($id), 'select');
                }
            }
    
            $contrapartes = SQLConnection::backendStoreProcedure('LN_cuit_contraparte_lcs', array($cliente_login, $cuit,'DE'), 'select');

            if(!empty($contrapartes)){
                $id = $contrapartes[0]->contraparte; 
                $contraparte_de = $id; 
                $depecon = SQLConnection::backendStoreProcedure('LN_dependencia_economica', array($id), 'selectOne');
                $depebal = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente_login, null, null, $id, 'DEP_ECON_BALANCE'), 'selectOne'); 
                $fecha_bal = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente_login, null, null, $id, 'DEP_ECON_BALANCE_FECHA'), 'selectOne'); 
                $datos_dep = SQLConnection::backendStoreProcedure('LN_dependencia_economica_balance', array($id), 'selectOne');
            }
            
            if (isset($_POST['iv_new']) && $_POST['iv_new'] == 1){
                $vista= view('iv/new/iv_brief')->with(compact('card_score','card_bancos','card_cheques','card_domicilios','card_empleados','card_fiscales', 'apocrifas', 'card_comex','card_personas_relacionadas','card_sociedades_relacionadas','json','p_fisica','debug_score','riesgo_fiscal','graf_pdf_empleados','graf_pdf_financiero','graf_pdf_cheques','graf_pdf_score','mostrar_grafico_card_comex','graf_pdf_comex','idp', 'card_juicios','nivel_socioeconomico','antiguedad_situacion_1','cheque_ultimo_rechazo_desde','sujeto_obligado', 'solicitado','otorgado','cme','otorgado_cme','multiple','multiples_montos','depecon','depebal','fecha_bal','datos_dep','contraparte_de','contraparte_lcs','partes_del_informe'))->render();
            }else {
                $vista= view('informes/brief')->with(compact('card_score','card_bancos','card_cheques','card_domicilios','card_empleados','card_fiscales', 'apocrifas', 'card_comex','card_personas_relacionadas','card_sociedades_relacionadas','json','p_fisica','debug_score','riesgo_fiscal','graf_pdf_empleados','graf_pdf_financiero','graf_pdf_cheques','graf_pdf_score','cliente','mostrar_grafico_card_comex','graf_pdf_comex','idp', 'card_juicios','nivel_socioeconomico','antiguedad_situacion_1','cheque_ultimo_rechazo_desde','sujeto_obligado', 'solicitado','otorgado','cme','otorgado_cme','multiple','multiples_montos','depecon','depebal','fecha_bal','datos_dep','contraparte_de','contraparte_lcs','partes_del_informe'))->render();
            }
            if(!$json){
                return $vista;
            }
            return \Response::json(
                array(
                    'view' =>$vista,
                    'info'=>compact('score','cheques','financiero','env','card_empleados','grafico_cheques','secciones','p_fisica','card_comex','mostrar_grafico_card_comex','defuncion','card_fiscales', 'vitalidad', 'motivo_vitalidad','menor_de_edad', 'card_bancos','idp','imagen_fidelitas','cuit','partes_del_informe')
                ), 200, [], JSON_NUMERIC_CHECK);
	
		} catch (\Throwable $th) {
			SQLConnection::control_erores('MainController', 'obtenerBrief', $th->getMessage()." L: ".$th->getLine()." - DESARROLLO");
			Misc::enviarMail_errores('claudio.arguello@fidelitas.com.ar','alejandro.burgol@fidelitas.com.ar',$partes_del_informe.$th->getMessage()." L: ".$th->getLine()." - DESARROLLO",$subject="Fidelitas");
			http_response_code( 500 );
			die();	
		}
		
		  
    }

    public function generarGraficoCheques($grafico_cheques,$meses){
	    $grafico_cheques_ordenados['total']  = 0;
        for ($i = 0; $i < $meses; $i++) {
            $periodo[$i] = date("Y-m", strtotime( date("Y-m")." -$i months"));
            $grafico_cheques_ordenados['abonado'][$periodo[$i]]           = 0;
            $grafico_cheques_ordenados['pendiente_de_pago'][$periodo[$i]] = 0;
            $grafico_cheques_ordenados['defectos_formales'][$periodo[$i]] = 0;
        }
	    sort($periodo);
        //$periodo = array_values($periodo);
        if($grafico_cheques){
            foreach($grafico_cheques as $key_cheque =>$cheque){
                foreach($periodo as $key_mes => $mes){

                    if($mes == $cheque->fecha){
                        if ($cheque->id_causa == 1) {
                        $grafico_cheques_ordenados['total'] += 1;
                        $grafico_cheques_ordenados['defectos_formales'][$mes] += 1;
                        } else {
                            if($cheque->abonado == 1){
                                $grafico_cheques_ordenados['total'] += 1;
                                $grafico_cheques_ordenados['abonado'][$mes] += 1;
                            } else {
                                $grafico_cheques_ordenados['total'] += 1;
                                $grafico_cheques_ordenados['pendiente_de_pago'][$mes] += 1;
                            }
                        }
                    }
                }
            }
        }
        //sort($grafico_cheques_ordenados['abonado']);
        if (isset($grafico_cheques_ordenados['defectos_formales'])) {
        ksort($grafico_cheques_ordenados['defectos_formales']);
        }
        if (isset($grafico_cheques_ordenados['abonado'])) {
        ksort($grafico_cheques_ordenados['abonado']);
        }
        if (isset($grafico_cheques_ordenados['pendiente_de_pago'])) {
        ksort($grafico_cheques_ordenados['pendiente_de_pago']);
        }
        return $grafico_cheques_ordenados;
    }

	/* ---------------------------------------------------------------------------------------------------------------- */ 
	/* 31/03/2023 GENERA ARCHIVO JSON */

	public static function ivPanelControlFile($cliente=null){
	    ini_set('memory_limit','4096M');
		ini_set('max_execution_time', 10000); // 1000 segundos
		set_time_limit(0); 

		if ($cliente == null){
			$cliente = Request::input('cliente');
		}
		//
		$finalizados_generado = false;
		$en_proceso_generado = false;
		// generar el JSON del dashboard IV
		$servicio = env('IV_PRODUCTO');
		$json = new DashboardJSON($cliente,$servicio);
		$json->regenerarUsersJSON();
		//
		$filtro = 0;
		$columnas = SQLConnection::backendStoreProcedure('IV_panel_control', array('columnasr', $cliente, '0'), 'select'); 
		$indicadores = SQLConnection::backendStoreProcedure('IV_panel_control', array('indicadores_panel_controlr', $cliente, '0'), 'select');
		$personas = SQLConnection::backendStoreProcedure('IV_panel_control', array('panel_control', $cliente), 'select');		
		//
		$indic = [];
		foreach ($columnas as $y => $col) {
			// se descartan las columnas fijas
			if ($col->orden_producto > 0) {
				$indic[] = $col->clave_indicador;
			}
		}
		$pais		= [];
		$familias 	= [];
		$data 		= [];

		$pais_ep		= [];
		$familias_ep 	= [];
		$data_ep 		= [];

		$contrapartes_en_proceso = [];

		//------ SEPARO LAS CONTRAPARTES EN PROCESO 

		foreach ($indicadores as $n => $valores) {
			//if ($valores->visible == 0 and $valores->clave_indicador == 'IV_CV') {
			if ( $valores->visible == 0 and !in_array($valores->contraparte,$contrapartes_en_proceso) ) { 
					array_push($contrapartes_en_proceso,$valores->contraparte);
			}
		}

		foreach ($personas as $k => $cand) {

			if ( !in_array($cand->contraparte,$contrapartes_en_proceso) ) 
			{

				$cc = strtolower($cand->country_code);

				$pais[$k]['info'] = $cc;
				$pais[$k]['cls'] = 'flag-icon-' . $cc;
				$pais[$k]['val'] = '<span class=flag-icon flag-icon-background flag-icon-' . $cc .'></span>';

				$familias[$k]['value'] = $cand->familia;
				$data[$cand->contraparte] = (array) $cand;
				
				foreach ($indic as $j => $indica) {
					$data[$cand->contraparte][$indica]  = NULL;
					$data[$cand->contraparte]['icono'][$indica] = NULL;
					$data[$cand->contraparte]['cls'][$indica]   = NULL;
					$data[$cand->contraparte]['color'][$indica] = NULL;
					$data[$cand->contraparte]['title'][$indica] = NULL;
				}
			}

			else 
			
			{
			
				$cc = strtolower($cand->country_code);

				$pais_ep[$k]['info'] = $cc;
				$pais_ep[$k]['cls'] = 'flag-icon-' . $cc;
				$pais_ep[$k]['val'] = '<span class=flag-icon flag-icon-background flag-icon-' . $cc .'></span>';

				$familias_ep[$k]['value'] = $cand->familia;
				$data_ep[$cand->contraparte] = (array) $cand;
				
				foreach ($indic as $j => $indica) {
					$data_ep[$cand->contraparte][$indica]  = NULL;
					$data_ep[$cand->contraparte]['icono'][$indica] = NULL;
					$data_ep[$cand->contraparte]['cls'][$indica]   = NULL;
					$data_ep[$cand->contraparte]['color'][$indica] = NULL;
					$data_ep[$cand->contraparte]['title'][$indica] = NULL;

				}
			}
		}

		//
		foreach ($data as $k => $iv) {
			$data[$k]['foto_60'] = '<img src="'. env('RUTA_DOCUMENTOS_IV') . '/' . $data[$k]['foto_60'] . '?r=' . time() .  '" border="0" class="img img-responsive" width="50" height="50" />';
			$data[$k]['country'] = strtolower($data[$k]['country_code']);
		}

		$cv_iv			    = [];
		$valoracion_iv		= [];
		$academico			= [];
		$profesional 		= [];
		$comercial_legal 	= [];
		$compliance 		= [];
		$prensaiv 			= [];
		//

		foreach ($indicadores as $n => $valores) {
			if ( in_array($valores->contraparte,$contrapartes_en_proceso) ) { continue; }
            //			
			if($valores->clave_indicador == 'IV_CV' and $valores->visible == 1 ) {	
				$cv_iv[$n]['info'] = $valores->icono; 
				$cv_iv[$n]['cls']  = $valores->cls;
				$cv_iv[$n]['color'] = $valores->color;
				$cv_iv[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'VALORACION_IV' and $valores->visible == 1 ) {
				$valoracion_iv[$n]['info'] = $valores->icono;
				$valoracion_iv[$n]['cls']  = $valores->cls;
				$valoracion_iv[$n]['color'] = $valores->color;
				$valoracion_iv[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'ACADEMICO' and $valores->visible == 1) {
				$academico[$n]['info'] = $valores->icono;
				$academico[$n]['cls']  = $valores->cls;
				$academico[$n]['color'] = $valores->color;
				$academico[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'PROFESIONAL' and $valores->visible == 1) {
				$profesional[$n]['info'] = $valores->icono;
				$profesional[$n]['cls']  = $valores->cls;
				$profesional[$n]['color'] = $valores->color;
				$profesional[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'COMERCIAL_LEGAL' and $valores->visible == 1) {
				$comercial_legal[$n]['info'] = $valores->icono;
				$comercial_legal[$n]['cls']  = $valores->cls;
				$comercial_legal[$n]['color'] = $valores->color;
				$comercial_legal[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'COMPLIANCE' and $valores->visible == 1) {
				$compliance[$n]['info'] = $valores->icono;
				$compliance[$n]['cls']  = $valores->cls;
				$compliance[$n]['color'] = $valores->color;
				$compliance[$n]['title'] = $valores->titulo;
			}
			elseif($valores->clave_indicador == 'PRENSAIV' and $valores->visible == 1) {
				$prensaiv[$n]['info'] = $valores->icono;
				$prensaiv[$n]['cls']  = $valores->cls;
				$prensaiv[$n]['color'] = $valores->color;
				$prensaiv[$n]['title'] = $valores->titulo;
			}
			$data[$valores->contraparte][$valores->clave_indicador] = $valores->titulo; 
			$data[$valores->contraparte][$valores->clave_indicador.'_icono']  = $valores->icono;
			$data[$valores->contraparte][$valores->clave_indicador.'_cls']    = $valores->cls;
			$data[$valores->contraparte][$valores->clave_indicador.'_color'] = $valores->color;
			$data[$valores->contraparte][$valores->clave_indicador.'_titulo']  = $valores->titulo;
			$data[$valores->contraparte][$valores->clave_indicador.'_valor'] = $valores->valor_texto ?? $valores->valor_numerico;
		}
		
		$pais = array_map("unserialize", array_unique(array_map("serialize", $pais)));
		$familias = array_map("unserialize", array_unique(array_map("serialize", $familias)));
		$cv_iv = array_map("unserialize", array_unique(array_map("serialize", $cv_iv)));
		$valoracion_iv = array_map("unserialize", array_unique(array_map("serialize", $valoracion_iv)));
		$academico = array_map("unserialize", array_unique(array_map("serialize", $academico)));
		$profesional = array_map("unserialize", array_unique(array_map("serialize", $profesional)));
		$comercial_legal= array_map("unserialize", array_unique(array_map("serialize", $comercial_legal)));
		$compliance	= array_map("unserialize", array_unique(array_map("serialize", $compliance)));
		$prensaiv = array_map("unserialize", array_unique(array_map("serialize", $prensaiv)));
		$inquiro = [];
		//-----------
		if (empty($data)) {
			//return json_encode( array( 'error'=>'Sin datos' ) );
			return json_encode( array( 'error'=>'1' ) );
		}
		//----------- 
		foreach ($data as $contraparte => $nd) {
			$pp = [];
			foreach ($columnas as $x => $col) {
				$g = (array) $col;
				$pp[$g['clave_indicador']] = $nd[ $g['clave_indicador'] ] ?? null;
				$pp[$g['clave_indicador'].'_icono'] = $nd[ $g['clave_indicador'].'_icono'] ?? null;
				$pp[$g['clave_indicador'].'_cls'] = $nd[ $g['clave_indicador'].'_cls'] ?? null;
				$pp[$g['clave_indicador'].'_color'] = $nd[ $g['clave_indicador'].'_color'] ?? null;
				$pp[$g['clave_indicador'].'_titulo'] = $nd[ $g['clave_indicador'].'_titulo'] ?? null;
				$pp[$g['clave_indicador'].'_valor'] = $nd[ $g['clave_indicador'].'_valor'] ?? null;
			}
			//
			$pp['contraparte'] = $nd['contraparte'] ?? null;
			$pp['iv_busqueda'] = $nd['iv_busqueda'] ?? null;
			$pp['country_code'] = $nd['country_code'] ?? null;
			// NO SE MUESTRAN LOS DOCUMENTOS EN ESTADO ANULADO
			if ( !isset($nd['contraparte']) ){
				continue;
			}

			$inquiro[] = $pp;	
			
		}
		
	
		if (!file_exists(env('PATH_COMPARTIDO') .  '/IV-PANEL/' . $cliente)) {
			mkdir(env('PATH_COMPARTIDO') .  '/IV-PANEL/' . $cliente, 0777, true);
		}
		$fecha = date('Ymd-Hi');
	
		$file_actual = env('PATH_COMPARTIDO') .  '/IV-PANEL/'. $cliente . '/panel-iv-' . $fecha . '.bkp'; 
		$file = env('PATH_COMPARTIDO') .  '/IV-PANEL/'. $cliente . '/panel-iv.json';
		//
		$resp = json_encode(['columnas' => $columnas,
			'data' => $inquiro,
			'pais' => $pais ,
			'familias' => $familias,
			'cv_iv' => $cv_iv,
			'valoracion_iv' => $valoracion_iv,
			'academico' => $academico,
			'profesional' => $profesional,
			'comercial_legal' => $comercial_legal,
			'compliance' => $compliance,
			'prensa' => $prensaiv,
			'indicador_boton' => '0',
			'indicador_estado_grid' => '2',
			'error'=>'0',
			'filtro' => $filtro]); 


		if (sizeof($data) > 0)
		{
			$aux = file_put_contents($file_actual, $resp); 
			$aux2 = file_put_contents($file, $resp);
			chmod($file, 0777);
			chmod($file_actual, 0777);
			$finalizados_generado = true;
		}

		// echo " - Fin archivo Panel: " . $file;


		/* PANEL EN PROCESO */ 

		$contrapartres_a_servidor_cadena = implode(',',$contrapartes_en_proceso);
		//
		foreach ($data_ep as $k => $iv) {
			$data_ep[$k]['foto_60'] = '<img src="'. env('RUTA_DOCUMENTOS_IV') . '/' . $data_ep[$k]['foto_60'] . '?r=' . time() .  '" border="0" class="img img-responsive" width="50" height="50" />';
			$data_ep[$k]['country'] = strtolower($data_ep[$k]['country_code']);
		}

		//---------- NUEVA LLAMADA AL STORE , QUE DEVUELVE INDICADORES PARA SEPARAR LO QUE ESTA EN PROCESO EN TRES ESTADOS
		$iconos_devueltos = SQLConnection::backendStoreProcedure('iv_estados_en_proceso',array('LISTAR',$contrapartres_a_servidor_cadena));
		foreach ($indicadores as $n => $valores) {
			if ( !in_array($valores->contraparte,$contrapartes_en_proceso) ) { continue; }
				//
				if ($valores->visible == 0 and $valores->clave_indicador != 'COMERCIAL_LEGAL' and $valores->clave_indicador != 'COMPLIANCE') {
					// COMENTADO TEMPORARIAMENTE DEVOLVER AL ESTADO ANTERIOR 07/12/2022 (RAMI)
					$valores->cls = 'XX1';
					$valores->icono = env('ICONO1_EN_PROCESO');
					$valores->color = env('COLOR1_EN_PROCESO');
					$valores->titulo = env('TEXTO1_EN_PROCESO');
				}
				//---------  EN ESTA SECCION SE MODIFICAN LOS CONTENIDOS DE LOS QUE ESTAN EN PROCESO PARA SEPARAR A ALGUNOS EN TRES ESTADOS
				if ($valores->visible == 0 and $valores->clave_indicador == 'IV_CV') {
					foreach($iconos_devueltos as $p => $value) {
						if ($valores->contraparte == $value->contraparte){
							if ($value->ICONO == 'ICONO1') {
								$valores->cls = 'XX1';
								$valores->icono = env('ICONO1_EN_PROCESO');
								$valores->color = env('COLOR1_EN_PROCESO');
								$valores->titulo = env('TEXTO1_EN_PROCESO');
								break;
							}
							elseif($value->ICONO == 'ICONO2') {
								$valores->cls = 'XX2';
								$valores->icono = env('ICONO2_EN_PROCESO');
								$valores->color = env('COLOR2_EN_PROCESO');
								$valores->titulo = env('TEXTO2_EN_PROCESO');
								break;
							}
							elseif($value->ICONO == 'ICONO3'){
								$valores->cls = 'XX3';
								$valores->icono = env('ICONO3_EN_PROCESO');
								$valores->color = env('COLOR3_EN_PROCESO');
								$valores->titulo = env('TEXTO3_EN_PROCESO');
								break;
							}
						}
					}
				}
				$data_ep[$valores->contraparte][$valores->clave_indicador] = $valores->titulo; 
				$data_ep[$valores->contraparte][$valores->clave_indicador.'_icono']  = $valores->icono;
				$data_ep[$valores->contraparte][$valores->clave_indicador.'_cls']    = $valores->cls;
				$data_ep[$valores->contraparte][$valores->clave_indicador.'_color'] = $valores->color;
				$data_ep[$valores->contraparte][$valores->clave_indicador.'_titulo']  = $valores->titulo;

		}

		$inquiro_en_proceso = [];

		$etiqueta_solicitud = env('TEXTO1_EN_PROCESO');
		$etiqueta_referencia = env('TEXTO2_EN_PROCESO');
		$etiqueta_redaccion = env('TEXTO3_EN_PROCESO');
		$etiqueta_control_calidad = env('TEXTO4_EN_PROCESO');
		//-----------
		foreach ($data_ep as $contraparte => $nd) {
			$pp = [];
			foreach ($columnas as $x => $col) {
				if ( !is_null($col->indicador) ){
					$g = (array) $col;
					$pp[$g['clave_indicador']] = $nd[ $g['clave_indicador'] ] ?? null;
					$pp[$g['clave_indicador'].'_icono'] = $nd[ $g['clave_indicador'].'_icono'] ?? null;
					$pp[$g['clave_indicador'].'_cls'] = $nd[ $g['clave_indicador'].'_cls'] ?? null;
					$pp[$g['clave_indicador'].'_color'] = $nd[ $g['clave_indicador'].'_color'] ?? null;
					$pp[$g['clave_indicador'].'_titulo'] = $nd[ $g['clave_indicador'].'_titulo'] ?? null;
				} else {
					$pp[$col->clave_indicador] = $nd[$col->clave_indicador] ?? null;
				}
			}
			//
			$pp['contraparte'] = $nd['contraparte'] ?? null;
			$pp['iv_busqueda'] = $nd['iv_busqueda'] ?? null;
			$pp['country_code'] = $nd['country_code'] ?? null;
			$pp['creado'] = $nd['created'] ?? null;
			// NO SE MUESTRAN LOS DOCUMENTOS EN ESTADO ANULADO
			if ( !isset($nd['contraparte']) ){
				continue;
			}
			//
			if ($pp['IV_CV'] == env('TEXTO4_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO4_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO4_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO4_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO4_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO4_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO4_EN_PROCESO')) {
				//------------ SI TIENE ALGUN ESTADO EN PROCESO, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['IV_CV'] = null;
				$pp['IV_CV_cls'] = null;
				$pp['IV_CV_color'] = null;
				$pp['IV_CV_icono'] = null;
				$pp['IV_CV_titulo'] = null;
				$pp['VALORACION_IV'] = null;
				$pp['VALORACION_IV_cls'] = null;
				$pp['VALORACION_IV_color'] = null;
				$pp['VALORACION_IV_icono'] = null;
				$pp['VALORACION_IV_titulo'] = null;
				$pp['ACADEMICO'] = null;
				$pp['ACADEMICO_cls'] = null;
				$pp['ACADEMICO_color'] = null;
				$pp['ACADEMICO_icono'] = null;
				$pp['ACADEMICO_titulo'] = null;
				//-------- Y LE AGREGA EL ESTADO DE EN PROCESO A LA COLUMNA PROFESIONAL 
				$pp['PROFESIONAL'] = $etiqueta_control_calidad;
				$pp['PROFESIONAL_cls'] = 'XX';
				$pp['PROFESIONAL_color'] = env('COLOR4_EN_PROCESO');
				$pp['PROFESIONAL_icono'] = env('ICONO4_EN_PROCESO');
				$pp['PROFESIONAL_titulo'] = $etiqueta_control_calidad;
				$inquiro_en_proceso[] = $pp;
			}
			elseif ($pp['IV_CV'] == env('TEXTO1_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO1_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO1_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO1_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO1_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO1_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO1_EN_PROCESO')) {
				//-------- SI TIENE ALGUN ESTADO COMPLETANDO DOCUMENTO, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['VALORACION_IV'] = null;
				$pp['VALORACION_IV_cls'] = null;
				$pp['VALORACION_IV_color'] = null;
				$pp['VALORACION_IV_icono'] = null;
				$pp['VALORACION_IV_titulo'] = null;
				$pp['ACADEMICO'] = null;
				$pp['ACADEMICO_cls'] = null;
				$pp['ACADEMICO_color'] = null;
				$pp['ACADEMICO_icono'] = null;
				$pp['ACADEMICO_titulo'] = null;
				$pp['PROFESIONAL'] == null;
				$pp['PROFESIONAL_cls'] = null;
				$pp['PROFESIONAL_color'] = null;
				$pp['PROFESIONAL_icono'] = null;
				$pp['PROFESIONAL_titulo'] = null;
				//-------- Y LE AGREGA EL ESTADO COMPLETANDO DOCUMENTO A LA COLUMNA IV_CV
				$pp['IV_CV'] = $etiqueta_solicitud;
				$pp['IV_CV_cls'] = 'XX1';
				$pp['IV_CV_color'] = env('COLOR1_EN_PROCESO');
				$pp['IV_CV_icono'] = env('ICONO1_EN_PROCESO');
				$pp['IV_CV_titulo'] = $etiqueta_solicitud;
				$inquiro_en_proceso[] = $pp;
			}
			elseif ($pp['IV_CV'] == env('TEXTO2_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO2_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO2_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO2_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO2_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO2_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO2_EN_PROCESO')) {
				//-------- SI TIENE ALGUN ESTADO EN AGUARDANDO REFERENCIA, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['ACADEMICO'] = null;
				$pp['ACADEMICO_cls'] = null;
				$pp['ACADEMICO_color'] = null;
				$pp['ACADEMICO_icono'] = null;
				$pp['ACADEMICO_titulo'] = null;
				$pp['PROFESIONAL'] == null;
				$pp['PROFESIONAL_cls'] = null;
				$pp['PROFESIONAL_color'] = null;
				$pp['PROFESIONAL_icono'] = null;
				$pp['PROFESIONAL_titulo'] = null;
				$pp['IV_CV'] = null;
				$pp['IV_CV_cls'] = null;
				$pp['IV_CV_color'] = null;
				$pp['IV_CV_icono'] = null;
				$pp['IV_CV_titulo'] = null;
				//-------- Y LE AGREGA EL ESTADO AGUARDANDO REFERENCIA A LA COLUMNA VALORACION_IV
				$pp['VALORACION_IV'] = $etiqueta_referencia;
				$pp['VALORACION_IV_cls'] = 'XX2';
				$pp['VALORACION_IV_color'] = env('COLOR2_EN_PROCESO');
				$pp['VALORACION_IV_icono'] = env('ICONO2_EN_PROCESO');
				$pp['VALORACION_IV_titulo'] = $etiqueta_referencia;
				$inquiro_en_proceso[] = $pp;
			}
			elseif ($pp['IV_CV'] == env('TEXTO3_EN_PROCESO') or $pp['ACADEMICO'] == env('TEXTO3_EN_PROCESO') or $pp['COMERCIAL_LEGAL'] == env('TEXTO3_EN_PROCESO') or $pp['COMPLIANCE'] == env('TEXTO3_EN_PROCESO') or $pp['PRENSAIV'] == env('TEXTO3_EN_PROCESO') or $pp['PROFESIONAL'] == env('TEXTO3_EN_PROCESO') or $pp['VALORACION_IV'] == env('TEXTO3_EN_PROCESO')) {
				//-------- SI TIENE ALGUN ESTADO EN REDACTANDO INFORME, LE QUITA LOS VALORES A LOS SIGUIENTES OBJETOS
				$pp['PROFESIONAL'] == null;
				$pp['PROFESIONAL_cls'] = null;
				$pp['PROFESIONAL_color'] = null;
				$pp['PROFESIONAL_icono'] = null;
				$pp['PROFESIONAL_titulo'] = null;
				$pp['IV_CV'] = null;
				$pp['IV_CV_cls'] = null;
				$pp['IV_CV_color'] = null;
				$pp['IV_CV_icono'] = null;
				$pp['IV_CV_titulo'] = null;
				$pp['VALORACION_IV'] = null;
				$pp['VALORACION_IV_cls'] = null;
				$pp['VALORACION_IV_color'] = null;
				$pp['VALORACION_IV_icono'] = null;
				$pp['VALORACION_IV_titulo'] = null;
				$pp['ACADEMICO'] = $etiqueta_redaccion; //-------- Y LE AGREGA EL ESTADO REDACTANDO INFORME A LA COLUMNA ACADEMICO
				$pp['ACADEMICO_cls'] = 'XX3';
				$pp['ACADEMICO_color'] = env('COLOR3_EN_PROCESO');
				$pp['ACADEMICO_icono'] = env('ICONO3_EN_PROCESO');
				$pp['ACADEMICO_titulo'] = $etiqueta_redaccion;
				$inquiro_en_proceso[] = $pp;
			}
			elseif( $pp['IV_CV'] == null and $pp['ACADEMICO'] == null and $pp['PRENSAIV'] == null and $pp['VALORACION_IV'] == null ) {
				$inquiro_en_proceso[] = $pp;
			}
		}
		//--------
		$inquiro_sorteado = [];
		$inquiro_xx = [];
		$inquiro_xx1 = [];
		$inquiro_xx2 = [];
		$inquiro_xx3 = [];
		$inquiro_sin_estado = [];
		//----- SE CORRE UN LOOP PARA SEPARAR EL CONTENIDO DE MANERA ORDENADA
		foreach ($inquiro_en_proceso as $key => $value) {
			if ( $value['IV_CV_cls'] == 'XX1' ) {
				array_push($inquiro_xx1,$value);
			} elseif ( $value['VALORACION_IV_cls'] == 'XX2' ) {
				array_push($inquiro_xx2,$value);
			} elseif ( $value['ACADEMICO_cls'] == 'XX3' ) {
				array_push($inquiro_xx3,$value);
			} elseif ( $value['PROFESIONAL_cls'] == 'XX' ) {
				array_push($inquiro_xx,$value);
			} else {
				array_push($inquiro_sin_estado,$value);
			}
		}
		//---------------- SE UNEN LOS ARRAYS DESPUES DEL LOOP EN EL ARRAY inquiro_sorteado PARA FORMAR LA ESTRUCTURA DIAGONAL
		$inquiro_sorteado = array_merge($inquiro_xx1,$inquiro_xx2,$inquiro_xx3,$inquiro_xx,$inquiro_sin_estado);
		

		$columnas_en_proceso = [];
		//-------- SE CREA UN NUEVO ARRAY DE COLUMNAS Y SE LES SACA ALGUNOS CONTENIDOS DE LAS ULTIMAS CUATRO COLUMNAS
		foreach ($columnas as $key => $value) {
			if ($key < 8) {
				$objeto = clone $columnas[$key];
				array_push($columnas_en_proceso,$objeto);
			} elseif ($key >= 8 and $key <= 13) {
				//----------
				$objeto = clone $columnas[$key];
				if ($objeto->clave_indicador == 'IV_CV') {
				    //-------- Y LE AGREGA EL ESTADO REDACTANDO INFORME A LA COLUMNA ACADEMICO
					$objeto->class_icon = 'fas '.env('ICONO1_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_solicitud;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				elseif ($objeto->clave_indicador == 'VALORACION_IV') {
					$objeto->class_icon = 'fas '.env('ICONO2_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_referencia;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				elseif ($objeto->clave_indicador == 'ACADEMICO') {
					$objeto->class_icon = 'fas '.env('ICONO3_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_redaccion;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				elseif ($objeto->clave_indicador == 'PROFESIONAL') {
					$objeto->class_icon = 'fas '.env('ICONO4_EN_PROCESO');
					$objeto->etiqueta_indicador = $etiqueta_control_calidad;
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
				else {
					$objeto->searchable = '0';
					array_push($columnas_en_proceso,$objeto);
				}
			}
		}

		
		if (!file_exists(env('PATH_COMPARTIDO') .  '/IV-PANEL/' . $cliente)) {
			mkdir(env('PATH_COMPARTIDO') .  '/IV-PANEL/' . $cliente, 0777, true);
		}
		$fecha = date('Ymd-Hi');
	
		$file_actual = env('PATH_COMPARTIDO') .  '/IV-PANEL/'. $cliente . '/panel-iv-ep-' . $fecha . '.bkp'; 
		$file = env('PATH_COMPARTIDO') .  '/IV-PANEL/'. $cliente . '/panel-iv-ep.json';
		//
		$resp = json_encode(['columnas' => $columnas_en_proceso,
			'data' => $inquiro_sorteado,
			'pais' => $pais_ep ,
			'familias' => $familias_ep,
			'cv_iv' => $cv_iv,
			'valoracion_iv' => $valoracion_iv,
			'academico' => $academico,
			'profesional' => $profesional,
			'comercial_legal' => $comercial_legal,
			'compliance' => $compliance,
			'prensa' => $prensaiv,
			'indicador_boton' => '1',
			'indicador_estado_grid' => '0',
			'error'=>'0',
			'filtro' => $filtro]); 

		if (sizeof($data_ep) > 0)
		{
			$aux = file_put_contents($file_actual, $resp); 
			$aux2 = file_put_contents($file, $resp);
			chmod($file, 0777);
			chmod($file_actual, 0777);
			$en_proceso_generado = true;
			// echo " - Fin archivo En Proceso: " . $file;
		}
		else 
		{
			// Si hay un json de IV en Proceso, borra ese archivo porque ahora no hay nada en proceso 
			if (file_exists($file))
			{
				unlink($file); 
			}
			// echo " - No hay datos En Proceso " ;
		}
		//
		// return json_encode(['error' => 0,'mensaje' => 'OK','finalizados_generado' => $finalizados_generado,'en_proceso_generado' => $en_proceso_generado]);
		return Response::JSON(['error' => 0,'mensaje' => 'OK','finalizados_generado' => $finalizados_generado,'en_proceso_generado' => $en_proceso_generado]);
	}


	/* ivPanelFancyData Tomando datos del archivo JSCON generado */ 

	public static function ivPanelFancyData(){
		ini_set('memory_limit','4096M');
		$cliente = Session::get('usuario')->cliente['client_id'];

		$filtro = $_POST['mostrar_en_proceso'];
		if ($filtro == 1)
		{
			$file = env('PATH_COMPARTIDO') .  '/IV-PANEL/'. $cliente . '/panel-iv-ep.json'; 
		}
		else
		{
			$file = env('PATH_COMPARTIDO') .  '/IV-PANEL/'. $cliente . '/panel-iv.json'; 	
		}
		if(ENV('FORZAR_GENERACION_JSON') == true && !file_exists($file) ){
			self::ivPanelControlFile($cliente); 
		}
		if (!file_exists($file)) {	
			return json_encode('fallo'); 
		}

		$archivo = file_get_contents($file);
		
		/* AGREGADO PARA TRADUCCIONES */

		Traducciones::$blade = 'iv_panel_control_nuevo';
		$trad = SQLConnection::obtenerTraduccionesPHP(Traducciones::$blade);
		// Hace las traducciones de los titulos 
		$resultado = json_decode($archivo);
		
		foreach ($resultado->columnas as $key => $value) {
			if ( isset($trad[$value->etiqueta_indicador]) ){
				$resultado->columnas[$key]->etiqueta_indicador = $trad[$value->etiqueta_indicador];
			} else {
				Traducciones::set($value->etiqueta_indicador,Traducciones::$blade);
			}
		}
		$archivo = json_encode($resultado); 
		// --
		UserController::obtenerTraduccionesBotones(Request::input('numero'));

 		$resultado = json_decode($archivo); 
		//return json_encode($resultado);
		
		// VEMOS SI ES CON FILTROS 

		$filtro = 0;
		// VARIABLE QUE TIENE EL CLAVE DEL INDICADOR
		$clave_indicador = Request::input('clave_indicador') ?? NULL ;
		// VARIBLE QUE TIENE EL VALOR DEL INDICADOR A FILTRARSE CON
		$valor_texto_filtro = Request::input('valor_texto') ??  NULL ;


		
		// VARIABLE QUE SI TIENE VALOR 1 NO FILTRA EL PANEL POR VISIBILIDAD
		// $sin_filtro_visibilidad = Request::input('sin_filtro_visibilidad') ?? NULL ;

		// SE LE MANDA LA LISTA DE CONTRAPARTES
		$lista_contrapartes =  ( Request::input('contrapartes') ) ? Request::input('contrapartes') : NULL; 

		//
		$contrapartes_filtradas = [];

		if ($lista_contrapartes !== NULL) 
		{
			$contrapartes_filtradas = explode(',', $lista_contrapartes); 
		}

		else 

		{

			if ( !is_null($clave_indicador) )
			{
				foreach ($resultado->data as $key => $valores) {
					if ( !in_array($valores->contraparte,$contrapartes_filtradas)  ){
						// $busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', $valores->iv_busqueda), 'selectOne');
						// $valores->creado = $busqueda->created;
						if ( $clave_indicador == 'IV_OBSERVADOS' ){
							if ( 
							(!is_null($valores->VALORACION_IV_valor)   && ($valores->VALORACION_IV_valor   == 'O' || $valores->VALORACION_IV_valor   == 'N' )) ||
							(!is_null($valores->ACADEMICO_valor)       && ($valores->ACADEMICO_valor       == 'O' || $valores->ACADEMICO_valor       == 'N' )) ||
							(!is_null($valores->PROFESIONAL_valor)     && ($valores->PROFESIONAL_valor     == 'O' || $valores->PROFESIONAL_valor     == 'N' )) ||
							(!is_null($valores->COMERCIAL_LEGAL_valor) && ($valores->COMERCIAL_LEGAL_valor == 'O' || $valores->COMERCIAL_LEGAL_valor == 'N' )) ||
							(!is_null($valores->COMPLIANCE_valor)      && ($valores->COMPLIANCE_valor      == 'O' || $valores->COMPLIANCE_valor      == 'N' )) ||
							(!is_null($valores->PRENSAIV_valor)        && ($valores->PRENSAIV_valor        == 'O' || $valores->PRENSAIV_valor        == 'N' ))
							){
								array_push($contrapartes_filtradas,$valores->contraparte);
							}
						}
						

						if ( $clave_indicador == 'SCORE_IV' || $clave_indicador == 'VALORACION_IV' ){					
								if ( $valores->VALORACION_IV_valor == $valor_texto_filtro ){
									array_push($contrapartes_filtradas,$valores->contraparte);
								}
						}

						if ( $clave_indicador == 'COMPLIANCE' ){		
								if ( $valores->COMPLIANCE_valor == $valor_texto_filtro ){
									array_push($contrapartes_filtradas,$valores->contraparte);
								}
						}

						if ( $clave_indicador == 'ACADEMICO_IV' || $clave_indicador == 'ACADEMICO' ){					
								if ( $valores->ACADEMICO_valor == $valor_texto_filtro ){
									array_push($contrapartes_filtradas,$valores->contraparte);
								}
						}

						if ( $clave_indicador == 'PROFESIONAL_IV' || $clave_indicador == 'PROFESIONAL' ){					
								if ( $valores->PROFESIONAL_valor == $valor_texto_filtro ){
									array_push($contrapartes_filtradas,$valores->contraparte);
								}
						}

						if ( $clave_indicador == 'COMERCIAL_LEGAL_IV' || $clave_indicador == 'COMERCIAL_LEGAL' ){					
								if ( $valores->COMERCIAL_LEGAL_valor == $valor_texto_filtro ){
									array_push($contrapartes_filtradas,$valores->contraparte);
								}
						}
					}
				}

			}
		}

		if (!empty($contrapartes_filtradas))
		{

			$aux = [];
			foreach ($resultado->data as $key => $cand) {
				if ( in_array($cand->contraparte,$contrapartes_filtradas) ){					
					$aux[] = $resultado->data[$key];
					}
			}
			$resultado->data = [];
			$resultado->data = $aux;
		}

		// dd($resultado);
		
		return json_encode($resultado);

		 	
	}

	/* ---------------------------------------------------------------------------------------------------------------- */ 

	
}
