<?php namespace App\Http\Controllers; 
 
use App\Custom\SQLConnection; 
use App\Custom\Misc;  
use App\Custom\Mailer;
use App\Custom\DashboardJSON;
use App\Http\Controllers\AFIPController;
use App\Http\Controllers\UserController;
use Request;
use Session;
use DateTime;
use Illuminate\Support\Facades\Input;
use DB;
use stdClass;
use App\Http\Controllers\ReportsController;
use App\Http\Controllers\MainController;
use App\Http\Controllers\EmailControllerBackend; 
use App\Http\Controllers\DashboardController; 


// use Illuminate\Session\TokenMismatchException;

class FieldSorter {
    public $field;

    function __construct($field) {
        $this->field = $field;
    }

    function cmp($a, $b) {
        if ($a[$this->field] == $b[$this->field]) return 0;
        return ($a[$this->field] > $b[$this->field]) ? 1 : -1;
    }
}

class LEDController extends Controller
{
	//------- CREAMOS UNA COPIA DE LA CLASE MAINCONTROLLER PARA PODER LLAMAR A CIERTAS FUNCIONES QUE NO SON ESTATICAS EN EL MAIN CONTROLLER
	public static $MainController;
	public function __construct(){
		if (!self::$MainController){
		self::$MainController = new MainController();
		}
	}

	public static $campo1;
	public static $campo2;
	public static $campo3;

	
	public static function ledDashboard() { 
		ini_set('memory_limit','4096M');
		$servicio_actual  = Session::get('servicio_actual');
		$cliente		  			= Session::get('usuario')->cliente['client_id'];
		//
		if ( $servicio_actual == env('LED_PRODUCTO') ){
			return redirect('/led/dashboard');
		}
		//
		if ( $cliente == '861672084' || $cliente == '1562620024' || $cliente == '5546348' || $cliente == '2254875') {
			return DashboardController::ivDashboard();
		}
		//
	  	$qcontrap		 			= DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('search',null,null,$cliente,null,1,null,null,null,null,null,null,null,null,null));
		//$productos				= SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('INDICADORES_GRAFICOS', $cliente, null, null, null), 'select');
		$productos	= SQLConnection::backendStoreProcedure('LN_dashboard_graficos_segun_servicio', array('GRAFICOS_INDICADORES',$cliente,$servicio_actual), 'select');
		//$count_cuadros				= SQLConnection::backendStoreProcedure('LN_dashboard_graficos', array('COUNT-LINEA1',$cliente), 'selectOne');
		$redirect = '';
		//----
		if( count($productos) == 0){
			$redirect = 'panel';
			//---- SI ES PRODUCTO IMPERIUM SE REDIRECCIONA DEPENDE DE LA SECCION QUE TIENE EL USUARIO
			if ( $servicio_actual == env('IMPE_PRODUCTO') ){
				if ( Session::get('usuario')->control_acceso == true ){
					$redirect = 'control_acceso';
				}
				if ( Session::get('usuario')->control_documentos == true ){
					$redirect = 'verfi_doc';
				}
				if ( Session::get('usuario')->control_contratistas == true ){
					$redirect = 'contratista';
				}
				if ( Session::get('usuario')->control_panel_impe == true ){
					$redirect = 'panel';		
				}
			}
			//----
		}
		if($cliente == '515494256'){
			$redirect = 'coface';
		}  
		$graf_cumplimiento			= [];//SQLConnection::backendStoreProcedure('LN_dashboard_graficos', array('GRAPH_CONTRAPARTES_CUMPLIMIENTO',$cliente), 'selectOne');
		$graf_pais					= [];//SQLConnection::backendStoreProcedure('LN_dashboard_graficos', array('GRAPH_CONTRAPARTES_PAISES',$cliente), 'select');
		$graf_contr_fam				= [];//SQLConnection::backendStoreProcedure('LN_dashboard_graficos', array('GRAPH_CONTRAPARTES_FAMILIAS',$cliente), 'select');
		$tiene_informe_comercial 	= 0;
		$tiene_balances		  		= 0;
		$tiene_docs			  		= 0;
		$tiene_score_final	   		= 0;
		$tiene_fidecheck		 	= 0;
		$tiene_score_dossier	 	= 0;
		$tiene_dep_econ		  		= 0;
		$tiene_control_ingreso   	= 0;
		$graf_inf_com		  		= [];
		$graf_score_bal				= [];
		$graf_score_doc				= [];
		$graf_score_final	  		= [];
		$graf_fidecheck				= [];
		$graf_score_dossier			= [];
		$graf_dep_econ		 		= [];
		$graf_control_ingreso  		= [];
		$graficos_todos				= [];
		
        //	$test = SQLConnection::backendStoreProcedure('LN_dashboard_graficos_pre_new', array('GRAFICO_INFORME_COMERCIAL', $cliente,null), 'selectOne');
        
		foreach ($productos as $i => $prod) {
			/*if(
				$prod->clave_indicador == 'COUNT_CONTRAPARTES'
				|| $prod->clave_indicador == 'COUNT_DOCUMENTOS'
				|| $prod->clave_indicador == 'COUNT_RECHAZO_AUDITORIA'
				|| $prod->clave_indicador == 'COUNT_ALTA_DEP_ECONOMICA'
				 $prod->clave_indicador == 'GRAFICO_SCORE_FINAL'
				//|| $prod->clave_indicador == 'GRAFICO_INFORME_COMERCIAL'
				//|| $prod->clave_indicador == 'GRAFICO_SCORE_BALANCE'
				//|| $prod->clave_indicador == 'GRAPH_CONTRAPARTES_PAISES'
				//|| $prod->clave_indicador == 'GRAFICO_CONTROL_INGRESO'
				//|| $prod->clave_indicador == 'GRAFICO_DEPENDENCIA_ECONOMICA'
				//|| $prod->clave_indicador == 'GRAFICO_FIDECHECK'
			){
				continue;
			}*/
			if($prod->clave_indicador == 'GRAPH_CONTRAPARTES_CUMPLIMIENTO')
			{
				$graficos_todos[$prod->clave_indicador] = SQLConnection::backendStoreProcedure('LN_dashboard_graficos_' . env('GRAFICOS'), array($prod->clave_indicador, $cliente,null,$servicio_actual,Session::get('usuario')->user_id), 'selectOne');
			}else
			{
				if ($servicio_actual == 47 && $prod->clave_indicador !== 'ENRIESGO' && $prod->clave_indicador !== 'OPORTUNIDADES')
				{
				$graficos_todos[$prod->clave_indicador] = SQLConnection::backendStoreProcedure('LN_dashboard_graficos_' . env('GRAFICOS'), array($prod->clave_indicador, $cliente,null,$servicio_actual,Session::get('usuario')->user_id), 'select');
				}
				else 
				{
				/*
				print_r('LN_dashboard_graficos_segun_servicio <br>');
				print_r($prod->clave_indicador);
				print_r('<br>');
				print_r($cliente);
				print_r('<br>');
				print_r($servicio_actual);
				print_r('<br>');
					*/
				$graficos_todos[$prod->clave_indicador] = SQLConnection::backendStoreProcedure('LN_dashboard_graficos_segun_servicio', array($prod->clave_indicador, $cliente,$servicio_actual), 'select');
				} 
			}
		}
		
		if ($servicio_actual == 47){
			$graficos_todos['COUNT_ENRIESGO_VALID'] = SQLConnection::backendStoreProcedure('LN_dashboard_graficos_' . env('GRAFICOS'), array('COUNT_ENRIESGO_VALID', $cliente,null,$servicio_actual,Session::get('usuario')->user_id), 'selectOne');
			$graficos_todos['COUNT_OPORT_COMER_VALID'] = SQLConnection::backendStoreProcedure('LN_dashboard_graficos_' . env('GRAFICOS'), array('COUNT_OPORT_COMER_VALID', $cliente,null,$servicio_actual,Session::get('usuario')->user_id), 'selectOne');
		}
		//
		$total_contratistas = 0;
		if(isset($graficos_todos['GRAPH_CONTRATISTAS'])){
			foreach ($graficos_todos['GRAPH_CONTRATISTAS'] as $key => $value) {
				$total_contratistas = $total_contratistas + $value->total;
			}
		}
		//
		$total_subcontratistas = 0;
		if(isset($graficos_todos['GRAPH_SUBCONTRATISTAS'])){
			foreach ($graficos_todos['GRAPH_SUBCONTRATISTAS'] as $key => $value) {
				$total_subcontratistas = $total_subcontratistas + $value->total;
			}
		}
		//
		$total_empleados = 0;
		if(isset($graficos_todos['GRAPH_EMPLEADOS'])){
			foreach ($graficos_todos['GRAPH_EMPLEADOS'] as $key => $value) {
				$total_empleados = $total_empleados + $value->total;
			}
		}

		$total_vehiculos = 0;
		if(isset($graficos_todos['GRAPH_VEHICULOS'])){
			foreach ($graficos_todos['GRAPH_VEHICULOS'] as $key => $value) {
				$total_vehiculos = $total_vehiculos + $value->total;
			}
		}

		$total_impe_status = 0;
		if(isset($graficos_todos['GRAPH_IMPE_STATUS'])){
			foreach ($graficos_todos['GRAPH_IMPE_STATUS'] as $key => $value) {
				$total_impe_status = $total_impe_status + $value->total;
			}
		}

		$total_inf_comercial = 0;
		if(isset($graficos_todos['GRAFICO_INFORME_COMERCIAL'])){
			foreach ($graficos_todos['GRAFICO_INFORME_COMERCIAL'] as $key => $value) {
				$total_inf_comercial = $total_inf_comercial + $value->total;
			}
		}

		$total_score_bal = 0;
		if(isset($graficos_todos['GRAFICO_SCORE_BALANCE'])){
			foreach ($graficos_todos['GRAFICO_SCORE_BALANCE'] as $key => $value) {
				$total_score_bal = $total_score_bal + $value->total;
			}
		}

		$total_score_final = 0;
		if(isset($graficos_todos['GRAFICO_SCORE_FINAL'])){
			foreach ($graficos_todos['GRAFICO_SCORE_FINAL'] as $key => $value) {
				$total_score_final = $total_score_final + $value->total;
			}
		}
		$total_grafico_pago = 0;
		$total_grafico_pago_ar = 0;
		$total_grafico_pago_br = 0;
		$total_grafico_pago_us = 0;
		if(isset($graficos_todos['GRAFICO_PAGO'])){
			foreach ($graficos_todos['GRAFICO_PAGO'] as $key => $value) {
				$total_grafico_pago = $total_grafico_pago + $value->total;
			}
		}
		if(isset($graficos_todos['GRAFICO_PAGO_AR'])){
			foreach ($graficos_todos['GRAFICO_PAGO_AR'] as $key => $value) {
				$total_grafico_pago_ar = $total_grafico_pago_ar + $value->total;
			}
		}
		if(isset($graficos_todos['GRAFICO_PAGO_BR'])){
			foreach ($graficos_todos['GRAFICO_PAGO_BR'] as $key => $value) {
				$total_grafico_pago_br = $total_grafico_pago_br + $value->total;
			}
		}
		if(isset($graficos_todos['GRAFICO_PAGO_US'])){
		foreach ($graficos_todos['GRAFICO_PAGO_US'] as $key => $value) {
				$total_grafico_pago_us = $total_grafico_pago_us + $value->total;
			}
		}

		/* 14/09/2020*/
		/* AGREGADO PARA TRADUCCIONES */
		
		Traducciones::$blade = 'led_dashboard';
		$trad = SQLConnection::obtenerTraduccionesPHP(Traducciones::$blade);

		$grafico_trad   = []; 
		if(isset($graficos_todos['GRAFICO_INFORME_COMERCIAL'])) 		{ $grafico_trad[] = 'GRAFICO_INFORME_COMERCIAL'; }
		if(isset($graficos_todos['GRAPH_CLI_PROV'])) 					{ $grafico_trad[] = 'GRAPH_CLI_PROV'; }
		if(isset($graficos_todos['GRAFICO_FIDECHECK'])) 				{ $grafico_trad[] = 'GRAFICO_FIDECHECK'; }
		if(isset($graficos_todos['GRAFICO_APOCRIFAS'])) 				{ $grafico_trad[] = 'GRAFICO_APOCRIFAS'; }
		if(isset($graficos_todos['GRAFICO_SCORE_DOSSIER'])) 			{ $grafico_trad[] = 'GRAFICO_SCORE_DOSSIER'; }
		if(isset($graficos_todos['GRAFICO_SCORE_FINAL'])) 				{ $grafico_trad[] = 'GRAFICO_SCORE_FINAL'; }
		if(isset($graficos_todos['GRAFICO_SCORE_BALANCE'])) 			{ $grafico_trad[] = 'GRAFICO_SCORE_BALANCE'; }
		if(isset($graficos_todos['GRAFICO_SCORE_DOCUMENTOS'])) 			{ $grafico_trad[] = 'GRAFICO_SCORE_DOCUMENTOS'; }
		if(isset($graficos_todos['GRAFICO_PAGO']))      				{ $grafico_trad[] = 'GRAFICO_PAGO'; }
		if(isset($graficos_todos['GRAFICO_PAGO_AR']))   				{ $grafico_trad[] = 'GRAFICO_PAGO_AR'; }
		if(isset($graficos_todos['GRAFICO_PAGO_BR']))   				{ $grafico_trad[] = 'GRAFICO_PAGO_BR'; }
		if(isset($graficos_todos['GRAFICO_PAGO_US']))   				{ $grafico_trad[] = 'GRAFICO_PAGO_US'; }
		if(isset($graficos_todos['GRAFICO_DEPENDENCIA_ECONOMICA'])) 	{ $grafico_trad[] = 'GRAFICO_DEPENDENCIA_ECONOMICA'; }
		if(isset($graficos_todos['GRAFICO_CONTROL_INGRESO'])) 			{ $grafico_trad[] = 'GRAFICO_CONTROL_INGRESO'; }
		if(isset($graficos_todos['GRAFICO_SCORE_DOCUMENTOS'])) 			{ $grafico_trad[] = 'GRAFICO_SCORE_DOCUMENTOS'; }
        /*
		if(isset($graficos_todos['GRAPH_CUMPLIMIENTO_MENSUAL'])) 		{ $grafico_trad[] = 'GRAPH_CUMPLIMIENTO_MENSUAL'; }
		if(isset($graficos_todos['COUNT_ADMINISTRADOS'])) 				{ $grafico_trad[] =   'COUNT_ADMINISTRADOS'; }
		if(isset($graficos_todos['COUNT_CONTRATISTAS'])) 				{ $grafico_trad[] =   'COUNT_CONTRATISTAS'; }
		if(isset($graficos_todos['COUNT_SUBCONTRATISTAS'])) 			{ $grafico_trad[] =   'COUNT_SUBCONTRATISTAS'; }
		if(isset($graficos_todos['COUNT_EMPLEADOS'])) 					{ $grafico_trad[] =   'COUNT_EMPLEADOS'; }
		if(isset($graficos_todos['COUNT_VEHICULOS'])) 					{ $grafico_trad[] =   'COUNT_VEHICULOS'; }
		if(isset($graficos_todos['COUNT_DOCUMENTOS_IMPE'])) 			{ $grafico_trad[] =   'COUNT_DOCUMENTOS_IMPE'; }
		if(isset($graficos_todos['GRAPH_CONTRATISTAS'])) 				{ $grafico_trad[] =   'GRAPH_CONTRATISTAS'; }
		if(isset($graficos_todos['GRAPH_SUBCONTRATISTAS'])) 			{ $grafico_trad[] =   'GRAPH_SUBCONTRATISTAS'; }
		if(isset($graficos_todos['GRAPH_EMPLEADOS'])) 					{ $grafico_trad[] =   'GRAPH_EMPLEADOS'; }
		if(isset($graficos_todos['GRAPH_VEHICULOS'])) 					{ $grafico_trad[] =   'GRAPH_VEHICULOS'; }
		if(isset($graficos_todos['GRAPH_CUMPLIMIENTO_MENSUAL'])) 		{ $grafico_trad[] =   'GRAPH_CUMPLIMIENTO_MENSUAL'; }
        */
		// Hace las traducciones de las etiquetas de graficos 
		foreach ($grafico_trad as $value) {
			foreach ($graficos_todos[$value] as $key => $value_n1) {
			
				if(isset($trad[$value_n1->etiqueta])){
					//var_dump($trad[$value_n1->etiqueta]); 
					$graficos_todos[$value][$key]->etiqueta = $trad[$value_n1->etiqueta];
					if (isset($graficos_todos[$value][$key]->etiqueta_texto)) 
					{
						$graficos_todos[$value][$key]->etiqueta_texto = $graficos_todos[$value][$key]->etiqueta;
					}
				}
				else
				{
					// Si no esta traducido, lo guarda en la tabla traducciones
					Traducciones::set($value_n1->etiqueta,Traducciones::$blade);
				}

			}
		}

        //var_dump($graficos_todos); die(); 
			
		/* -------------------------- */ 
		/* 14/09/2020*/
		UserController::obtenerTraduccionesBotones();
		/* -------------------------- */ 
		
		$trazabilidad = SQLConnection::backendStoreProcedure('obtener_trazabilidad', array($cliente,'LED'), 'select');
		$fechas = []; 
		foreach ($trazabilidad as $key => $value) {
			$fechas[$value->fecha] = new stdClass; 
			$fechas[$value->fecha]->fecha = $value->fecha; 
		}
		//$novedades = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('novedades_monitoreo',$cliente,null,null,null), 'select');
		$navtext = 'Dashboard';
 	    return view('/led/led_dashboard')->with(compact(['total_grafico_pago','total_grafico_pago_ar','total_grafico_pago_br','total_grafico_pago_us','redirect','graf_contr_fam','graf_pais','graf_cumplimiento','qcontrap','total_inf_comercial','trazabilidad','total_score_bal','total_score_final',
	    'tiene_balances', 'tiene_docs', 'tiene_score_final', 'tiene_fidecheck', 'graf_score_final', 'graficos_todos','graf_inf_com' , 'graf_score_doc', 'graf_fidecheck', 'navtext','graf_score_dossier','tiene_score_dossier','graf_dep_econ','tiene_dep_econ','graf_control_ingreso','tiene_control_ingreso','total_contratistas', 'total_subcontratistas','total_empleados','total_vehiculos','total_impe_status','fechas']));
	}


	public static function ledClienteProductos() 
	{
	  /*$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',Request::input('cliente'),NULL,NULL,NULL), 'selectOne');
	  $prd = SQLConnection::backendStoreProcedure('LN_productos_', array('SEARCH', null, null, null, null, Session::get('usuario')->user_id), 'select');*/
	  $led_access = DB::selectOne('EXEC dbo.LN_validar_acceso_usuario ? ,?', array(env('LED_PRODUCTO'), Session::get('usuario')->user_id));	
	  $cliente = Session::get('usuario')->cliente['client_id'];

	  $cli = DB::selectOne('EXEC dbo.LED_Clientes ?,?,?,?,?', array('select', $cliente, null, null, null));
	  $prodcli = DB::select('EXEC dbo.LN_cliente_productos_ ?,?,?,?,?,?,?', array('search', $cliente, null, null, null, null, Session::get('usuario')->user_id));

	  $navtext = "Productos";

	  return view('/led/led_cliente_productos')->with(compact(['cli', 'prodcli', 'led_access', 'navtext']));
	}

	public static function ledClienteFamilias()
	{
		$cliente = Session::get('usuario')->cliente['client_id'];
		$led_access = DB::selectOne('EXEC dbo.LN_validar_acceso_usuario ? ,?', array(env('LED_PRODUCTO'), Session::get('usuario')->user_id));

		$country = DB::select('EXEC dbo.backend_obtener_paises', array());
		$cli = DB::selectOne('EXEC dbo.LED_Clientes ?,?,?,?,?', array('select', $cliente, null, null, null));
		$fams = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',null,null,$cliente,null,null,null));

		$navtext = "Familias";

		return view('/led/led_familias')->with(compact(['country', 'cli', 'fams', 'led_access', 'navtext']));
	}

	public static function ledClienteFamiliasNew() 
	{
	  $cliente = Session::get('usuario')->cliente['client_id'];
	  $cli = DB::selectOne('EXEC dbo.LED_Clientes ?,?,?,?,?', array('select', $cliente, null, null, null));
	  $country = DB::select('EXEC dbo.backend_obtener_paises', array());

	  return view('/led/led_familias_new')->with(compact(['cliente', 'cli', 'country']));
	}


	public static function ledClienteFamiliaStep()
	{
		$cliente = Request::input('cliente');
		$nombre = Request::input('nombre_familia');
		$pais = Request::input('country_code');
		$vis = Request::input('visible');
		$country = DB::select('EXEC dbo.backend_obtener_paises', array());
		$cli = DB::selectOne('EXEC dbo.LED_Clientes ?,?,?,?,?', array('select', $cliente, null, null, null));
		$prod = DB::select('EXEC dbo.LN_cliente_productos_pais ?,?', array($cliente, $pais));

		return view('/led/led_familias_step')->with(compact(['cli', 'nombre', 'pais', 'country', 'vis', 'cliente', 'prod']));
	}

	public static function ledClienteFamiliaEnd()
	{
		$rv = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('insert', null, Request::input('nombre_familia'), Request::input('cliente'), Request::input('country_code'), Request::input('visible'), Session::get('usuario')->user_id));
		$newid = $rv[0]->familia;
		foreach (Request::input('producto') as $prod) {
			$temp = DB::selectOne('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('insert', $newid, $prod, 1, Session::get('usuario')->user_id));
		}

		return redirect('/led/led-familias');
	}

	public static function ledClienteFamiliaEdit()
	{
		$cliente = Request::input('cliente');
		$fam = Request::input('familia');
		$datos = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('select',$fam,null,null,null,null,null));
		$country = DB::select('EXEC dbo.backend_obtener_paises', array());
		$prod = DB::select('EXEC dbo.LN_cliente_productos_pais ?,?', array($cliente, $datos->country_code));
		$famprod = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('search', $fam, null, null, null));

		return view('/led/led_familias_edit')->with(compact(['cliente', 'fam', 'country', 'datos', 'prod', 'famprod']));
	}

	public static function ledClienteFamiliaUpdate()
	{
		$cliente = Request::input('cliente');
		$familia = Request::input('familia');
		$nombre_familia = Request::input('nombre_familia');
		$visible = Request::input('visible');
		$country_code = Request::input('country_code');
		$productos = Request::input('producto');

		$temp = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('update',$familia,$nombre_familia,$cliente,$country_code,$visible,Session::get('usuario')->user_id));
		$qprod = DB::select('EXEC dbo.LN_cliente_productos_pais ?,?', array($cliente, $country_code));

		foreach ($qprod as $thisprod) {
			$temp = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('delete', $familia, $thisprod->producto, null, null));
		}
		foreach ($productos as $thisprod) {
			$temp = DB::selectOne('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('insert', $familia, $thisprod, 1, Session::get('usuario')->user_id));
		}

		return redirect('/led/led-familias');
	}

	public static function ledClienteFamiliaConfirm()
	{
		$cliente = Request::input('cliente');
		$familia = Request::input('familia');
		$datos = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('select',$familia,null,null,null,null,null));
		$famprod = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('search', $familia, null, null, null));

		return view('/led/led_familias_confirm')->with(compact(['cliente', 'familia', 'datos', 'famprod']));
	}

	public static function ledClienteFamiliaDelete()
	{
		$cliente = Request::input('cliente');
		$familia = Request::input('familia');
		$famprod = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('search', $familia, null, null, null));
		foreach ($famprod as $thisprod) {
			$temp = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('delete', $familia, $thisprod->producto, null, null));
		}
		$temp = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('delete',$familia,null,null,null,null,null));
		return redirect('/led/led-familias');
	}

	/******/

	public static function ledContraparteFamilias()
	{
		$cliente = Request::input('cliente');
		$familia = Request::input('familia');

		$datosfamilia = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('select',$familia,null,null,null,null,null));

		$qcontrap = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', null, $familia, null, null, null, null), 'select');

		return view('/led/led_contraparte_familias')->with(compact(['datosfamilia', 'qcontrap']));
	}

	/******/
	/*
	public static function ledContrapartes()
	{
		$cliente = Session::get('usuario')->cliente['client_id'];
		$led_access = DB::selectOne('EXEC dbo.LN_validar_acceso_usuario ? ,?', array(env('LED_PRODUCTO'), Session::get('usuario')->user_id));
		$qcontrap = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('search',null,null,$cliente,null,null,null,null,null,null,null,null,null,null,null));

		$navtext = "Contrapartes";
		return view('/led/led_contrapartes')->with(compact(['cliente', 'qcontrap', 'navtext']));
	}

	*/
	

	/*
	
	public static function ledContrapartes($cliente=null) { 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$prod = !empty(Request::input('producto_fidelitas')) ? Request::input('producto_fidelitas') : 47;
		$servicios = [];
		$servicios = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cliente), 'select');
		$key = sizeof($servicios);
		$contrap = [];
		// 07/09/2020 en Frontend solo dejamos el servicio del servicio_actual con el que esta trabajando
		foreach($servicios as $key => $ser) {
			if ($ser->producto == Session::get('servicio_actual'))
			{
				$contrap[$ser->producto] = []; 
			}
			else
			{
				unset($servicios[$key]); 
			}
		}
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cliente,NULL,NULL,NULL, $prod), 'selectOne');
		//$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_informes_contraparte', null, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, $prod), 'select');
		$contrap1 = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_informes_contraparte', null, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null), 'select');
		
		// Si hay contrapartes de un servicio que tiene inactivo no se van a ver, solo toma la de los servicios activos.
		$cantidad_contrapartes = 0;
		foreach($contrap1 as $key => $cont) {
			foreach($servicios as $ser) {
				if ($ser->producto == $cont->servicio_contratado) 
				{
				$contrap[$cont->servicio_contratado][$key] = $contrap1[$key];
				$contrap["00"][$key] = $contrap1[$key];
				$cantidad_contrapartes += 1;
				if ($cont->tiene_de == 1)  { $tiene_de = 1; }
				if ($cont->tiene_lcs == 1) { $tiene_lcs = 1; }
				}
			}
		}

		

		return view('/led/led_contrapartes')->with(compact(['cli', 'contrap', 'prod','servicios','cantidad_contrapartes','cliente']));
	}

	*/

	public static function ledContrapartes($cliente=null) {  
		$cliente = Session::get('usuario')->cliente['client_id'];
		$prod = !empty(Request::input('producto_fidelitas')) ? Request::input('producto_fidelitas') : 47;
		$servicios = [];
		$servicios = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cliente), 'select');
		$key = sizeof($servicios);
		$contrap = [];
		// 07/09/2020 en Frontend solo dejamos el servicio del servicio_actual con el que esta trabajando
		foreach($servicios as $key => $ser) {
			if ($ser->producto == Session::get('servicio_actual'))
			{
				$contrap[$ser->producto] = []; 
				$servicio = $servicios[$key]; 
				break; 
			}
		}
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cliente,NULL,NULL,NULL, $prod), 'selectOne');
		$contrap = [];
		$cantidad_contrapartes = 0; 
		$pais = [];
		$pais_servicio = [];
		$familias = [];
		$estados = []; 
		return view('/led/led_contrapartes_fancy')->with(compact(['cli', 'contrap', 'prod','servicio','cantidad_contrapartes','cliente','pais','pais_servicio', 'estados', 'familias']));
	}

	public static function pruebaFancy( ) { 
		return view('/led/prueba_fancy');
	}
	
public static function ledContrapartesFancy($cliente=null) { 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$prod = !empty(Request::input('producto_fidelitas')) ? Request::input('producto_fidelitas') : 47;
		$servicios = [];
		$servicios = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cliente), 'select');
		$key = sizeof($servicios);
		// 07/09/2020 en Frontend solo dejamos el servicio del servicio_actual con el que esta trabajando
		foreach($servicios as $key => $ser) {
			if ($ser->producto == Session::get('servicio_actual'))
			{
				$contrap[$ser->producto] = []; 
				$servicio = $servicios[$key]; 
				break; 
			}
		}
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cliente,NULL,NULL,NULL, $prod), 'selectOne');
		$contrap1 = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_informes_contraparte', null, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null), 'select');
		// 07/09/2020 en Frontend solo dejamos las contrapartes del servicio del servicio_actual con el que esta trabajando
		$cantidad_contrapartes = 0;
		$contrap = [];
		foreach($contrap1 as $key => $cont) {
			if ($cont->servicio_contratado == Session::get('servicio_actual')) 
			{
				$contrap[$cantidad_contrapartes] = new stdClass;
				$activo = 'Activo'; 
				if ($cont->activo == 0) { $activo = 'No activo'; }
				$contacto = '';
				if (NULL !== $cont->nombre_contacto)   
				{ 
					if ($contacto!=='') { $contacto .= ' - '; } 
					$contacto .= $cont->nombre_contacto; 
				} 
				if (NULL !== $cont->email_contacto)    
				{ 
					if ($contacto!=='') { $contacto .= ' - '; } 
					$contacto .= $cont->email_contacto; 
				} 

				if (NULL !== $cont->telefono_contacto) 
				{ 
					if ($contacto!=='') { $contacto .= ' - '; } 
					$contacto .= $cont->telefono_contacto; 
				}
				$contrap[$cantidad_contrapartes]->id = $cont->contraparte;
				$contrap[$cantidad_contrapartes]->activo = $activo;
				$contrap[$cantidad_contrapartes]->nombre_persona = $cont->nombre_persona;
				$contrap[$cantidad_contrapartes]->numero = $cont->numero;
				$contrap[$cantidad_contrapartes]->country_code = strtolower($cont->country_code);
				$contrap[$cantidad_contrapartes]->country_name = $cont->country_name;
				$contrap[$cantidad_contrapartes]->pais_servicio_cod = strtolower($cont->pais_servicio_cod);
				$contrap[$cantidad_contrapartes]->pais_servicio  = $cont->pais_servicio;
				$contrap[$cantidad_contrapartes]->nombre_familia = $cont->nombre_familia;
				$contrap[$cantidad_contrapartes]->nombre_contacto = $contacto;
				$contrap[$cantidad_contrapartes]->gestion_desde = $cont->desde;
				$contrap[$cantidad_contrapartes]->codigo_interno = $cont->codigo_interno;
				$cantidad_contrapartes += 1;
				if ($cont->tiene_de == 1)  { $tiene_de = 1; }
				if ($cont->tiene_lcs == 1) { $tiene_lcs = 1; }
			}
		}

		$pais = [];
		$pais_servicio = [];
		$familias = [];
		$estados = []; 

		foreach ($contrap as $k => $cont) {
			//$cc = strtolower($cont->country_code);
			$pais[$k]['name'] =  $cont->country_name;
			$pais[$k]['info'] = strtolower($cont->country_code);
			$pais[$k]['cls'] = 'flag-icon-' . strtolower($cont->country_code);
			$pais[$k]['val'] = '<span class=flag-icon flag-icon-background flag-icon-' .strtolower($cont->country_code) .'></span>';

			$pais_servicio[$k]['name'] =  $cont->pais_servicio ;
			$pais_servicio[$k]['info'] = strtolower($cont->pais_servicio_cod);
			$pais_servicio[$k]['cls'] = 'flag-icon-' . strtolower($cont->pais_servicio_cod);
			$pais_servicio[$k]['val'] = '<span class=flag-icon flag-icon-background flag-icon-' . strtolower($cont->pais_servicio_cod) .'></span>';
			
			$estados[$k] = new stdClass;
			$familias[$k] = new stdClass;
			$estados[$k]->estado = $cont->activo;
			$familias[$k]->familia = $cont->nombre_familia;
		}
		$sorter = new FieldSorter('name');    

		$pais = array_map("unserialize", array_unique(array_map("serialize", $pais)));
		usort($pais, array($sorter, "cmp"));

		$pais_servicio = array_map("unserialize", array_unique(array_map("serialize", $pais_servicio)));
		usort($pais_servicio, array($sorter, "cmp"));
		$familias = array_map("unserialize", array_unique(array_map("serialize", $familias)));
		$estados = array_map("unserialize", array_unique(array_map("serialize", $estados)));
 		return json_encode(array('data'=>$contrap, 'pais'=>$pais, 'pais_servicio'=>$pais_servicio, 'cantidad_contrapartes'=>$cantidad_contrapartes, 'estados'=>$estados, 'familias'=>$familias, 'cliente'=>$cliente));

		//return view('/led/led_contrapartes_fancy')->with(compact(['cli', 'contrap', 'prod','servicio','cantidad_contrapartes','cliente','pais','pais_servicio', 'estados', 'familias']));
	}


	public static function ledContrapartesFancy23092024($cliente=null) {
		$cliente = Session::get('usuario')->cliente['client_id'];
		$prod = !empty(Request::input('producto_fidelitas')) ? Request::input('producto_fidelitas') : 47;
		$servicios = [];
		$servicios = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cliente), 'select');
		$key = sizeof($servicios);
		// 07/09/2020 en Frontend solo dejamos el servicio del servicio_actual con el que esta trabajando
		foreach($servicios as $key => $ser) {
			if ($ser->producto == Session::get('servicio_actual'))
			{
				$contrap[$ser->producto] = [];
				$servicio = $servicios[$key];
				break;
			}
		}
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cliente,NULL,NULL,NULL, $prod), 'selectOne');
		$contrap1 = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_informes_contraparte', null, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null), 'select');
		// 07/09/2020 en Frontend solo dejamos las contrapartes del servicio del servicio_actual con el que esta trabajando
		$cantidad_contrapartes = 0;
		$contrap = [];
		foreach($contrap1 as $key => $cont) {
			if ($cont->servicio_contratado == Session::get('servicio_actual'))
			{
				$contrap[$cantidad_contrapartes] = new stdClass;
				$activo = 'Activo';
				if ($cont->activo == 0) { $activo = 'No activo'; }
				$contacto = '';
				if (NULL !== $cont->nombre_contacto)
				{
					if ($contacto!=='') { $contacto .= ' - '; }
					$contacto .= $cont->nombre_contacto;
				}
				if (NULL !== $cont->email_contacto)
				{
					if ($contacto!=='') { $contacto .= ' - '; }
					$contacto .= $cont->email_contacto;
				}

				if (NULL !== $cont->telefono_contacto)
				{
					if ($contacto!=='') { $contacto .= ' - '; }
					$contacto .= $cont->telefono_contacto;
				}
				$contrap[$cantidad_contrapartes]->id = $cont->contraparte;
				$contrap[$cantidad_contrapartes]->activo = $activo;
				$contrap[$cantidad_contrapartes]->nombre_persona = $cont->nombre_persona;
				$contrap[$cantidad_contrapartes]->numero = $cont->numero;
				$contrap[$cantidad_contrapartes]->country_code = strtolower($cont->country_code);
				$contrap[$cantidad_contrapartes]->country_name = $cont->country_name;
				$contrap[$cantidad_contrapartes]->pais_servicio_cod = strtolower($cont->pais_servicio_cod);
				$contrap[$cantidad_contrapartes]->pais_servicio  = $cont->pais_servicio;
				$contrap[$cantidad_contrapartes]->nombre_familia = $cont->nombre_familia;
				$contrap[$cantidad_contrapartes]->nombre_contacto = $contacto;
				$contrap[$cantidad_contrapartes]->gestion_desde = $cont->desde;
				$contrap[$cantidad_contrapartes]->codigo_interno = $cont->codigo_interno;
				$cantidad_contrapartes += 1;
				if ($cont->tiene_de == 1)  { $tiene_de = 1; }
				if ($cont->tiene_lcs == 1) { $tiene_lcs = 1; }
			}
		}

		$pais = [];
		$pais_servicio = [];
		$familias = [];
		$estados = [];

		foreach ($contrap as $k => $cont) {
			//$cc = strtolower($cont->country_code);
			$pais[$k]['name'] =  $cont->country_name;
			$pais[$k]['info'] = strtolower($cont->country_code);
			$pais[$k]['cls'] = 'flag-icon-' . strtolower($cont->country_code);
			$pais[$k]['val'] = '<span class=flag-icon flag-icon-background flag-icon-' .strtolower($cont->country_code) .'></span>';

			$pais_servicio[$k]['name'] =  $cont->pais_servicio ;
			$pais_servicio[$k]['info'] = strtolower($cont->pais_servicio_cod);
			$pais_servicio[$k]['cls'] = 'flag-icon-' . strtolower($cont->pais_servicio_cod);
			$pais_servicio[$k]['val'] = '<span class=flag-icon flag-icon-background flag-icon-' . strtolower($cont->pais_servicio_cod) .'></span>';

			$estados[$k] = new stdClass;
			$familias[$k] = new stdClass;
			$estados[$k]->estado = $cont->activo;
			$familias[$k]->familia = $cont->nombre_familia;
		}
		$sorter = new FieldSorter('name');

		$pais = array_map("unserialize", array_unique(array_map("serialize", $pais)));
		usort($pais, array($sorter, "cmp"));

		$pais_servicio = array_map("unserialize", array_unique(array_map("serialize", $pais_servicio)));
		usort($pais_servicio, array($sorter, "cmp"));
		$familias = array_map("unserialize", array_unique(array_map("serialize", $familias)));
		$estados = array_map("unserialize", array_unique(array_map("serialize", $estados)));
 		return json_encode(array('data'=>$contrap, 'pais'=>$pais, 'pais_servicio'=>$pais_servicio, 'cantidad_contrapartes'=>$cantidad_contrapartes, 'estados'=>$estados, 'familias'=>$familias, 'cliente'=>$cliente));

		//return view('/led/led_contrapartes_fancy')->with(compact(['cli', 'contrap', 'prod','servicio','cantidad_contrapartes','cliente','pais','pais_servicio', 'estados', 'familias']));
	}
	
	public static function ledContrapartesSearch()
	{
		$cliente = Request::input('cliente');
		$country = DB::select('EXEC dbo.backend_obtener_paises', array());
		return view('/led/led_contrapartes_search')->with(compact(['cliente' , 'country']));
	}

	public static function ledIdentificadoresPais()
	{
		$cc = Request::input('country_code');
		$ident = Misc::identificadoresPais($cc);
		return json_encode($ident);
	}

	public static function ledContrapartesBusqueda()
	{
		$country = Request::input('country_code');
		if ($country == 'AR' and env('LED_VERIFICACION_PADRON_AFIP') == true) {
			AFIPController::obtenerPadron(Request::input('numero'));
		}
		$padron = DB::select('EXEC dbo.LN_busqueda_padron ?,?', array(Request::input('identificador') , Request::input('numero')));
		return json_encode($padron);
	}
	/*
	public static function ledContrapartesNew()
	{
		$cliente =				  Request::input('cliente');
		$id_padron =				Request::input('id_padron');
		$country_code =		   Request::input('country_code');
		$identificador =			  Request::input('ídentificador');
		$numero =			   Request::input('numero');
		$nombre_persona =		 Request::input('nombre_persona');

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',null,null,$cliente,$country_code,null,null));

		// Verifico por ID padron que no esté duplicada la contraparte dentro del LED del cliente 
		$datoscontrap = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('search',null,$id_padron,$cliente,null,1,null,null,null,null,null,null,null,null,null));
		$qcontrap = sizeof($datoscontrap);	

		$contraparte = (sizeof($datoscontrap) > 0) ? $datoscontrap[0]->contraparte : NULL;

		// Existe la contraparte bajo el cliente, verifico los datos de la gestión activa
		if ($qcontrap > 0) {  
		  $datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $contraparte, NULL, NULL, NULL, NULL), 'selectOne');
		}


		$datos_comerciales = '';
		$nombre_contacto =  '';
		$email_contacto =   '';
		$telefono_contacto =  '';
		$input_range =  '';
		$vigencia_desde = '';
		$vigencia_hasta = '';
		$activo =		 1;
		return view('/led/led_contrapartes_new')->with(compact(['cliente', 'padron', 'familias', 'contraparte', 'datosgestion', 'qcontrap', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo']));
	}
	*/
	public static function ledContrapartesNew() {
		/* 	Se fija si existe o no una contraparte para el cuit elegido
			si no exists: hace el alta normal
			si existe: pasa por una pantalla intermedia, para ver si es una nueva gestion, y quiere duplicar la contaparte
		*/
		$cliente = Session::get('usuario')->cliente['client_id'];
		$datos_cliente 	 = 	SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron 		 =	Request::input('id_padron');
		$country_code 	 =	Request::input('country_code');
		$identificador 	 =	Request::input('ídentificador');
		$numero 		 =	Request::input('numero');
		$nombre_persoona =	Request::input('nombre_persona');
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;
		$modalidad_pago  =	(!empty(Request::input('modalidad_pago'))) ? Request::input('modalidad_pago') : NULL;

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		//$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$country_code,NULL,NULL));
		$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,null,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $cliente), 'select');
		$cliTipoServicio = SQLConnection::backendStoreProcedure('LN_cliente_tipo_servicio', array('LISTAR', intval($cliente),$servicio,NULL), 'select');

		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 
		
		/* Verifico por ID padron que no esté duplicada la contraparte dentro del LED del cliente */
		//$datoscontrap = DB::select('EXEC dbo.LN_contrapartes_sc ?,?,??,?,?,?,?,?,?,?,?,?,?,?', array('search',null,$id_padron,$cliente,null,1,null,null,null,null,null,null,null,null,null));	
		$datoscontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_sc',
		//array('search',null,$id_padron,$cliente,null,1,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,$servicio));
		//El parametro activo lo mandamos null para que traiga los activos y los no activos 
		array('search',null,$id_padron,$cliente,null,null,null,null,null,null,null,null,null,null, Session::get('usuario')->as_user_id,null,null,null,null,null,null,null,null,$servicio));
		
		$qcontrap = sizeof($datoscontrap);		

		if (sizeof($datoscontrap) > 0)
		{
		$contrapartes = [];
			foreach ($datoscontrap as $key => $value) {
				$contrapartes[$key] = new stdClass; 
				$contrapartes[$key]->contraparte  = $value->contraparte; 
				if ($value->activo==1)
				{
					$contrapartes[$key]->estado =  'ACTIVO';
				} 
				else 
				{
					$contrapartes[$key]->estado = 'NO ACTIVO';
				} 

				$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $value->contraparte, NULL, NULL, NULL, NULL), 'selectOne');
				$family = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $value->contraparte, null, null, null, null, null), 'select');
				$familia = $family[0]; 
				//-----
				$contrapartes[$key]->fecha_desde     = null; 
				$contrapartes[$key]->fecha_hasta     = null; 
				$contrapartes[$key]->nombre_familia  = null; 
				if ( is_array($datosgestion)){
					if (sizeof($datosgestion) > 0) {
						$contrapartes[$key]->fecha_desde  = $datosgestion->fecha_desde; 
						$contrapartes[$key]->fecha_hasta  = $datosgestion->fecha_hasta; 
					}
					if (sizeof($familia) > 0) {
						$contrapartes[$key]->nombre_familia  = $familia->nombre_familia; 
					}
				}
				
 			}
		}

		if (sizeof($datoscontrap) == 0)
		{
			$datos_comerciales = '';
			$nombre_contacto =	'';
			$email_contacto =	'';
			$telefono_contacto = '';
			$input_range =	'';
			$vigencia_desde =	'';
			$vigencia_hasta =	'';
			$activo = 1;
			$cliente_pais = '';
			$contraparte = null; 
			$idiomas = DB::select("EXEC LED_idiomas 'search',null,null,null");
			$familias_todas = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,NULL,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
			$familia = Request::input('familia') ?? null;
			$idioma  = Request::input('idioma') ?? $padron->codigo_idioma;
			$hoy = new DateTime('today');
			$fecha_expira = date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y');
			if (isset($datosgestion)){
				return view('/led/led_contrapartes_fidecheck')->with(compact(['cliente', 'datos_cliente', 'padron', 'familias', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago','cliente_paises','servicio','cliente_pais','familias_todas','idiomas','familia','idioma','fecha_expira','cliTipoServicio']));
			}
			else {
				return view('/led/led_contrapartes_fidecheck')->with(compact(['cliente', 'datos_cliente', 'padron', 'familias', 'contraparte', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago','cliente_paises','servicio','cliente_pais','familias_todas','idiomas','familia','idioma','fecha_expira','cliTipoServicio']));
			}
			

		}
		else
		{ 
			// return view('/led/led_contrapartes_new_gestion_contraparte')->with(compact(['cliente', 'datos_cliente', 'padron','contrapartes','modalidad_pago','cliente_paises','servicio','cliente_pais']));
			return view('/led/led_contrapartes_new_gestion_contraparte')->with(compact(['cliente', 'datos_cliente', 'padron','contrapartes','modalidad_pago','cliente_paises','servicio']));
		}
	}


	public static function ledContrapartesNewContraparte() {
		$cliente = Session::get('usuario')->cliente['client_id'];
		$datos_cliente 	 = 	SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron 		 =	Request::input('id_padron');
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;
		$modalidad_pago  =	(!empty(Request::input('modalidad_pago'))) ? Request::input('modalidad_pago') : NULL;

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		//$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$country_code,NULL,NULL));
		$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,null,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $cliente), 'select');
		$cliTipoServicio = SQLConnection::backendStoreProcedure('LN_cliente_tipo_servicio', array('LISTAR', intval($cliente),$servicio,NULL), 'select');

		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 

		$datos_comerciales = '';
		$nombre_contacto =	'';
		$email_contacto =		'';
		$telefono_contacto =	'';
		$input_range =	'';
		$vigencia_desde =	'';
		$vigencia_hasta =	'';
		$activo =					1;
		$cliente_pais = '';
		$contraparte = null; 
		$familias_todas = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,NULL,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$idiomas = DB::select("EXEC LED_idiomas 'search',null,null,null");
		$idioma  = Request::input('idioma') ?? $padron->codigo_idioma;
		$familia = Request::input('familia') ?? null;
		$hoy = new DateTime('today');
		$fecha_expira = date_format(date_add($hoy, date_interval_create_from_date_string("2 days")), 'd/m/Y');
		return view('/led/led_contrapartes_fidecheck')->with(compact(['cliente', 'datos_cliente', 'padron', 'familias', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago','cliente_paises','servicio','cliente_pais','familias_todas','idiomas','familia', 'idioma','fecha_expira','cliTipoServicio']));


	}

	
	public static function ledContrapartesStep() {
		$cliente = Session::get('usuario')->cliente['client_id'];
		$datos_cliente   = SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron       = Request::input('id_padron');
		$nombre_contacto = Request::input('nombre_contacto');
		$email_contacto  = Request::input('email_contacto');
		$modalidad_pago  = Request::input('modalidad_pago');
		$cliente_pais    = Request::input('cliente_pais');
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;

		$sector = Request::input('sector');
		$responsable = Request::input('responsable');
		$tipo_servicio = Request::input('tipo_servicio');

		$familia = !empty(Request::input('familia')) ? Request::input('familia') : null;

		// Es null si no existe previamente o no nulo si se va a abrir nueva gestion
		$familias_asignadas = NULL;
		$contraparte = Request::input('contraparte');
		if($contraparte > 0) {
			$datacont = 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');
			//$nombre_contacto = $datacont->nombre_contacto;
			//$email_contacto = $datacont->email_contacto;
			//$modalidad_pago = $datacont->modalidad_pago;

			$familias_asignadas = SQLConnection::backendStoreProcedure('Ln_contraparte_familias_', array('search',$contraparte,null,null,null,null,null), 'select');
		}

		$datos_comerciales =	Request::input('datos_comerciales');
		$telefono_contacto =	Request::input('telefono_contacto');
		$vigencia_desde	   =	Request::input('vigencia_desde');
		$vigencia_hasta	   =	Request::input('vigencia_hasta');
		$activo 		   =	Request::input('activo');

		$input_range 	   = 	(null !== Request::input('input_range')) ? 1 : 0;

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);

		$items = DB::select('EXEC dbo.LN_clasificacion_items_ ?, ?, ?, ?, ?, ?', array('SEARCH', null, null, $cliente, null, null));

		$array_items = [];
		foreach ($items as $key => $item) {
			$array_items[$item->clasificacion][] = $item;
		}
		

		/*$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$padron->country_code,1,NULL));
		$familias_todas = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,NULL,1,NULL));*/
		$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,$padron->country_code,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$familias_todas = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,NULL,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		/* Para carga de informes y productos del tipo report en el alta */		
		$reports = SQLConnection::backendStoreProcedure('LN_demo_', array('reports', NULL, $cliente), 'select');
		/* Los tipos de informe de blue que se pueden asociar */
		$tipos_informe = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe_cliente', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $cliente), 'select');
		$hoy = new DateTime('today');
		$fecha_exp = date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y');
		$fecha_ent = date_format(date_add($hoy, date_interval_create_from_date_string("14 days")), 'd/m/Y');

		return view('/led/led_contrapartes_step')->with(compact(['cliente', 'datos_cliente', 'padron', 'contraparte', 'familias_asignadas','datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'activo', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'familias', 'familias_todas', 'array_items', 'reports', 'tipos_informe', 'fecha_exp','fecha_ent','modalidad_pago', 'familia','cliente_pais','servicio','sector','responsable','tipo_servicio']));
	}

	public static function ledContrapartesBack() {
		$cliente = Session::get('usuario')->cliente['client_id'];
		$datos_cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron     = Request::input('id_padron');

		// Es null si no existe previamente o no nulo si se va a abrir nueva gestion
		$contraparte =	Request::input('contraparte');
		$servicio    =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;


		$datosgestion = null;
		if (NULL != $contraparte) {	
			$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $contraparte, NULL, NULL, NULL, NULL), 'selectOne');
		}

		$datos_comerciales = Request::input('datos_comerciales');
		$nombre_contacto   = Request::input('nombre_contacto');
		$email_contacto    = Request::input('email_contacto');
		$telefono_contacto = Request::input('telefono_contacto');
		$activo            = Request::input('activo');
		$input_range	   = Request::input('input_range');
		$vigencia_desde	   = Request::input('vigencia_desde');
		$vigencia_hasta	   = Request::input('vigencia_hasta');
		$qcontrap 		   = (NULL != $contraparte) ? 1 : 0;
		$modalidad_pago    = Request::input('modalidad_pago');
		$cliente_pais      = Request::input('cliente_pais');

		$idioma  = Request::input('idioma') ?? null;
		$familia = Request::input('familia') ?? null;

		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $cliente), 'select');
		$cliTipoServicio = SQLConnection::backendStoreProcedure('LN_cliente_tipo_servicio', array('LISTAR', intval($cliente),$servicio,NULL), 'select');

		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 
		// nahue
		$familias_todas = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,NULL,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		$idiomas = DB::select("EXEC LED_idiomas 'search',null,null,null");
		$hoy = new DateTime('today');
		$fecha_expira = date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y');
		// return view('/led/led_contrapartes_fidecheck')->with(compact(['cliente', 'datos_cliente', 'padron', 'familias', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago','cliente_paises','servicio','cliente_pais','familias_todas','idiomas','familia','idioma','fecha_expira']));
		return view('/led/led_contrapartes_fidecheck')->with(compact(['cliente', 'datos_cliente', 'padron', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago','cliente_paises','servicio','cliente_pais','familias_todas','idiomas','familia','idioma','fecha_expira','cliTipoServicio']));

	
	}

	public static function ledContrapartesSelectInforme() {
		$cliente = Session::get('usuario')->cliente['client_id'];
		$datos_cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron     = Request::input('id_padron');

		$contraparte  = null;
		$datosgestion = null;

		$datos_comerciales= Request::input('datos_comerciales');
		$nombre_contacto  =	Request::input('nombre_contacto');
		$email_contacto   =	Request::input('email_contacto');
		$telefono_contacto= Request::input('telefono_contacto');
		$activo           =	Request::input('activo');
		$input_range	  =	Request::input('input_range');
		$vigencia_desde	  =	Request::input('vigencia_desde');
		$vigencia_hasta	  =	Request::input('vigencia_hasta');
		$qcontrap         = (NULL != $contraparte) ? 1 : 0;
		$modalidad_pago   =	Request::input('modalidad_pago');
		$cliente_pais 	  =	!empty(Request::input('cliente_pais')) ? Request::input('cliente_pais') : 'AR';
		$cliente_pais_name =  SQLConnection::backendStoreProcedure('obtener_Paises', array($cliente_pais), 'selectOne')->pai_nombre;
		$servicio         =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;
		$enviarmail       =  Request::input('enviarmail') ?? 0; 
		$fecha_expira     =  Request::input('fecha_expira') ?? date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y'); 
		$email_alt        =  Request::input('email_alt') ?? $email_contacto; 
		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);

		$familia = !empty(Request::input('familia')) ? Request::input('familia') : null;
		$familia = (is_array($familia) != 1) ? explode(',', Request::input('familia')) : $familia;
		$reports = [];
		$tipos_informe = [];

		$familia = Request::input('familia') ?? null;
		$familia = (is_array($familia) == 1) ? $familia[0] : $familia;

		$sector = Request::input('sector');
		$responsable = Request::input('responsable');
		$tipo_servicio = Request::input('tipo_servicio');

		$reports = SQLConnection::backendStoreProcedure('LN_informe_familia_', array('productos',$familia), 'select');
		
		$producto = 0; 
		foreach ($reports as $rx => $rep) {
			if ($rep->informe_default == 1)
				{ $producto = $rep->producto; break;}
		}
		if ($producto == 0 && sizeof($reports) > 0)
		{
			$producto = $reports[0]->producto; 
		}

		/* Los tipos de informe de blue que se pueden asociar */
		$tipos_informe = SQLConnection::backendStoreProcedure('LN_informe_familia_', array('tipo_informe',$familia,null,$producto), 'select');
		$tipo = -1; 
		$tipo_informe = new stdClass();
		foreach ($tipos_informe as $rx => $rep) {
			if ($rep->informe_default == 1)
				{ $tipo = $rx; break;}
		}
		if ($tipo !== -1)
		{
			$tipo_informe = $tipos_informe[$rx]; 
		}

		if ($tipo == -1 && sizeof($tipos_informe) > 0)
		{
			$tipo_informe = $tipos_informe[0]; 
		}

		if ($tipo == -1 && sizeof($tipos_informe) == 0)
		{
			$tipo_informe->id_tipo_informe = 0; 
		}

		//$fecha = date("Y-m-d");
		//var_dump($fecha); 
		//$fecha_comprometida = strtotime($fecha . ' + '.$dias.'days');
		//date_format(date_add($fecha, date_interval_create_from_date_string('"' . $dias . ' days"')), 'Y-m-d');

		$i = $tipo_informe->dias_comprometidos ?? 15; 
		$d = strtotime("$i days"); 
		$fecha_comprometida = date('Y-m-d', "+$d"); 

		$fecha_exp = $fecha_comprometida;
		$fecha_ent = $fecha_comprometida;
		$idioma  = Request::input('idioma') ?? $padron->codigo_idioma;

		$nombre_familia = SQLConnection::backendStoreProcedure('ln_familias_',  array('select', $familia, null, null, null, null, null, null, null, null, null, null), 'selectOne')->nombre_familia;

		if(isset($idiomas)){
			return view('/led/led_contrapartes_seleccionar_informe')->with(compact(['cliente', 'datos_cliente', 'padron', 'qcontrap', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago', 'familia', 'reports', 'tipo_informe', 'fecha_exp', 'fecha_ent','cliente_pais', 'idiomas','servicio','idioma','enviarmail','fecha_expira','email_alt','nombre_familia','producto','cliente_pais_name','sector','responsable','tipo_servicio']));
		}
		else {
			return view('/led/led_contrapartes_seleccionar_informe')->with(compact(['cliente', 'datos_cliente', 'padron', 'qcontrap', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago', 'familia', 'reports', 'tipo_informe', 'fecha_exp', 'fecha_ent','cliente_pais','servicio','idioma','enviarmail','fecha_expira','email_alt','nombre_familia','producto','cliente_pais_name','sector','responsable','tipo_servicio']));
		}

		
	}

	/*
	public static function ledContrapartesInsert() {
		$cliente = Session::get('usuario')->cliente['client_id'];
		$id_padron =							Request::input('id_padron');

		// Es null si no existe previamente o no nulo si se va a abrir nueva gestion
		$contraparte =							Request::input('contraparte');

		$datos_comerciales =					Request::input('datos_comerciales');
		$nombre_contacto =						Request::input('nombre_contacto');
		$email_contacto =						Request::input('email_contacto');
		$telefono_contacto =					Request::input('telefono_contacto');
		$activo =								Request::input('activo');
		$cliente_pais =							Request::input('cliente_pais');

		$modalidad_pago =						(!empty(Request::input('modalidad_pago'))) ? Request::input('modalidad_pago') : 'CC';
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;


		$input_range =	!empty(Request::input('input_range')) ? Request::input('input_range') : 0;
		if($input_range == 1) {
			$vigencia_desde = date_create_from_format('!d/m/Y', Request::input('vigencia_desde'));
			$vigencia_hasta = date_create_from_format('!d/m/Y', Request::input('vigencia_hasta'));
			
		}
		else {
			$vigencia_desde = new DateTime('today');
			$vigencia_hasta = date_create_from_format('!d/m/Y', '31/12/2099');
		}

		
		$familias =	( null != Request::input('familia') ) ? Request::input('familia') : [];
		$familias = (is_array($familias) != 1) ? explode(',', Request::input('familia')) : $familias;
		$family = $familias[0]; 
		$items    =	( null != Request::input('item') ) ? Request::input('item') : [];

		// Creación de un report : Dossier / Business Report / etc. 
		$no_informe = ( null != Request::input('no_informe') ) ? Request::input('no_informe') : 0;

		//if ($no_informe == 0) {
			$producto_led = !empty(Request::input('producto')) ? Request::input('producto') : NULL;
			$id_tipo_informe = !empty(Request::input('id_tipo_informe')) ? Request::input('id_tipo_informe') : NULL;
			$enviar_mail_alta = (NULL !== Request::input('enviar_mail_alta')) ? 1 : 0;

			if (NULL != $producto_led AND NULL != $id_tipo_informe AND $id_tipo_informe != '0' ) {
				$prioridad = Request::input('prioridad');
				$solicitado_por = Request::input('solicitado_por');
				$datamanager = Request::input('datamanager');
				$estado_informe = Request::input('estado_informe');
				$asignado = Request::input('asignado');

				if ($enviar_mail_alta > 0) {
					$fecha_limite_doc = Request::input('fecha_limite_doc');
					$asignado_tarea = Request::input('asignado_tarea');
				}
			}
		//}
		$user_id = Session::get('usuario')->user_id;
		
		$codigo_idioma = ( null != Request::input('idioma') ) ? Request::input('idioma') : 'spa';
		
		// Contraparte NUEVA:
		if (NULL == $contraparte) {
			$clave = Misc::generateRandomString(6);
			//$thiscontr = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('insert', NULL, $id_padron, $cliente, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, $clave, $vigencia_desde, $vigencia_hasta, Session::get('usuario')->user_id, NULL, NULL, $modalidad_pago));
			$thiscontr = SQLConnection::backendStoreProcedure('LN_contrapartes_sc', array('insert', NULL, $id_padron, $cliente, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, $clave, $vigencia_desde, $vigencia_hasta, $user_id, 0, NULL, $modalidad_pago,NULL,NULL,$cliente_pais,null,$codigo_idioma,$servicio,$family), 'selectOne');
			$contraparte = $thiscontr->contraparte;


			$gest = DB::selectOne('EXEC dbo.LN_gestiones_  ?,?,?,?,?,?,?,?', array('insert', null, null, $contraparte, $vigencia_desde, $vigencia_hasta, null, $user_id));
			$txt_nuevo = 'Alta de Contraparte'; 
		}
		else 
		{
			// Contraparte preexistente : apertura de nueva gestión y cambia datos de contacto y estado ACTIVO
			$gest = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('NUEVA_GESTION', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $vigencia_desde, $vigencia_hasta, Session::get('usuario')->user_id), 'selectOne');
			$txt_nuevo = 'Nueva gestion de Contraparte'; 

			$datos = SQLConnection::backendStoreProcedure('LN_contrapartes_sc', array('UPDATE_CONTACTO', $contraparte,NULL, NULL, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, NULL, NULL, NULL, $user_id, NULL, NULL, $modalidad_pago,NULL,NULL,$cliente_pais,null,$codigo_idioma,$servicio), 'selectOne');
		}

		// 09/09/2020 Envio de mail a la contraparte
		$enviarmail   = Request::input('enviarmail') ?? 0; 
		$fecha_expira = Request::input('fecha_expira') ?? date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y');
		$email_alt    = Request::input('email_alt') ?? $email_contacto; 
		if ($enviarmail == 1) {
			$fecha_limite_doc  = Request::input('fecha_expira');
			$fecha_entrega_doc = Request::input('fecha_expira');
			$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
			$modalidad_login = $modo_login->modalidad_login;
			$blade = ($modalidad_login == 'T') ? 'ALTA-TAXID' : 'ALTA-LINK';
			$subject = ($modalidad_login == 'T') ? 'ALTA-TAXID-SUBJECT' : 'ALTA-LINK-SUBJECT';
			//$email_alt= 'marita.soria@gmail.com'; 
			$false = false; 
			$null=null; 
			LEDEmailController::enviarMailLED($blade, $subject, $contraparte, $fecha_limite_doc, $email_alt,$false,$null,$null,$servicio);
		}

		// Contraparte Nueva, o nueva gestión de una existente
			foreach ($items as $key => $item) {
				$temp = DB::selectOne('EXEC dbo.LN_contraparte_clasificacion_ ?,?,?', array('insert', $contraparte, $item));
			}

			$family = null; 	
			// Solo va a tener una familia (por eso son radios no checkbox) solo da de alta esa familia, borra si tiene otra

			foreach ($familias as $ix => $fam) {
				$family = $fam;
				$temp = DB::selectOne('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('insert', $contraparte, $fam, NULL, 'N', 1, $user_id));
				$temp2 = DB::selectOne('EXEC dbo.LN_contraparte_familias_delete_otras ?,?', array($contraparte, $fam));
			}
			
			// Antes de actualizar el legajo por primera vez pongo a la contraparte en estado de carga inicial 
			$temp = DB::selectOne('update LN_contrapartes set carga_inicial = 1 WHERE contraparte = ' . $contraparte);

			// Generación de los documentos, todos con la tolerancia de carga inicial 
			$temp = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($contraparte, $gest->gestion, Session::get('usuario')->user_id));

			$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, $user_id));

			// Evalúo si la contraparte tiene asociado el producto balances 
			$tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $contraparte);

			// 10/12/2019 : generación de prepagos en caso de ser necesario
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('generar_prepagos', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, $user_id), 'selectOne');

			// Lo mandamos a LN_Contrapartes_queue en vez de hacer todo aca. 
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $contraparte), 'selectOne');

			foreach ($familias as $ix => $fam) {
				$texto = '';
				$texto = 'Familia asignada: ' . $fam; 
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($texto, $cliente, 'FAMILIA_ASIGNADA_WWW','WWW', $contraparte,Session::get('usuario')->as_user_id), 'selectOne');
			}

			//Trazabilidad Insert Contraparte - Tipo de Informe 

			$texto = '';
			if (NULL != $producto_led AND NULL != $id_tipo_informe AND $id_tipo_informe != '0' ) {
				$tipos_informe = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe_cliente', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $cliente), 'select');
				foreach ($tipos_informe as $key => $tipo) {
					if ($tipo->id_tipo_informe == $id_tipo_informe)
					{
						$texto = $tipo->tipo_informe . $tipo->version;
						break;
					}
				}
			}
			if (NULL != $producto_led) 
			{
				if ($id_tipo_informe == '0' ) { $texto = 'SIN INFORME en el Blue'; }
				if (NULL == $id_tipo_informe) { $texto = 'No se seleccionó ningún tipo de informe';	}
			}
			else 
			{ 
				$texto = 'Sin Producto LED';
			}
			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($texto, $cliente, 'TIPO_INFORME_WWW','WWW', $contraparte,Session::get('usuario')->as_user_id), 'selectOne');

		// Ingreso el informe 
		if ($no_informe == 0 AND NULL != $producto_led AND NULL != $id_tipo_informe) {

			$fecha_limite_doc = Request::input('fecha_limite_doc') ?? Request::input('fecha_comprometida');
			$fecha_comprometida = Request::input('fecha_comprometida');
			$objeto_informe = Request::input('objeto_informe');
			$nuevo = ReportsController::ReportsIngresarInforme($contraparte, $producto_led, $id_tipo_informe, $solicitado_por, $prioridad, $datamanager, $estado_informe, $asignado, $fecha_limite_doc, $fecha_comprometida, $objeto_informe);

			if (!empty($nuevo)) {

				$informe = $nuevo;

				// Si hay que poner el informe en gestión, asignando la tarea correspondiente a solicitud de documentación

				if (null !== Request::input("enviar_mail_alta")) {
					if (Request::input("enviar_mail_alta") == 1) {

						$fecha_limite_doc = Request::input('fecha_limite_doc');
						$fecha_entrega_doc = Request::input('fecha_comprometida');
						$asignado_tarea = Request::input('asignado_tarea');

						ReportsController::ReportsInformeEnGestion($informe, $fecha_limite_doc, $asignado_tarea,$fecha_entrega_doc);

					}
				}


			}
		}

		return view('/led/led_contrapartes_redir')->with(compact(['cliente','cliente_pais']));
	}
	*/


	public static function ledContrapartesInsert() {
		$cliente =								Request::input('cliente');
		$id_padron =							Request::input('id_padron');
		// Es null si no existe previamente o no nulo si se va a abrir nueva gestion
		// desde frontend siempre av a se nulo, porque no se pueden renovar gestiones, solo dar de alta nuevas contrapartes
		$contraparte =		 Request::input('contraparte') ?? null;

		$datos_comerciales = Request::input('datos_comerciales');
		$nombre_contacto =	 Request::input('nombre_contacto');
		$email_contacto =	 Request::input('email_contacto');
		$telefono_contacto = Request::input('telefono_contacto');
		$activo =			 Request::input('activo');
		$cliente_pais =		 Request::input('cliente_pais');
		$modalidad_pago =	 (!empty(Request::input('modalidad_pago'))) ? Request::input('modalidad_pago') : 'CC';
		$servicio =			 (!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;
		$input_range =	!empty(Request::input('input_range')) ? Request::input('input_range') : 0;
		
		$tipo_servicio = Request::input('tipo_servicio');
		$responsable = Request::input('responsable');
		$sector = Request::input('sector');

		if($input_range == 1) {
			$vigencia_desde = date_create_from_format('!d/m/Y', Request::input('vigencia_desde'));
			$vigencia_hasta = date_create_from_format('!d/m/Y', Request::input('vigencia_hasta'));
			
		}
		else {
			$vigencia_desde = new DateTime('today');
			$vigencia_hasta = date_create_from_format('!d/m/Y', '31/12/2099');
		}
		//------
		// $enviar_mail_alta = Request::input('enviar_mail_alta') ?? 0;
		$enviar_mail_alta = (Request::input('enviar_mail_alta') == "") ? 0 : 1;
		
		$familias =	( null != Request::input('familia') ) ? Request::input('familia') : [];
		$familias = (is_array($familias) != 1) ? explode(',', Request::input('familia')) : $familias;
		$family = $familias[0]; 

		$items    =	( null != Request::input('item') ) ? Request::input('item') : [];

		// Creación de un report : Dossier / Business Report / etc.
		$no_informe = ( null != Request::input('no_informe') ) ? Request::input('no_informe') : 0;

		//if ($no_informe == 0) {
			$producto_led = !empty(Request::input('producto')) ? Request::input('producto') : NULL;
			$id_tipo_informe = !empty(Request::input('id_tipo_informe')) ? Request::input('id_tipo_informe') : NULL;

			if (NULL != $producto_led AND NULL != $id_tipo_informe AND $id_tipo_informe != '0' ) {
				$prioridad = Request::input('prioridad');
				$solicitado_por = Request::input('solicitado_por');
				$datamanager = Request::input('datamanager');
				$estado_informe = Request::input('estado_informe');
				$asignado = Request::input('asignado');

				if ($enviar_mail_alta == 1) {
					$fecha_limite_doc = Request::input('fecha_limite_doc') ?? Request::input('fecha_comprometida');
					$asignado_tarea = Request::input('asignado_tarea') ?? Request::input('asignado');;
				}
			}
		//}
		$user_id = Session::get('usuario')->user_id;
		$as_user_id = Session::get('usuario')->as_user_id;
		
		$codigo_idioma = ( null != Request::input('idioma') ) ? Request::input('idioma') : 'spa';

		// Contraparte NUEVA:
		// siempre es nueva desde fronted 
		//if (NULL == $contraparte) {
			$clave = Misc::generateRandomString(6);
			$thiscontr = SQLConnection::backendStoreProcedure('LN_contrapartes_sc', array('insert', NULL, $id_padron, $cliente, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, $clave, $vigencia_desde, $vigencia_hasta,  Session::get('usuario')->as_user_id, 0, NULL, $modalidad_pago,NULL,NULL,$cliente_pais,null,$codigo_idioma,$servicio,$family,$sector,$responsable,$tipo_servicio), 'selectOne');
			$contraparte = $thiscontr->contraparte;
			$gest = DB::selectOne('EXEC dbo.LN_gestiones_  ?,?,?,?,?,?,?,?', array('insert', null, null, $contraparte, $vigencia_desde, $vigencia_hasta, null, $user_id));
			$txt_nuevo = 'Alta de Contraparte'; 


		/*}
		else 
		{   // no lo va a hacer nunca... el frontend solo carga nuevas 
			// Contraparte preexistente : apertura de nueva gestión y cambia datos de contacto y estado ACTIVO
			$gest = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('NUEVA_GESTION', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $vigencia_desde, $vigencia_hasta, Session::get('usuario')->user_id), 'selectOne');
			$txt_nuevo = 'Nueva gestion de Contraparte'; 

			$datos = SQLConnection::backendStoreProcedure('LN_contrapartes_sc', array('UPDATE_CONTACTO', $contraparte,NULL, NULL, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, NULL, NULL, NULL, $user_id, NULL, NULL, $modalidad_pago,NULL,NULL,$cliente_pais,null,$codigo_idioma,$servicio,NULL,$sector,$responsable,$tipo_servicio), 'selectOne');
		}*/

		// Contraparte Nueva, o nueva gestión de una existente
			foreach ($items as $key => $item) {
				$temp = DB::selectOne('EXEC dbo.LN_contraparte_clasificacion_ ?,?,?', array('insert', $contraparte, $item));
			}

			$family = null; 	
			// Solo va a tener una familia (por eso son radios no checkbox) solo da de alta esa familia, borra si tiene otra

			foreach ($familias as $ix => $fam) {
				$family = $fam;
				$temp = DB::selectOne('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('insert', $contraparte, $fam, NULL, 'N', 1, $user_id));
				$temp2 = DB::selectOne('EXEC dbo.LN_contraparte_familias_delete_otras ?,?', array($contraparte, $fam));
			}
			
			// Antes de actualizar el legajo por primera vez pongo a la contraparte en estado de carga inicial/
			$temp = DB::selectOne('update LN_contrapartes set carga_inicial = 1 WHERE contraparte = ' . $contraparte);

			// Generación de los documentos, todos con la tolerancia de carga inicial
			$temp = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($contraparte, $gest->gestion, Session::get('usuario')->user_id));

			$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, $user_id));

			// Evalúo si la contraparte tiene asociado el producto balances  
			$tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $contraparte);

			// 10/12/2019 : generación de prepagos en caso de ser necesario
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('generar_prepagos', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, $user_id), 'selectOne');

			// Lo mandamos a LN_Contrapartes_queue en vez de hacer todo aca. 
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $contraparte), 'selectOne');

			// Lo hacemos en el stored LN_contrapartes_sc ('insert') 
			//Trazabilidad Insert Contraparte
			$as_user_id = Session::get('usuario')->as_user_id;


			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($txt_nuevo, $cliente, 'ALTA_CONTRAPARTE_BACKEND','BACK', $contraparte,$as_user_id), 'selectOne');
			
			foreach ($familias as $ix => $fam) {
				$texto = '';
				//$texto = 'Familia asignada: ' . $fam; 
				$nombre_familia = SQLConnection::backendStoreProcedure('ln_familias_',array('select',$fam), 'selectOne');
				$texto = 'Familia asignada: ' . $nombre_familia->nombre_familia ?? $fam; 
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($texto, $cliente, 'FAMILIA_ASIGNADA_BACKEND','BACK', $contraparte,$as_user_id), 'selectOne');
			}

			//Trazabilidad Insert Contraparte - Tipo de Informe 

			$texto = $id_tipo_informe;

			if (NULL != $producto_led) 
			{
				if ($id_tipo_informe == '0' ) { $texto = 'SIN INFORME en el Blue'; }
				if (NULL == $id_tipo_informe) { $texto = 'No se seleccionó ningún tipo de informe';	}
			}
			else 
			{ 
				$texto = 'Sin Producto LED';
			}
			$as_user_id = Session::get('usuario')->as_user_id;
			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($texto, $cliente, 'TIPO_INFORME_BACKEND','BLUE', $contraparte,$as_user_id), 'selectOne');
	
		// Ingreso el informe 
		if ($no_informe == 0 AND NULL != $producto_led AND NULL != $id_tipo_informe) {

			$fecha_limite_doc = Request::input('fecha_limite_doc') ?? Request::input('fecha_comprometida');
			$fecha_comprometida = Request::input('fecha_comprometida');
			$objeto_informe = Request::input('objeto_informe');
			$nuevo = ReportsController::ReportsIngresarInforme($contraparte, $producto_led, $id_tipo_informe, $solicitado_por, $prioridad, $datamanager, $estado_informe, $asignado, $fecha_limite_doc, $fecha_comprometida, $objeto_informe);

			if (!empty($nuevo)) {

				$informe = $nuevo;

				/* Si hay que poner el informe en gestión, asignando la tarea correspondiente a solicitud de documentación **/

					if ($enviar_mail_alta== 1) {

						$fecha_limite_doc = Request::input('fecha_limite_doc') ?? Request::input('fecha_comprometida');
					    $asignado_tarea = Request::input('asignado_tarea') ?? Request::input('asignado');;
						$fecha_entrega_doc = Request::input('fecha_comprometida');

						ReportsController::ReportsInformeEnGestion($informe, $fecha_limite_doc, $asignado_tarea,$fecha_entrega_doc);

						$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

						$modalidad_login = $modo_login->modalidad_login;

						$blade = ($modalidad_login == 'T') ? 'ALTA-TAXID' : 'ALTA-LINK';
						$subject = ($modalidad_login == 'T') ? 'ALTA-TAXID-SUBJECT' : 'ALTA-LINK-SUBJECT';

						$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $fecha_limite_doc, NULL, NULL, NULL, NULL), 'selectOne');

						DB::selectOne("update LN_contrapartes set
											clave = '" . $clave . "', clave_temporal = 1, 
											clave_cambio = NULL, modified = GETDATE(), modified_by = ". Session::get('usuario')->user_id .
											", clave_expira = '" . $fecha_limite_doc . "' where contraparte = " . $contraparte);

						//LEDEmailController::enviarMailLED($blade, $subject, $contraparte, $fecha_limite_doc);
						$false = false; 
						$null = null; 
						$servicio_actual  = Session::get('servicio_actual');
						$expira = date_create_from_format('Y-m-d', $fecha_limite_doc)->format('d/m/Y');
						/* 01/03/2021 Se cambia por el EmailController
						LEDEmailController::enviarMailLED($blade, $subject, $contraparte, $expira, $null,$false,$null,$null,$servicio_actual);
						*/
						EmailController::enviarMail('EMAIL-LED','ALTA', '', $contraparte, $expira, $null,$false,$null,$null);

					}


			}
		}

		/* 14/10/2021: ----------------------------------------------------------------------
		Aca tiene que guardar el PDF si el cliente tiene el producto PDF Informes Historicos
		*/

		
		//-----------
		if ( substr($_SERVER['HTTP_REFERER'],-16) == 'fidecheck-online' ){
			return view('/led/led_contrapartes_redir');
		}
		//----------
		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		$pais = $padron->country_name;
		$gestion = $gest->gestion;
		$nombre = $padron->nombre_persona;
		$cuit = $padron->numero;
		//------------ HACE UN CHEQUEO PARA VER SI EL CLIENTE TIENE EL PRODUCTO PDFHISTORICO
		$prodcli = DB::select('EXEC dbo.LN_cliente_productos_ ?,?,?,?,?,?,?', array('search', $cliente, null, null, null, null, Session::get('usuario')->user_id));
		$tiene_pdfshistoricos = 0;
		if ( $pais == 'Argentina'){
			foreach ($prodcli as $key => $prod) {
				if ($prod->producto_id == 'pdfshistoricos') 
				{		
					$tiene_pdfshistoricos = 1; 
					break; 
				}
			}
		}
		// self::ledPanelControlFile($cliente,'C');
		/*-----------------------------------------------------------------------------------*/
		return view('/led/led_contrapartes_redir')->with(compact(['cliente','pais' , 'contraparte' , 'gestion' , 'nombre' , 'cuit','tiene_pdfshistoricos']));
		// return view('/led/led_contrapartes_redir')->with(compact(['cliente','cliente_pais']))
		
	}




	/*
	public static function ledContrapartesEdit() {
	  $cliente =				  Request::input('cliente');
	  $contraparte =			  Request::input('contraparte');

	  $thiscontr = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
	  $familias = DB::select('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('ALL', $contraparte, NULL, NULL, NULL, NULL, NULL));


	  $items = DB::select('EXEC  dbo.LN_contraparte_clasificacion_ ?, ?, ?', array('all', $contraparte, null));
	  $array_items = [];
	  foreach ($items as $key => $item) {
		$array_items[$item->clasificacion][] = $item;
	  }

	  return view('/led/led_contrapartes_edit')->with(compact(['cliente', 'contraparte', 'thiscontr', 'thisfam', 'familias', 'array_items']));
	}
	*/

	public static function ledContrapartesEdit() {
		$accion = Request::input('accion');
		$id = Request::input('contraparte');
		$servicio = Request::input('servicio');
		$cliente = Session::get('usuario')->cliente['client_id'];

		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		
		/* las clasificaciones habilitadas para el cliente */
		$clasif = SQLConnection::backendStoreProcedure('LN_clasificaciones_', array('search', null, $contrap->cliente, null, null, null), 'select');
		/* los items de todas las clasificaciones del cliente con la información de asignados a la contraparte */
		$items = SQLConnection::backendStoreProcedure('LN_clasificacion_items_', array('search', null, null, null, $id, null), 'select');
		$total = sizeof($clasif);
		$logo_name = null;
		$file_exists = false;
		
		if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png') )  {
			$logo_name = $id . '.png';
		}
		if(null == $logo_name) {
			if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg') )  {
				$logo_name = $id . '.jpg';
			}			
		}
		if(null == $logo_name) {
			if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif') )  {
				$logo_name = $id . '.gif';
			}			
		}

		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $contrap->cliente), 'select');
		$cliTipoServicio = SQLConnection::backendStoreProcedure('LN_cliente_tipo_servicio', array('LISTAR', intval($cliente),$servicio,NULL), 'select');

		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 
		$idiomas = DB::select("EXEC LED_idiomas 'search',null,null,null");

		$familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('ALL', $contrap->contraparte, null, null, null, 1, null), 'select');
		// Solo deja los datos de las familias del servicio que estamos trabajando
		foreach ($familias as $key => $fam) {
			if ($fam->servicio_contratado !== $servicio)
				{ unset ($familias[$key]);}
		}

		$datos_cliente 	 = 	SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');

		$hoy = new DateTime('today');
		$fecha_expira = date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y');
		
		#return view('/led/led_contrapartes_edit')->with(compact('accion', 'contrap', 'clasif', 'items', 'valores', 'total', 'logo_name', 'file_exists', 'familias', 'cliente_paises', 'idiomas','servicio','datos_cliente','fecha_expira'));
		return view('/led/led_contrapartes_edit')->with(compact('accion', 'contrap', 'clasif', 'items', 'total', 'logo_name', 'file_exists', 'familias', 'cliente_paises', 'idiomas','servicio','datos_cliente','fecha_expira','cliTipoServicio'));

	}


	/*
	public static function ledContrapartesUpdate() {

	  $cliente =				  Request::input('cliente');
	  $contraparte =			  Request::input('contraparte');
	  $datos_comerciales =		  Request::input('datos_comerciales');
	  $nombre_contacto =		  Request::input('nombre_contacto');
	  $email_contacto =		   Request::input('email_contacto');
	  $telefono_contacto =		  Request::input('telefono_contacto');
	  $activo =				 Request::input('activo');
	  $vigencia_desde =		   date_create_from_format('!d/m/Y', Request::input('vigencia_desde'));
	  $vigencia_hasta =			 date_create_from_format('!d/m/Y', Request::input('vigencia_hasta'));
	  $items =				  (null != Request::input('item')) ? Request::input('item') : [];
	  $familias =			   (null != Request::input('familia')) ? Request::input('familia') : [];

	  $thiscontr = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
	  $temp = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('update', $contraparte, NULL, NULL, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, NULL, $vigencia_desde, $vigencia_hasta, Session::get('usuario')->user_id));


	  // actualizar clasificaciones 
	  $todositems = DB::select('EXEC dbo.LN_clasificacion_items_ ?, ?, ?, ?, ?, ?', array('SEARCH', null, null, $cliente, null, null));
	  $asignados = DB::select('EXEC  dbo.LN_contraparte_clasificacion_ ?, ?, ?', array('search', $contraparte, null));

	  $asignar = [];
	  $eliminar = [];

	  foreach ($items as $k1 => $item) {
		$found = false;
		foreach ($asignados as $k2 => $itm) {
		  if($itm->item == $item) {
			$found = true;
			break;
		  }
		}
		if(!$found) {
		  $asignar[] = $item;
		}
	  }

	  foreach ($asignados as $k2 => $asig) {
		$found = false;
		foreach ($items as $k3 => $itm) {
		  if($itm == $asig->item) {
			$found = true;
			break;
		  }
		}
		if(!$found) {
		  $eliminar[] = $asig->item;
		}
	  }

	  foreach ($asignar as $esteitem) {	 
		$temp = DB::selectOne('EXEC dbo.LN_contraparte_clasificacion_ ?,?,?', array('insert', $contraparte, $esteitem));
	  }
	  foreach ($eliminar as $esteitem) {	  
		$temp = DB::selectOne('EXEC dbo.LN_contraparte_clasificacion_ ?,?,?', array('delete', $contraparte, $esteitem));
	  }

	  // actualizar las familias 
	  $todas = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$thiscontr->country_code,NULL,NULL));
	  $asignadas = DB::select('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('search', $contraparte, NULL, NULL, NULL, NULL, NULL));

	  $asignar = [];
	  $eliminar = [];


	  foreach ($familias as $ix1 => $fam) {
		$found = false;
		foreach ($asignadas as $ix2 => $aa) {
		  if($aa->familia == $fam) {
			$found = true;
			break;
		  }
		}
		if (!$found) {
		  $asignar[] = $fam;
		}
	  }

	  foreach ($asignadas as $ix3 => $asig) {
		$found = false;
		foreach ($familias as $ix4 => $ee) {
		  if($ee == $asig->familia) {
			$found = true;
			break;
		  }
		}
		if(!$found) {
		  $eliminar[] = $asig->familia;
		}	 
	  }

	  foreach ($asignar as $estafam) {	  
		$temp = DB::selectOne('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('insert', $contraparte, $estafam, NULL, 'N', 1, Session::get('usuario')->user_id));
	  }
	  foreach ($eliminar as $estafam) {	 
		$temp = DB::selectOne('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('delete', $contraparte, $estafam, NULL, NULL, NULL, Session::get('usuario')->user_id));
	  }

	  $gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $contraparte, null, null, 1, null));

	  $temp = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($contraparte, $gest->gestion,Session::get('usuario')->user_id));

	  return redirect('/led/led-contrapartes');

	}
	*/
/* el de arriba se cambio por este en Septiembre 2020, cuando lo hicimos igual que en Backend */
public static function ledContrapartesUpdate() {
		$accion = Request::input('accion');
		$cli = Request::input('cliente');
		$contrap = Request::input('contraparte');
		$estado_anterior = Request::input('estado_anterior');
		$activo = Request::input('activo');
		$servicio = Request::input('servicio');
		$sector = Request::input('sector');
		$tipo_servicio = Request::input('tipo_servicio');
		$responsable = Request::input('responsable');
		$codigo_interno = Request::input('codigo_interno');

		if ($accion == 'editar') {
			$data = [];
			$data[] = 'UPDATE_FRONTEND';
			$data[] = $contrap;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = Request::input('datos_comerciales');
			$data[] = $activo;
			$data[] = Request::input('nombre_contacto');
			$data[] = Request::input('email_contacto');
			$data[] = Request::input('telefono_contacto');
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = Session::get('usuario')->user_id;	
			$data[] = NULL;
			$data[] = NULL;
			$data[] = Request::input('modalidad_pago') ?? 'CC';
			$data[] = NULL;
			$data[] = NULL;
			$data[] = !empty(Request::input('pais_servicio')) ? Request::input('pais_servicio') : 'AR';
			$data[] = NULL;
			$data[] = !empty(Request::input('codigo_idioma')) ? Request::input('codigo_idioma') : 'spa';
			$data[] = NULL;
			$data[] = $sector;
			$data[] = $responsable;
			$data[] = $tipo_servicio;
			$data[] = '';
			$data[] = 0;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = $codigo_interno;
			

			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', $data, 'selectOne');

			$iniact = ('' != Request::input('inicio_actividades')) ? Request::input('inicio_actividades') : NULL;
			$empl = ('' != Request::input('empleados')) ? Request::input('empleados') : "NULL";
			$resenia = ('' != Request::input('resenia')) ? "'" . Request::input('resenia') . "'" : "NULL";
			$fini = (NULL != $iniact) ? "'" . date_format(date_create_from_format('!d/m/Y', $iniact), "Y-m-d") . "'" : "NULL";

			DB::select("update LN_contrapartes set inicio_actividades = " . $fini . ", empleados = " .  $empl . ", resenia = " . $resenia . " where contraparte = " . $contrap);

			/* 09/09/2020 Envio de mail a la contraparte */
			$enviarmail   = Request::input('enviarmail') ?? 0; 
			$fecha_expira = Request::input('fecha_expira') ?? date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y');
			$email_alt    = Request::input('email_alt') ?? $email_contacto; 
			if ($enviarmail == 1) {
				$fecha_limite_doc  = Request::input('fecha_expira');
				$fecha_entrega_doc = Request::input('fecha_expira');
				$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contrap, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
				$modalidad_login = $modo_login->modalidad_login;
				$blade = ($modalidad_login == 'T') ? 'ALTA-TAXID' : 'ALTA-LINK';
				$subject = ($modalidad_login == 'T') ? 'ALTA-TAXID-SUBJECT' : 'ALTA-LINK-SUBJECT';
				$false = false; 
				$null = null; 
				
				EmailController::enviarMail('EMAIL-LED','ALTA', '', $contrap, $fecha_limite_doc, $email_alt,$false,$null,$null);
			}

			if (!empty($_FILES['archivo']) && $_FILES['archivo']['name'] !== '') {
				$userfile_name = $_FILES['archivo']['name'];
				$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);

				$ftype = strtolower($userfile_extn); 
				if($ftype == 'png' OR $ftype == 'jpg' OR $ftype == 'gif') {

					if( basename($_FILES['archivo']['name']) !='' ) {
						$path = env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.' . $ftype;
						$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
						if($ftype == 'png' OR $ftype == 'jpg' OR $ftype == 'gif') { 
							move_uploaded_file($_FILES['archivo']['tmp_name'], $path);

							if($ftype == 'png') {
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg' );
								}			
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif' );
								}							
							}

							if($ftype == 'jpg') {
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . 'png') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.png' );
								}			
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif' );
								}							
							}

							if($ftype == 'gif') {
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.png') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.png' );
								}			
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg' );
								}							
							}

						}
					}

				}


			}

			$user_id = Session::get('usuario')->user_id;
			/* Actualización de familias */
			$familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('ALL', $contrap, null, null, null, 1, null), 'select');
			
			$famselec = (!empty(Request::input('familia'))) ? Request::input('familia') : NULL;
			$ingresar_una_vez = true;
			$nombre_familia = null; 
			$cod_familia = null; 
			foreach ($familias as $todas) {
				/* Busco setup de la contraparte. status = 0 indica que no está previamente asignada a la contraparte */
				$status = 0;
				$found = FALSE;
				foreach ($famselec as $marked) {
					if($marked == $todas->familia) {
						$status = $todas->asignada;
						$nombre_familia = $todas->nombre_familia;  
						$cod_familia = $todas->familia;  
						$found = TRUE;
						break;
					}
				}
			
				if ($status == 0) {
					
					if($found && $ingresar_una_vez == true){
						//Trazabilidad agregar familia.
						$as_user_id = Session::get('usuario')->as_user_id;
						$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se agregó una familia', $cli, 'AGREGAR_FAMILIA_CONTRAPARTE_WWW','WWW', $contrap, Session::get('usuario')->as_user_id), 'selectOne');
						$ingresar_una_vez = false;
					}
					$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('insert' , $contrap, $marked , NULL, NULL, 1, Session::get('usuario')->as_user_id), 'selectOne');

					if ($servicio == '73') 
						{
						$temp2 = SQLConnection::backendStoreProcedure('LN_alta_Contratistas', array('update', $cli, null, $marked, null, null, $contrap, Session::get('usuario')->as_user_id), 'selectOne');
						}
				}
				if (!$found) {
					
					$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('delete' , $contrap, $todas->familia, NULL, NULL, 1, Session::get('usuario')->user_id), 'selectOne');
				}
			}
			// Reprocesa indicadores por posible actualización de familias 
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null, $contrap), 'selectOne');
			// Regenera documentos, por si el cambio de familia le cambió el set de documentos 
			$temp2 = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($contrap, null, Session::get('usuario')->user_id));

		}
		else {
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('delete', $contrap, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
		}
		$as_user_id = Session::get('usuario')->as_user_id;
		if($activo != $estado_anterior){
			if($activo == 1){
				//Trazabilidad actualizar estado a Habilitado.
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se habilitó la Contraparte', $cli, 'HABILITACION_CONTRAPARTE_WWW','WWW', $contrap,$as_user_id), 'selectOne');
			}else{
				//Trazabilidad actualizar estado a Habilitado.
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se deshabilitó la Contraparte', $cli, 'DESHABILITACION_CONTRAPARTE_WWW','WWW', $contrap,$as_user_id), 'selectOne');
			}
		}

		$datos = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_contraparte', $contrap, null, $cli, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null), 'selectOne');
		return json_encode( array('datos' => $datos) );
	}


	public static function ledContrapartesUpdate23092024() {
		$accion = Request::input('accion');
		$cli = Request::input('cliente');
		$contrap = Request::input('contraparte');
		$estado_anterior = Request::input('estado_anterior');
		$activo = Request::input('activo');
		$servicio = Request::input('servicio');
		$sector = Request::input('sector');
		$tipo_servicio = Request::input('tipo_servicio');
		$responsable = Request::input('responsable');

		if ($accion == 'editar') {
			$data = [];
			$data[] = 'UPDATE_FRONTEND';
			$data[] = $contrap;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = Request::input('datos_comerciales');
			$data[] = $activo;
			$data[] = Request::input('nombre_contacto');
			$data[] = Request::input('email_contacto');
			$data[] = Request::input('telefono_contacto');
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			//$data[] = DateTime::createFromFormat('d/m/Y', Request::input('vigencia_desde'));
			//$data[] = DateTime::createFromFormat('d/m/Y', Request::input('vigencia_hasta'));
			$data[] = Session::get('usuario')->user_id;	
			$data[] = NULL;
			$data[] = NULL;
			$data[] = Request::input('modalidad_pago') ?? 'CC';
			$data[] = NULL;
			$data[] = NULL;
			$data[] = !empty(Request::input('pais_servicio')) ? Request::input('pais_servicio') : 'AR';
			$data[] = NULL;
			$data[] = !empty(Request::input('codigo_idioma')) ? Request::input('codigo_idioma') : 'spa';
			$data[] = NULL;
			$data[] = $sector;
			$data[] = $responsable;
			$data[] = $tipo_servicio;
			

			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', $data, 'selectOne');

			$iniact = ('' != Request::input('inicio_actividades')) ? Request::input('inicio_actividades') : NULL;
			$empl = ('' != Request::input('empleados')) ? Request::input('empleados') : "NULL";
			$resenia = ('' != Request::input('resenia')) ? "'" . Request::input('resenia') . "'" : "NULL";
			$fini = (NULL != $iniact) ? "'" . date_format(date_create_from_format('!d/m/Y', $iniact), "Y-m-d") . "'" : "NULL";

			DB::select("update LN_contrapartes set inicio_actividades = " . $fini . ", empleados = " .  $empl . ", resenia = " . $resenia . " where contraparte = " . $contrap);

			/* 09/09/2020 Envio de mail a la contraparte */
			$enviarmail   = Request::input('enviarmail') ?? 0; 
			$fecha_expira = Request::input('fecha_expira') ?? date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y');
			$email_alt    = Request::input('email_alt') ?? $email_contacto; 
			if ($enviarmail == 1) {
				$fecha_limite_doc  = Request::input('fecha_expira');
				$fecha_entrega_doc = Request::input('fecha_expira');
				$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contrap, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
				$modalidad_login = $modo_login->modalidad_login;
				$blade = ($modalidad_login == 'T') ? 'ALTA-TAXID' : 'ALTA-LINK';
				$subject = ($modalidad_login == 'T') ? 'ALTA-TAXID-SUBJECT' : 'ALTA-LINK-SUBJECT';
			// $email_alt= 'marita.soria@gmail.com'; 
				$false = false; 
				$null = null; 
				/* 01/03/2021 Se cambio por EmailController
				LEDEmailController::enviarMailLED($blade, $subject, $contrap, $fecha_limite_doc, $email_alt,$false,$null,$null,$servicio);
				*/
				EmailController::enviarMail('EMAIL-LED','ALTA', '', $contrap, $fecha_limite_doc, $email_alt,$false,$null,$null);
			}

			if (!empty($_FILES['archivo']) && $_FILES['archivo']['name'] !== '') {
				$userfile_name = $_FILES['archivo']['name'];
				$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);

				$ftype = strtolower($userfile_extn); 
				if($ftype == 'png' OR $ftype == 'jpg' OR $ftype == 'gif') {

					if( basename($_FILES['archivo']['name']) !='' ) {
						$path = env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.' . $ftype;
						$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
						if($ftype == 'png' OR $ftype == 'jpg' OR $ftype == 'gif') { 
							move_uploaded_file($_FILES['archivo']['tmp_name'], $path);

							if($ftype == 'png') {
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg' );
								}			
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif' );
								}							
							}

							if($ftype == 'jpg') {
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . 'png') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.png' );
								}			
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif' );
								}							
							}

							if($ftype == 'gif') {
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.png') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.png' );
								}			
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg' );
								}							
							}

						}
					}

				}


			}

			$user_id = Session::get('usuario')->user_id;
			/* Actualización de familias */
			$familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('ALL', $contrap, null, null, null, 1, null), 'select');
			
			$famselec = (!empty(Request::input('familia'))) ? Request::input('familia') : NULL;
			$ingresar_una_vez = true;
			$nombre_familia = null; 
			$cod_familia = null; 
			foreach ($familias as $todas) {
				/* Busco setup de la contraparte. status = 0 indica que no está previamente asignada a la contraparte */
				$status = 0;
				$found = FALSE;
				foreach ($famselec as $marked) {
					if($marked == $todas->familia) {
						$status = $todas->asignada;
						$nombre_familia = $todas->nombre_familia;  
						$cod_familia = $todas->familia;  
						$found = TRUE;
						break;
					}
				}
			
				if ($status == 0) {
					
					if($found && $ingresar_una_vez == true){
						//Trazabilidad agregar familia.
						$as_user_id = Session::get('usuario')->as_user_id;
						$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se agregó una familia', $cli, 'AGREGAR_FAMILIA_CONTRAPARTE_WWW','WWW', $contrap, Session::get('usuario')->as_user_id), 'selectOne');
						$ingresar_una_vez = false;
					}
					//die();
					$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('insert' , $contrap, $marked , NULL, NULL, 1, Session::get('usuario')->as_user_id), 'selectOne');

					if ($servicio == '73') 
						{
						$temp2 = SQLConnection::backendStoreProcedure('LN_alta_Contratistas', array('update', $cli, null, $marked, null, null, $contrap, Session::get('usuario')->as_user_id), 'selectOne');
						}
				}
				if (!$found) {
					
					$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('delete' , $contrap, $todas->familia, NULL, NULL, 1, Session::get('usuario')->user_id), 'selectOne');
				}
			}

			/* Actualización de las clasificaciones dependientes del cliente */
		/*
			$temp = SQLConnection::backendStoreProcedure('LN_contraparte_clasificacion_', array('delete_all', $contrap, null), 'selectOne');
			$clasif = SQLConnection::backendStoreProcedure('LN_clasificaciones_', array('search', null, $cli, null, null, null), 'select');
			foreach ($clasif as $key => $cla) {				
				$id = $cla->clasificacion;
				$varname = 'clasificacion_'.$id;
				$item = Request::input($varname);
				if($item > 0) {
					$temp = SQLConnection::backendStoreProcedure('LN_contraparte_clasificacion_', array('insert', $contrap, $item), 'selectOne');
				}
			}
		*/
			// Reprocesa indicadores por posible actualización de familias 
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null, $contrap), 'selectOne');
			// Regenera documentos, por si el cambio de familia le cambió el set de documentos 
			$temp2 = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($contrap, null, Session::get('usuario')->user_id));

		}
		else {
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('delete', $contrap, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
		}
		$as_user_id = Session::get('usuario')->as_user_id;
		if($activo != $estado_anterior){
			if($activo == 1){
				//Trazabilidad actualizar estado a Habilitado.
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se habilitó la Contraparte', $cli, 'HABILITACION_CONTRAPARTE_WWW','WWW', $contrap,$as_user_id), 'selectOne');
			}else{
				//Trazabilidad actualizar estado a Habilitado.
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se deshabilitó la Contraparte', $cli, 'DESHABILITACION_CONTRAPARTE_WWW','WWW', $contrap,$as_user_id), 'selectOne');
			}
		}
		//return view('/led/led_contrapartes_update')->with(compact(['cli']));

		$datos = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_contraparte', $contrap, null, $cli, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null), 'selectOne');
		return json_encode( array('datos' => $datos) );
	}

	public static function ledContraparteData() {
		$id = !empty(Request::input('contraparte')) ? Request::input('contraparte') : null;
		if ($id != null) {
			$data = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');

			$domic = DB::selectOne("SELECT * from domicilios_todos where cuit='" . $data->identificacion . "' and tipo_domicilio='F'");

			return json_encode( array('data' => $data , 'domicilio' => $domic) );
		}
	}

	public static function ledContraparteActualizar() {
		$id = !empty(Request::input('contraparte')) ? Request::input('contraparte') : null;
	
		if ($id != null) {

			
			$nombre = !empty(Request::input('nombre_contacto')) ? Request::input('nombre_contacto') : null;
			$email = !empty(Request::input('email_contacto')) ? Request::input('email_contacto') : null;
			$telefono = !empty(Request::input('telefono_contacto')) ? Request::input('telefono_contacto') : null;
			$datos = !empty(Request::input('datos_comerciales')) ? Request::input('datos_comerciales') : null;
			$domicilio = !empty(Request::input('domicilio')) ? Request::input('domicilio') : null;
			$web = !empty(Request::input('web')) ? Request::input('web') : null;
			
			$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
			$vig_desde = date_create_from_format('d/m/Y', $qcontrap->vigencia_desde);
			$vig_hasta = date_create_from_format('d/m/Y', $qcontrap->vigencia_hasta);

			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('update', $id, NULL, NULL, $datos, $qcontrap->activo, $nombre, $email, $telefono, NULL, NULL, NULL, $vig_desde, $vig_hasta, Session::get('usuario')->user_id, $qcontrap->subcontratista, $qcontrap->id_padre, NULL, $domicilio,null,null,null,null,$web), 'selectOne');

			$data = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');

			$domic = DB::selectOne("SELECT * from domicilios_todos where cuit='" . $data->identificacion . "' and tipo_domicilio='F'");

			// TRAZABILIDAD UPDATE CONTRAPARTE
			$as_user_id = Session::get('usuario')->as_user_id;
			$temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Cliente actualizó Contraparte', $cliente, 'UPDATE_CONTRAPARTE','FI', $contraparte,$as_user_id,null,$servicio), 'selectOne'); // TRAZABILIDAD - MIRAR BIEN SERVICIOS.
			return json_encode( array('data' => $data , 'domicilio' => $domic) );
		}
	}

	public static function ledContrapartesAdd() {
		$cli = Request::input('cliente');
		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cli, NULL, NULL, NULL), 'selectOne');
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		//-- EN ESTA SECCION SE CHEQUEA SI EL PAIS TIENE IDENTIFICADORES Y LO DEVUELVE SINO NO
		/* foreach ($country as $key => $value){
			if (empty(Misc::identificadoresPais($value->country_code)) ){
				unset($country[$key]);
			}
		} */
		//--
		return view('/led/led_contrapartes_buscar')->with(compact(['cliente', 'country']));
	}

	// busqueda generar Fidelitas por nombre o tax id
	public static function ledContrapartesBusquedaPadron() {
		$input_autocomplete = Misc::parsearBusquedaPadron(Request::input('input_autocomplete'));
		if ($input_autocomplete != "") {
			$data = DB::select('EXEC dbo.busqueda_padron_autocompletar ?,?', array($input_autocomplete,1));
			$vista = \View::make('/led/led_contrapartes_tabla_busqueda')->with(compact(['data']))->render();
			return json_encode( array('view' => $vista) );
		}
	}

	// FUNCION ENCARGADA DE BUSCAR UNA PERSONA EXTRANJERA EN EL PADRON Y SI NO EXISTE LO INSERTA Y DEVUELVE LA TABLA
	public static function ledContrapartesBusquedaPadronOtroPais(){
		$cliente = Session::get('usuario')->cliente['client_id'];
		$pais = Request::input('pais');
		$identificacion = Request::input('tipo_identificacion');
		$numero = Request::input('identificacion');
		$nombre = Request::input('razon_social');
		$persona = Request::input('tipo_persona');
		$sexo = Request::input('sexo');
		//-----
		$data[0] = trim($identificacion);
		$data[1] = trim($numero);
		$data[2] = trim($nombre);
		$data[3] = trim($persona);
		$data[4] = trim($sexo);
		$data[5] = 1;
		$data[6] = 1;
		//-----
		$respuesta = SQLConnection::backendStoreProcedure('backend_insertar_padron',$data);
		$data = $respuesta;
		$vista = \View::make('/led/led_contrapartes_tabla_busqueda_otro_pais')->with(compact(['data']))->render();
		return json_encode( array('view'=>$vista));
		//-----
		
	}
	// FUNCION ENCARGADA DE DEVOLVER EL FORMULARIO DE NUEVO CONTRAPARTES (No usado)
	public static function ledContrapartesNewOtroPais(){
		$cliente = Session::get('usuario')->cliente['client_id'];
		$id_padron = Request::input('id_padron');
		$servicio = Request::input('servicio');
		//----------
		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		//-----------
		$codigo_pais = $padron->country_code;
		$nombre_pais = $padron->country_name;
		$identificacion = $padron->numero;
		$identificador = $padron->identificador;
		$nombre = $padron->nombre_persona;
		//----------
		$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,null,1,NULL,NULL,NULL,NULL,NULL,$servicio));
		//----------
		return view('/led/led_contrapartes_fidecheck')->with(compact(['cliente','id_padron','servicio','codigo_pais','nombre_pais','identificacion','identificador','nombre','familias','padron']));
	}


	/***************************************************** */
	public static function ledDocs()
	{
		$cliente =				  Request::input('cliente');
		$contraparte =			  Request::input('contraparte');

		$gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $contraparte, null, null, 1, null));

		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, null));

		/*$docs = DB::select('EXEC dbo.LN_docs_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,,??', array('search', NULL, $cliente, $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $gest->gestion, NULL));*/
		$docs = SQLConnection::backendStoreProcedure('LN_docs_', array('search', null, $cliente, $contraparte, null, null, null, null, null, null, null, null, null, null, null, $gest->gestion, null), 'select');

		return view('/led/led_docs')->with(compact(['cliente', 'qcontrap', 'docs']));
	}

	public static function ledDocsDetail() {
		$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');
		
		//** Documento foto de Inquiro vitae
		$foto_perfil_url = NULL;
		if (!is_null($doc) && $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 (!is_null($doc) && $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); 

		if ($carga === false and $verifica === false) { 
			return view('/led/led_doc_detail')->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']));
		}
		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']));
		}
  
	}

	/**
	calculo el score de la siguiente manera:
	Obtener la configuración( si es que existe ) y los productos para ese cliente
	si no tiene configuración se hace 100 / la cantidad de productos y se les reparte a cada producto el valor correspondiente a esa división
	Si tiene configuración y tiene más o menos productos que configuraciones, se recalcula tomando los valores de porcentaje base.
	**/
	public static function calcularScoreProductos($cliente=3920694)
	{
		$score	  = SQLConnection::backendStoreProcedure('LN_score_personalizado_obtener_configuracion', array($cliente), 'select');
		$cantidad_items_score = sizeof($score);
		
		//  $valor  = 100 / $cantidad_items_score;
		foreach ($score as $item) {
			//  print_r($item);
				//$score  = SQLConnection::backendStoreProcedure('LN_score_personalizado_cargar_configuracion', array($cliente,$item->ponderacion,$valor), 'select');
		}
	}


	/**
	 * ledPanelControlInfo() devuelve la información que va en la tabla, en formato JSON.
	 *
	 * @return JSON array
	 */

	/*
	public static function ledPanelControlInfo()
	{
		$cliente = Session::get('usuario')->cliente['client_id'];
		$contratista_subcontratista = Request::input('contratista_subcontratista');		

		//$filtro_familia = null;
		$filtro_familia  = !empty(Request::input('familia')) ? Request::input('familia') : null;
		$saas  = null; 
		//$saas  = !empty(Request::input('saas')) ? Request::input('saas') : null;
	

		$filtro_familia_sub = null;

		//$filtro_pais  = null;
		$filtro_pais  = !empty(Request::input('country_code')) ? Request::input('country_code') : null;

		$prodind = [];
		
		if ($contratista_subcontratista == 'C')
		{
		$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('contrapartes', $cliente, $filtro_pais, $filtro_familia, NULL), 'select');
		$indic = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('PRODUCTOS_INDICADORES', $cliente,null,null, null,NULL,NULL,null,null,null,null,1,null,null,null,null,$saas), 'select');
		}
		else 
		{
		$contrap = SQLConnection::backendStoreProcedure('LN_subcontratistas_fancy', array('contrapartes', $cliente, $filtro_pais, $filtro_familia_sub, null), 'select');
		$indic = SQLConnection::backendStoreProcedure('LN_subcontratistas_fancy', array('PRODUCTOS_INDICADORES', $cliente,null,null, NULL), 'select');
		}

		Traducciones::$blade = 'led_panel_control';
		SQLConnection::obtenerTraducciones(Traducciones::$blade);
		foreach ($indic as $key => $idata) {
			$map = function ($idata) {
				return $idata->producto_id;
			};
			$apariciones = array_count_values(array_map($map, $indic));

			$buscar = ($idata->clave_indicador=='RAZON_SOCIAL' || $idata->clave_indicador=='FAMILIA' || $idata->clave_indicador=='PAIS');
			//para traducciones.
			if( $buscar){
			  $idata->etiqueta_indicador =  \Traducciones::get($idata->etiqueta);
			}else{
			  $idata->etiqueta_indicador = \Traducciones::get($idata->etiqueta_indicador);
			}

			$idata->nombre_producto = \Traducciones::get($idata->nombre_producto);
			$idata->nombre_indicador = \Traducciones::get($idata->nombre_indicador);

			$prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;//($apariciones[$idata->producto_id] > 1) ? $idata->etiqueta_indicador : $idata->etiqueta;
			$prodind[$idata->producto_id][$idata->clave_indicador]['clave_indicador'] = $idata->clave_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;
			$prodind[$idata->producto_id][$idata->clave_indicador]['nombre_padre'] = ($apariciones[$idata->producto_id] > 1) ? $idata->etiqueta : 0;
			$prodind[$idata->producto_id][$idata->clave_indicador]['alignment'] = $idata->alignment;
			$prodind[$idata->producto_id][$idata->clave_indicador]['locked'] = ($idata->locked == 1) ? true : false;
			$prodind[$idata->producto_id][$idata->clave_indicador]['width'] = (int)$idata->width;
			$prodind[$idata->producto_id][$idata->clave_indicador]['separator'] = $idata->separator;
			$prodind[$idata->producto_id][$idata->clave_indicador]['decimals'] = $idata->decimals;
			$prodind[$idata->producto_id][$idata->clave_indicador]['buscar'] =   $buscar ? true: false ;
			if ($contratista_subcontratista=='S')
			{
			  $prodind[$idata->producto_id][$idata->clave_indicador]['buscar'] = ($idata->clave_indicador=='RAZON_SOCIAL' || $idata->clave_indicador=='FAMILIA' || $idata->clave_indicador=='PAIS' || $idata->clave_indicador=='RAZON_SOCIAL_SUB' || $idata->clave_indicador=='FAMILIA_SUB' || $idata->clave_indicador=='PAIS_SUB') ? true: false ;
			}
			$clave_indicador[] = $idata->clave_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['icono'] = $idata->class_icon;
			$prodind[$idata->producto_id][$idata->clave_indicador]['nombre_producto'] = $idata->nombre_producto;
			$prodind[$idata->producto_id][$idata->clave_indicador]['nombre_indicador'] = $idata->nombre_indicador;
		}
		$cant_hijos = count(array_unique($clave_indicador));

		$valores = [];

		$clave_indicador  = Request::input('clave_indicador');
		$valor_min		= Request::input('min');
		$valor_max		= Request::input('max');
		$contraparte		= Request::input('contraparte');
		   $valor_texto	  = !empty(Request::input('valor_texto')) ? Request::input('valor_texto') : NULL;
		
		//Sólo para PAE. porque el producto aún no existe.
		if ($cliente == '2046807993') {
			foreach ($prodind as $key => $value) {
				if (isset($value['NIVEL_RIESGO'])) {
					unset($prodind[$key]['NIVEL_RIESGO']);
				}
				if (isset($value['DEP_ECON'])) {
					unset($prodind[$key]['DEP_ECON']);
				}
			}
		}
		$titulos = $prodind;

		// Para que cuando el mínimo del rango sea 21, 41, 61, 81, etc pase al SP el valor 20.01, 41.01, etc.
		$valor_min = (null != $valor_min) ? ( ($valor_min % 10 == 1) ? $valor_min-1+0.01 : $valor_min ) : $valor_min;
		
		$vista_filtrada = false;
		if(isset($valor_min) && $valor_min || isset($valor_max) && $valor_max || isset($valor_texto) && $valor_texto || isset($contraparte) && $contraparte){
			$vista_filtrada = true;
		}
		if ($contratista_subcontratista == 'C')
		{
		$params = array('VALORES_GRILLA_EXT', $cliente, $filtro_pais, $filtro_familia, $contraparte, $clave_indicador, null, null, null, null, null, null, null, $valor_min, $valor_max, $valor_texto);
		$led	= SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', $params, 'select');
		}
		else 
		{
		$params = array('VALORES_GRILLA_EXT ', $cliente, $filtro_pais, $filtro_familia_sub, $contraparte, $clave_indicador, null, null, null, null, null, null, null, $valor_min, $valor_max, $valor_texto);
		$led	= SQLConnection::backendStoreProcedure('LN_subcontratistas_fancy', $params, 'select');
		}

		// $pi	 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('PRODUCTOS_INDICADORES', $cliente, $filtro_pais, $filtro_familia, null), 'select');
	   //print_r($led);die();
	   $pi = $indic; 
	   $indices = [];
	   $pais	= [];
	   $familia = [];
	   $familia_sub = [];
	   foreach ($led as $key => $datos) {
			//valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);
			if (isset($datos->color_personalizado)) {
				$datos->color	 = $datos->color_personalizado;
			}
			if (isset($datos->textcolor_personalizado)) {
				$datos->textcolor = $datos->textcolor_personalizado;
			}
			if (isset($datos->svg_data_personalizado)) {
				$datos->svg_data  = $datos->svg_data_personalizado;
			}
			
			$datos->textcaption = \Traducciones::get($datos->textcaption);
			$datos->texto = \Traducciones::get($datos->texto);

			$pais[$key]['info'] = $datos->PAIS;
			$pais[$key]['cls'] = 'flag-icon-'.$datos->PAIS;
			$pais[$key]['val'] = '<span class=flag-icon flag-icon-background flag-icon-'.$datos->PAIS.'></span>';
			
			$familia[$key]['value'] = $datos->FAMILIA;
			if ($contratista_subcontratista == 'C')
			{
			$valores[$datos->contraparte]['PAIS']['PAIS'] = array($datos->PAIS,'', '', '', '','');
			$valores[$datos->contraparte]['FAMILIA']['FAMILIA'] = array($datos->FAMILIA,'', '', '', '','');
			$valores[$datos->contraparte]['RAZON_SOCIAL']['RAZON_SOCIAL'] = array($datos->RAZON_SOCIAL.' <div style="display:none;">'.$datos->identificacion.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte.'</div>','', '', '', '','');
			$valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->cell_data,$datos->textcaption,$datos->texto,$datos->textcolor);
			}
			if ($contratista_subcontratista=='S')
			{
			$familia_sub[$key]['value'] = $datos->FAMILIA_SUB;
			$valores[$datos->contraparte_sub]['PAIS']['PAIS'] = array($datos->PAIS,'', '', '', '','');
			$valores[$datos->contraparte_sub]['FAMILIA']['FAMILIA'] = array($datos->FAMILIA,'', '', '', '','');
			$valores[$datos->contraparte_sub]['RAZON_SOCIAL']['RAZON_SOCIAL'] = array($datos->RAZON_SOCIAL.' <div style="display:none;">'.$datos->identificacion.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte.'</div>','', '', '', '','');
			$valores[$datos->contraparte_sub]['FAMILIA_SUB']['FAMILIA_SUB'] = array($datos->FAMILIA_SUB,'', '', '', '','');
			$valores[$datos->contraparte_sub]['RAZON_SOCIAL_SUB']['RAZON_SOCIAL_SUB'] = array($datos->RAZON_SOCIAL_SUB.' <div style="display:none;">'.$datos->identificacion_sub.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte_sub.'</div>','', '', '', '','');
			$valores[$datos->contraparte_sub]['DESDE']['DESDE'] = array($datos->DESDE,'', '', '', '','');
			$valores[$datos->contraparte_sub]['HASTA']['HASTA'] = array($datos->HASTA,'', '', '', '','');
			$valores[$datos->contraparte_sub][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->cell_data,$datos->textcaption,$datos->texto,$datos->textcolor);
			}

		}
		$pais	   = array_map("unserialize", array_unique(array_map("serialize", $pais)))	 ;
		$familia	= array_map("unserialize", array_unique(array_map("serialize", $familia)   ));
		$familia_sub	= array_map("unserialize", array_unique(array_map("serialize", $familia_sub)   ));
		foreach ($valores as $valores_key => $valores_value) {
			foreach ($pi as $pi_key => $pi_value) {
				if (!isset($valores_value[$pi_value->producto_id][$pi_value->clave_indicador])) {
					$valores[$valores_key][$pi_value->producto_id][$pi_value->clave_indicador][] = '';
				}
			}
		}
		return json_encode(['valores' => $valores,'titulos' => $titulos,'cant_hijos' => $cant_hijos,'pais' => $pais,'familia' => $familia,'familia_sub' => $familia_sub,'vista_filtrada' => $vista_filtrada]);
	}
	*/

	public static function ledPanelControlInfo_cla(){
		ini_set('memory_limit','4096M');
		$cliente = Session::get('usuario')->cliente['client_id'];
		$servicio_actual  = Session::get('servicio_actual');
		$contratista_subcontratista = Request::input('contratista_subcontratista') ?? 'C';	
		$vrm = Request::input('vrm') ?? '1'; 

		if ($servicio_actual == '73'){
			$contratista_subcontratista = 'I';
		}

		if ($contratista_subcontratista == 'C'){
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel.json'; 
		} elseif ($contratista_subcontratista == 'I') {
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-impe.json';
		} else {
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub.json'; 
		}

		
		if(ENV('FORZAR_GENERACION_JSON') == true || !file_exists($file) ){
			self::ledPanelControlFile($cliente,$contratista_subcontratista);
		}

		if (!file_exists($file)){	
			return json_encode('fallo'); 
		}
		
		$filtro_pais_servicio  	= ( '' !==Request::input('filtro_pais_servicio'))  ? Request::input('filtro_pais_servicio') : null;
		$filtro_familia  		= ( '' !==Request::input('familia'))  ? Request::input('familia') : null;
		$filtro_familia_sub = null;
		$filtro_pais      	= ( '' !==Request::input('country_code')) ? Request::input('country_code') : null;
		$clave_indicador 	 	= ( '' !==Request::input('clave_indicador')) ? Request::input('clave_indicador') : null;
		$valor_min					= ( '' !==Request::input('min')) ? Request::input('min') : null;
		$valor_max					= ( '' !==Request::input('max')) ? Request::input('max') : null;
		$contraparte				= ( '' !==Request::input('contraparte')) ? Request::input('contraparte') : null;
		$lista_contrapartes			= ( '' !==Request::input('lista_contrapartes')) ? Request::input('lista_contrapartes') : null;
		$array_contrapartes = explode(",", $lista_contrapartes);
		$valor_texto				= ( '' !==Request::input('valor_texto')) ? Request::input('valor_texto') : null;
		
		if ($clave_indicador == 'HOMOLOG' && $valor_min == '3') {
			$clave_indicador = 'EXCEPCION'; 
			$valor_texto = 'SI'; 
			$valor_min = null; 
			$valor_max = null; 
		}

		if ($clave_indicador == 'FIDECHECK') {
			if ($valor_texto == 'N') { $valor_texto = '1'; }
			if ($valor_texto == 'R') { $valor_texto = '2'; }
			if ($valor_texto == 'S') { $valor_texto = '1'; }
			if ($valor_texto == 'E') { $valor_texto = '3'; }
			if ($valor_texto == 'P') { $valor_texto = '4'; }

		}

		if($clave_indicador == 'ULTIMA_NOVEDAD'){
			$valor_max = date("ym",strtotime(date('Y-m-d')."+ 1 months"));
			$valor_min = date("ym",strtotime(date('Y-m-d')."- 30 days"));
			
		}

		$r=[];
		$archivo = file_get_contents($file);
		$file_editable = json_decode($archivo);

		if(isset($file_editable->pais_servicio)){
			$mostrar_ps = count((array)$file_editable->pais_servicio);
			
			if($mostrar_ps < 2){
				foreach($file_editable->valores as $key => $value){
					unset($file_editable->valores->$key->pais_servicio);
				}
				foreach($file_editable->titulos as $key => $value){
					unset($file_editable->titulos->$key->pais_servicio);
				}
			}
		}
		$archivo = json_encode($file_editable);

		if(Session::get('usuario')->cliente['client_id'] == "6063454" OR Session::get('usuario')->cliente['client_id'] == "1530289645"){
			
			$file_editable = json_decode($archivo);
			if(isset($file_editable->titulos->documentos->SCORE_DOC) ) {
				unset($file_editable->titulos->documentos->SCORE_DOC);
			}
			$archivo = json_encode($file_editable);
		}

		/* AGREGADO PARA TRADUCCIONES */

		Traducciones::$blade = 'led_panel_control';
		$trad = SQLConnection::obtenerTraduccionesPHP(Traducciones::$blade);
		// Hace las traducciones de los titulos 
		$resultado = json_decode($archivo);
		foreach ($resultado->titulos as $key => $value) {
			foreach ($value as $key_n1 => $value_n1) {
				if(isset($trad[$value_n1->etiqueta])){
					$resultado->titulos->$key->$key_n1->etiqueta =	$trad[$value_n1->etiqueta];
				} else {
					// Si no esta traducido, lo guarda en la tabla traducciones
					Traducciones::set($resultado->titulos->$key->$key_n1->etiqueta,Traducciones::$blade);
				}
			}
		}
		$archivo = json_encode($resultado); 
		/* -------------------------- */ 
		/* 14/09/2020*/
		UserController::obtenerTraduccionesBotones(Request::input('numero'));
		/* -------------------------- */ 

		$usuarios_restricciones = Session::get('usuarios_restricciones');
		$servicio_actual = Session::get('servicio_actual');
		if(!empty($usuarios_restricciones)){
			$resultado = json_decode($archivo); 
			foreach ($usuarios_restricciones as $key_ur => $value_ur) {
				if($servicio_actual == $key_ur){
					$aux = []; 
					foreach ($resultado->valores as $key1 => $datos1){
						foreach ($value_ur as $key_n2 => $value_n2) {
							//busco sólo por familia.
							if($value_n2->pais_servicio == null && $value_n2->indicador  == null && $value_n2->familia != null ){
								if (isset($datos1->FAMILIA)) {
									if(strtoupper($datos1->FAMILIA->FAMILIA[0]) == strtoupper($value_n2->nombre_familia)){
										unset($resultado->valores->$key1);
									}
								}
								//busco por familia y por pais de servicio.
							} else if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia != null){
								if (isset($datos1->pais_servicio) && isset($datos1->FAMILIA)) {
									if(strtolower($datos1->pais_servicio->pais_servicio[0]) == strtolower($value_n2->pais_servicio) && 
										strtoupper($datos1->FAMILIA->FAMILIA[0]) == strtoupper($value_n2->nombre_familia)){
										unset($resultado->valores->$key1);
									}
								} else if (!isset($datos1->pais_servicio) && isset($datos1->FAMILIA)) {
									if(strtoupper($datos1->FAMILIA->FAMILIA[0]) == strtoupper($value_n2->nombre_familia)){
										unset($resultado->valores->$key1);
									}
								}

							}else if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia == null){
		  						if (isset($datos1->pais_servicio)) {
									if(strtolower($datos1->pais_servicio->pais_servicio[0]) == strtolower($value_n2->pais_servicio) ){
										unset($resultado->valores->$key1);
								    }
								}
							}
						}
					}

					foreach ($resultado->titulos as $key1 => $datos1){
						foreach ($value_ur as $key_n2 => $value_n2) {
							if($value_n2->pais_servicio == null && $value_n2->familia == null && $value_n2->indicador  != null ){
								if(!empty($datos1)){
									foreach ($datos1 as $key2 => $datos2) {
										if($datos2->clave_indicador == $value_n2->clave_indicador){
											unset($resultado->titulos->$key1->$key2);
										}
									}
								}
							}
						}
					}

					foreach ($resultado->familia as $key1 => $datos1){
						foreach ($value_ur as $key_n2 => $value_n2) {
							//busco sólo por familia.
							if($value_n2->pais_servicio == null && $value_n2->indicador  == null && $value_n2->familia != null ){
								if(strtoupper($datos1->value) ==  strtoupper($value_n2->nombre_familia)){
									unset($resultado->familia->$key1);
								}
							}
						}
					}

					/* 21/04/2021 */
					$aux = [];
					foreach ($resultado->familia as $key1 => $row) {
						$aux[$key1] = new stdClass(); 
						$aux[$key1]->value = $row->value;
					}
					sort($aux);
					$resultado->familia = $aux; 
					//--

					foreach ($resultado->pais_servicio as $key1 => $datos1){
						foreach ($value_ur as $key_n2 => $value_n2) {
							//busco sólo por familia.
							if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia == null ){
								if(strtolower($datos1->info) == strtolower($value_n2->pais_servicio) ){
									unset($resultado->pais_servicio->$key1);
								}
							}
						}
					}
/* 16/06/2022: Antes formaba productos_habilitados con los titulos del panel de control, pero hay productos que no se ven en el panel de control, 
por lo cual, no los guardaba como producto habilitado, ahora se usa un Stored que trae los productos habilitados para el usuario/serviciio, pero esto se hace en el loginController, y se guarda en las variables de sesion productos_habilitados y indicadores_habilitados_usuario */	
/*
					/*$productos_habilitados = [];
					$indicadores_habilitados_usuario = [];
					
					foreach ($resultado->titulos as $key1 => $datos1){
						if(!empty($datos1)){
							foreach ($datos1 as $key2 => $datos2) {
								if($datos2->producto != NULL){
									$productos_habilitados[$datos2->producto] = $datos2;
									// Para que deje los dos de Score de Informe
									if ($datos2->clave_indicador == 'SCORE_IC') {
										$datos2->producto = "2003";
										$datos2->indicador = "6";
										$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
										$datos2->producto = "2016";
										$datos2->indicador = "37";
										$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
									} else {
										$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
									}
								}
							}
						}
					}
					Session::put('productos_habilitados',$productos_habilitados);
					Session::put('indicadores_habilitados_usuario',$indicadores_habilitados_usuario);
					*/
				}
			}
			$archivo = json_encode($resultado);

		} else {

/* 16/06/2022: Antes formaba productos_habilitados con los titulos del panel de control, pero hay productos que no se ven en el panel de control, 
por lo cual, no los guardaba como producto habilitado, ahora se usa un Stored que trae los productos habilitados para el usuario/serviciio, pero esto se hace en el loginController, y se guarda en las variables de sesion productos_habilitados y indicadores_habilitados_usuario */	
/*
			$productos_habilitados = [];
			$indicadores_habilitados_usuario = [];
			foreach ($resultado->titulos as $key1 => $datos1){
				if(!empty($datos1)){
					foreach ($datos1 as $key2 => $datos2) {
						if($datos2->producto != NULL){
							$productos_habilitados[$datos2->producto] = $datos2;
							// Para que deje los dos de Score de Informe
							if ($datos2->clave_indicador == 'SCORE_IC') {
								$datos2->producto = "2003";
								$datos2->indicador = "6";
								$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
								$datos2->producto = "2016";
								$datos2->indicador = "37";
								$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
							} else {
								$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
							}
						}
					}
				}
			}
			Session::put('productos_habilitados',$productos_habilitados);
			Session::put('indicadores_habilitados_usuario',$indicadores_habilitados_usuario);
			*/
		}


		if (Session::get('usuario')->cliente['client_id'] == "1226057645"  and Session::get('servicio_actual') == 47) {
			$filtro_familia = 'BBVA-VRM';
		}
		
		if($filtro_pais_servicio !== null || $filtro_familia !== null || $filtro_familia_sub !== null || $filtro_pais !== null || $clave_indicador !== null || $valor_min !== null || $valor_max !== null || $contraparte !== null || $lista_contrapartes !== null || $valor_texto !== null) {
			$resultado = json_decode($archivo); 
			$aux = []; 
				
			foreach ($resultado->valores as $key1 => $datos1) {
				$ok_contraparte = 'si';  

				if ($contraparte !== null && $key1 != $contraparte) { continue; /* de $resultado */ } 
				if ($lista_contrapartes !== null && !(in_array($key1,$array_contrapartes))) { continue;  /* de $resultado */ } 

				foreach ($datos1 as $key2 => $datos2) {
					foreach ($datos2 as $key3 => $datos3) {
						$valor = strtoupper($datos3[0]); 
						if ($filtro_pais_servicio !== null && $key3 == 'pais_servicio') {
							if ($valor !== strtoupper($filtro_pais_servicio) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
						}

						if ($filtro_pais !== null && $key3 == 'PAIS') {
							if ($valor !== strtoupper($filtro_pais) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
						}
										
						if ($filtro_familia !== null && $key3 == 'FAMILIA' && $filtro_familia !== 'BBVA-VRM'){
							if ($valor !== strtoupper($filtro_familia) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
						}
						// BBVA
						if (Session::get('usuario')->cliente['client_id'] == "1226057645" and Session::get('servicio_actual') == 47){
							if ($key3 == 'FAMILIA'){
								// Solo las VRM
								if ($vrm == '1'){
									if (substr(strtoupper($valor),0,3) !== 'VRM' || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
								} else {
									if (substr(strtoupper($valor),0,3) == 'VRM' || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
								}
							}
						}

						if ($filtro_familia_sub !== null && $key3 == 'FAMILIA_SUB') {
							if ($valor !== strtoupper($filtro_familia_sub) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
						}

						if ($clave_indicador !== null && $valor_texto !== null && $key3 == $clave_indicador ){
							if ($valor !== strtoupper($valor_texto) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
						}

						if ($clave_indicador !== null && $key3 == $clave_indicador && $valor_min !== null && $valor_max !== null){
							if (is_numeric($valor)){
								if ($valor <  $valor_min  || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
								if ($valor >=  $valor_max || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
							} else {
								if ($valor < strtoupper($valor_min) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
								if ($valor >= strtoupper($valor_max) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }	
							}
						}
					}
					if ($ok_contraparte == "no") { continue;  /* de $datos1 */ }
				}

 				if ($ok_contraparte == 'si') { $aux[$key1] = $datos1; }
			}
			$resultado->valores = $aux; 
			$resultado->elementro_filtro = $clave_indicador;
			$resultado->vista_filtrada = true;
			return json_encode($resultado);

		} else {
			//echo(var_dump($archivo)); die();
			return $archivo;
		}
	}

	public static function ledPanelControlInfo(){
		ini_set('memory_limit','4096M');
		$cliente = Session::get('usuario')->cliente['client_id'];

		//16/06/2022: toma los productos e indicadores habilitados del sp [usuarios_productos_habilitados_] 
		$productos_habilitados = [];
		$indicadores_habilitados_usuario = [];
		$productos_habilitados = SQLConnection::backendStoreProcedure('usuarios_productos_habilitados_', array(Session::get('usuario')->cliente['client_id'],
		Session::get('usuario')->user_id,Session::get('servicio_actual'),'productos'), 'select');
		Session::put('productos_habilitados',$productos_habilitados);
		$indicadores_habilitados_usuario = SQLConnection::backendStoreProcedure('usuarios_productos_habilitados_', array(Session::get('usuario')->cliente['client_id'],Session::get('usuario')->user_id,Session::get('servicio_actual'),'indicadores'), 'select');
		Session::put('indicadores_habilitados_usuario',$indicadores_habilitados_usuario);	
		// Fin 16/06/2022 

		$servicio_actual  = Session::get('servicio_actual');
		$contratista_subcontratista = Request::input('contratista_subcontratista') ?? 'C';	
		$vrm = Request::input('vrm') ?? '1'; 

		if ($servicio_actual == '73'){
			$contratista_subcontratista = 'I';
		}
		
		if ($contratista_subcontratista == 'C'){
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel.json'; 
		}
		elseif ($contratista_subcontratista == 'I'){
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-impe.json';
		}
		else {
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub.json'; 
		}

		if(ENV('FORZAR_GENERACION_JSON') == true && !file_exists($file) ){
			self::ledPanelControlFile($cliente,$contratista_subcontratista); 
		}
		if (!file_exists($file)) {	
			return json_encode('fallo'); 
		}
		$filtro_pais_servicio  	= ( '' !==Request::input('filtro_pais_servicio'))  ? Request::input('filtro_pais_servicio') : null;
		$filtro_familia  		= ( '' !==Request::input('familia'))  ? Request::input('familia') : null;
		$filtro_familia_sub = null;
		$filtro_pais      	= ( '' !==Request::input('country_code')) ? Request::input('country_code') : null;
		$clave_indicador 	 	= ( '' !==Request::input('clave_indicador')) ? Request::input('clave_indicador') : null;
		$valor_min					= ( '' !==Request::input('min')) ? Request::input('min') : null;
		$valor_max					= ( '' !==Request::input('max')) ? Request::input('max') : null;
		$contraparte				= ( '' !==Request::input('contraparte')) ? Request::input('contraparte') : null;
		$lista_contrapartes			= ( '' !==Request::input('lista_contrapartes')) ? Request::input('lista_contrapartes') : null;
		$array_contrapartes = explode(",", $lista_contrapartes);
		$valor_texto				= ( '' !==Request::input('valor_texto')) ? Request::input('valor_texto') : null;
		
		if ($clave_indicador == 'HOMOLOG' && $valor_min == '3') {
			$clave_indicador = 'EXCEPCION'; 
			$valor_texto = 'SI'; 
			$valor_min = null; 
			$valor_max = null; 
		}

		if ($clave_indicador == 'FIDECHECK') {
			if ($valor_texto == 'N') { $valor_texto = '1'; }
			if ($valor_texto == 'R') { $valor_texto = '2'; }
			if ($valor_texto == 'S') { $valor_texto = '1'; }
			if ($valor_texto == 'E') { $valor_texto = '3'; }
			if ($valor_texto == 'P') { $valor_texto = '4'; }

		}

		if($clave_indicador == 'ULTIMA_NOVEDAD'){
			$valor_max = date("ym",strtotime(date('Y-m-d')."+ 1 months"));
			$valor_min = date("ym",strtotime(date('Y-m-d')."- 30 days"));
			
		}
		$r=[];
		
		$archivo = file_get_contents($file);

		$file_editable = json_decode($archivo);

		if(isset($file_editable->pais_servicio)){
			$mostrar_ps = count((array)$file_editable->pais_servicio);
			
			if($mostrar_ps < 2){
				foreach($file_editable->valores as $key => $value){
					unset($file_editable->valores->$key->pais_servicio);
				}
				foreach($file_editable->titulos as $key => $value){
					unset($file_editable->titulos->$key->pais_servicio);
				}
			}
		}
		$archivo = json_encode($file_editable);
		
		if(Session::get('usuario')->cliente['client_id'] == "6063454" OR Session::get('usuario')->cliente['client_id'] == "1530289645"){
			
			$file_editable = json_decode($archivo);
			if(isset($file_editable->titulos->documentos->SCORE_DOC) ) {
				unset($file_editable->titulos->documentos->SCORE_DOC);
			}
			$archivo = json_encode($file_editable);
		}

		/* AGREGADO PARA TRADUCCIONES */

		Traducciones::$blade = 'led_panel_control';
		$trad = SQLConnection::obtenerTraduccionesPHP(Traducciones::$blade);
		// Hace las traducciones de los titulos 
		$resultado = json_decode($archivo);

		foreach ($resultado->titulos as $key => $value) {
			foreach ($value as $key_n1 => $value_n1) {
				if(isset($trad[$value_n1->etiqueta])){
					$resultado->titulos->$key->$key_n1->etiqueta =	$trad[$value_n1->etiqueta];
				} else {
					// Si no esta traducido, lo guarda en la tabla traducciones
					Traducciones::set($resultado->titulos->$key->$key_n1->etiqueta,Traducciones::$blade);
				}
			}
		}
		$archivo = json_encode($resultado); 

		/* -------------------------- */ 
		/* 14/09/2020*/
		UserController::obtenerTraduccionesBotones(Request::input('numero'));
		/* -------------------------- */ 

		$usuarios_restricciones = Session::get('usuarios_restricciones');
		$servicio_actual = Session::get('servicio_actual');
		if(!empty($usuarios_restricciones)){
			$resultado = json_decode($archivo); 
			foreach ($usuarios_restricciones as $key_ur => $value_ur) {
				
				if($servicio_actual == $key_ur){
					$aux = [];
					
					foreach ($resultado->valores as $key1 => $datos1){
						foreach ($value_ur as $key_n2 => $value_n2) {
							//busco sólo por familia.
							if($value_n2->pais_servicio == null && $value_n2->indicador  == null && $value_n2->familia != null ){
								if (isset($datos1->FAMILIA)) {
									if(strtoupper($datos1->FAMILIA->FAMILIA[0]) == strtoupper($value_n2->nombre_familia)){
										unset($resultado->valores->$key1);
									}
								}
								//busco por familia y por pais de servicio.
								} else if ($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia != null){
									if (isset($datos1->pais_servicio) && isset($datos1->FAMILIA)) {
										if(strtolower($datos1->pais_servicio->pais_servicio[0]) == strtolower($value_n2->pais_servicio) && strtoupper($datos1->FAMILIA->FAMILIA[0]) == strtoupper($value_n2->nombre_familia)){
											unset($resultado->valores->$key1);
										}
									} else if (!isset($datos1->pais_servicio) && isset($datos1->FAMILIA)) {
										if(strtoupper($datos1->FAMILIA->FAMILIA[0]) == strtoupper($value_n2->nombre_familia)){
											unset($resultado->valores->$key1);
										}
									}

							}else if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia == null){
		  							if (isset($datos1->pais_servicio)) 
		  							{
										if(strtolower($datos1->pais_servicio->pais_servicio[0]) == strtolower($value_n2->pais_servicio) ){
											unset($resultado->valores->$key1);
								    }
								}
							}
						}
					}
					//busco por indicador..
					//var_dump($resultado->titulos); die(); 
					foreach ($resultado->titulos as $key1 => $datos1){
						foreach ($value_ur as $key_n2 => $value_n2) {
							if($value_n2->pais_servicio == null && $value_n2->familia == null && $value_n2->indicador  != null ){
								if(!empty($datos1)){
									foreach ($datos1 as $key2 => $datos2) {
										if($datos2->clave_indicador == $value_n2->clave_indicador){
											unset($resultado->titulos->$key1->$key2);
										}
									}
								}
							}
						}
					}
					foreach ($resultado->familia as $key1 => $datos1){
						foreach ($value_ur as $key_n2 => $value_n2) {
							//busco sólo por familia.
							if($value_n2->pais_servicio == null && $value_n2->indicador  == null && $value_n2->familia != null ){
								if(strtoupper($datos1->value) ==  strtoupper($value_n2->nombre_familia)){
									unset($resultado->familia->$key1);
								}
							}
						}
					}

/* 21/04/2021 */
		$aux = [];
		foreach ($resultado->familia as $key1 => $row) {
		$aux[$key1] = new stdClass(); 
		   $aux[$key1]->value = $row->value;
		}
		sort($aux);
		$resultado->familia = $aux; 
/* */


					foreach ($resultado->pais_servicio as $key1 => $datos1){
						foreach ($value_ur as $key_n2 => $value_n2) {
							//busco sólo por familia.
							if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia == null ){
								if(strtolower($datos1->info) == strtolower($value_n2->pais_servicio) ){
									unset($resultado->pais_servicio->$key1);
								}
							}
						}
					}

/* 16/06/2022: Antes formaba productos_habilitados con los titulos del panel de control, pero hay productos que no se ven en el panel de control, 
por lo cual, no los guardaba como producto habilitado, ahora se usa un Stored que trae los productos habilitados para el usuario/serviciio, pero esto se hace en el loginController, y se guarda en las variables de sesion productos_habilitados y indicadores_habilitados_usuario */	
/*

					$productos_habilitados = [];
					$indicadores_habilitados_usuario = [];
					foreach ($resultado->titulos as $key1 => $datos1){
							if(!empty($datos1)){
								foreach ($datos1 as $key2 => $datos2) {
								if($datos2->producto != NULL){
									  $productos_habilitados[$datos2->producto] = $datos2;
										if ($datos2->clave_indicador == 'SCORE_IC')  // Para que deje los dos de Score de Informe
										{
											$datos2->producto = "2003";
											$datos2->indicador = "6";
											$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
											$datos2->producto = "2016";
											$datos2->indicador = "37";
											$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
										}
									  else 
										{
											$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
										}
								}
							}
						}
					}
					Session::put('productos_habilitados',$productos_habilitados);
					Session::put('indicadores_habilitados_usuario',$indicadores_habilitados_usuario);
					*/
				}
			}
			//var_dump($resultado); die(); 
			$archivo = json_encode($resultado); 
		}
		else 
		{
/* 16/06/2022: Antes formaba productos_habilitados con los titulos del panel de control, pero hay productos que no se ven en el panel de control, 
por lo cual, no los guardaba como producto habilitado, ahora se usa un Stored que trae los productos habilitados para el usuario/serviciio, pero esto se hace en el loginController, y se guarda en las variables de sesion productos_habilitados y indicadores_habilitados_usuario */	
/*
			$productos_habilitados = [];
			$indicadores_habilitados_usuario = [];
			foreach ($resultado->titulos as $key1 => $datos1){
					if(!empty($datos1)){
						foreach ($datos1 as $key2 => $datos2) {
						if($datos2->producto != NULL){
							$productos_habilitados[$datos2->producto] = $datos2;
							
							if ($datos2->clave_indicador == 'SCORE_IC')  // Para que deje los dos de Score de Informe
								{
									$datos2->producto = "2003";
									$datos2->indicador = "6";
									$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
									$datos2->producto = "2016";
									$datos2->indicador = "37";
									$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
								}
							else 
								{
									$indicadores_habilitados_usuario[$datos2->producto][] = $datos2->indicador;
								}
						}
					}
				}
			}
			Session::put('productos_habilitados',$productos_habilitados);
			Session::put('indicadores_habilitados_usuario',$indicadores_habilitados_usuario);
			*/
		}
		//var_dump($indicadores_habilitados_usuario); die();

		if (Session::get('usuario')->cliente['client_id'] == "1226057645" and Session::get('servicio_actual') == 47) // BBVA
		{
			$filtro_familia = 'BBVA-VRM';
		}
		if (
			$filtro_pais_servicio	!== null ||
			$filtro_familia  		!== null ||
				$filtro_familia_sub !== null ||
				$filtro_pais      	!== null ||
				$clave_indicador 	 	!== null ||
				$valor_min					!== null ||
				$valor_max					!== null ||
				$contraparte				!== null ||
				$lista_contrapartes			!== null ||
				$valor_texto				!== null )
				{
					$resultado = json_decode($archivo); 

					/* Feb 2023: 
					agregamos la posibilidad de ver distintos paneles fitrados por familia
					Para manejar esos filtro, agregamos una columna hidden FAMILIA2 
					si usamos la columna FAMILIA, cuando el usuario usa la casilla de arriba para hacer algun filtro elegido por él, se arruina el filtro automatico que estamos haciendo, 
					y cuando el usuario desmarca, trae todo, 
					porque aplica el filtro el la misma columna, por eso usamos una nueva oculta */ 
					
					$aux = []; 
				    foreach ($resultado->valores as $key1 => $datos1) 
					{
						foreach ($datos1 as $key2 => $datos2) {
							foreach ($datos2 as $key3 => $datos3) {
								$aux[$key1][$key2][$key3] = $datos3;
								if ($key3 == 'FAMILIA')
								{
									$aux[$key1]['FAMILIA2']['FAMILIA2'] = $datos3;									
								}		
							}
						}
					}
					$resultado->valores = $aux;

				    $aux = [];
			 		foreach ($resultado->valores as $key1 => $datos1) 
					{
							$ok_contraparte = 'si';  
							// Si hay filtro por contraparte y no es la salteo 

							if ($contraparte !== null && $key1 != $contraparte) { continue; /* de $resultado */ } 
							if ($lista_contrapartes !== null && !(in_array($key1,$array_contrapartes))) { continue;  /* de $resultado */ } 

							foreach ($datos1 as $key2 => $datos2) {
									foreach ($datos2 as $key3 => $datos3) {
										$valor = strtoupper($datos3[0]); 

										if ($filtro_pais_servicio !== null && $key3 == 'pais_servicio') 
										{
											if ($valor !== strtoupper($filtro_pais_servicio) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
										}
										if ($filtro_pais !== null && $key3 == 'PAIS') 
										{
											if ($valor !== strtoupper($filtro_pais) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
										}
										
										if ($filtro_familia !== null && $key3 == 'FAMILIA' && $filtro_familia !== 'BBVA-VRM') 
										{
											if ($valor !== strtoupper($filtro_familia) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
										}

if (Session::get('usuario')->cliente['client_id'] == "1226057645" and Session::get('servicio_actual') == 47) // BBVA
{
	

										if ($key3 == 'FAMILIA') 
										{
											if ($vrm == '1') // Solo las VRM
											{
												if (substr(strtoupper($valor),0,3) !== 'VRM' || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
											}
											else 
											{
												if (substr(strtoupper($valor),0,3) == 'VRM' || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
											}
										}
}

										if ($filtro_familia_sub !== null && $key3 == 'FAMILIA_SUB') 
										{
											if ($valor !== strtoupper($filtro_familia_sub) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
										}

										if ($clave_indicador !== null && $valor_texto !== null && $key3 == $clave_indicador ) 
										{
											if ($valor !== strtoupper($valor_texto) || $valor == null) 
											{ $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
										}

										if ($clave_indicador !== null && $key3 == $clave_indicador && $valor_min !== null && $valor_max !== null) 
										{
											if (is_numeric($valor))
											{
											
												if ($valor <  $valor_min  || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
												if ($valor >=  $valor_max || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
											}
											else 
											{
												if ($valor < strtoupper($valor_min) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }
												if ($valor >= strtoupper($valor_max) || $valor == null) { $ok_contraparte = 'no'; continue;  /* de $datos2 */ }	
											}
										}
									}
									if ($ok_contraparte == "no") { continue;  /* de $datos1 */ }
							}
 							if ($ok_contraparte == 'si') { $aux[$key1] = $datos1; }
			 		}
					$resultado->valores = $aux; 
					$resultado->elementro_filtro = $clave_indicador;
					$resultado->vista_filtrada = true;
					return json_encode($resultado);
			 	}
			 	else 
			 	{
					//return $archivo;

					/* Feb 2023: 
					agregamos la posibilidad de ver distintos paneles fitrados por familia
					Para manejar esos filtro, agregamos una columna hidden FAMILIA2 
					si usamos la columna FAMILIA, cuando el usuario usa la casilla de arriba para hacer algun filtro elegido por él, se arruina el filtro automatico que estamos haciendo, 
					y cuando el usuario desmarca, trae todo, 
					porque aplica el filtro el la misma columna, por eso usamos una nueva oculta */ 
			 		$resultado = json_decode($archivo); 
			 		$aux = [];
				    foreach ($resultado->valores as $key1 => $datos1) 
					{
						foreach ($datos1 as $key2 => $datos2) {
							foreach ($datos2 as $key3 => $datos3) {
								$aux[$key1][$key2][$key3] = $datos3;
								if ($key3 == 'FAMILIA')
								{
									$aux[$key1]['FAMILIA2']['FAMILIA2'] = $datos3;									
								}		
							}
						}
					}	
					$resultado->valores = $aux; 
					$resultado->elementro_filtro = $clave_indicador;
					$resultado->vista_filtrada = false;
					return json_encode($resultado);

			 	}
	}

	public static function ledPanelControlCoface(){
		return view('/led/led_panel_control_coface');
	}

	public static function ledPanelControlInfoCoface(){
		//$cliente = Request::input('cliente');
		$cliente		  = Session::get('usuario')->cliente['client_id'];
		//$resp = SQLConnection::backendStoreProcedure('ln_coface', array(), 'select');
		$resp = SQLConnection::backendStoreProcedure('LN_Panel_Control_SAAS_datos', array($cliente,0), 'select');
		// con el segundo parametro en 0 trae todo (clientes inactivos y contratos inactivos tambien)
		foreach($resp as $key => $value){
            if ($value->estado_consulta == 'V'){
                $resp[$key]->estado_consulta = '<i class="fa fa-check text_color_V"  style="font-size:21px" aria-hidden="true"></i>';
            } elseif ($value->estado_consulta == 'A'){
                $resp[$key]->estado_consulta = '<i class="fa fa-exclamation text_color_A"  style="font-size:21px" aria-hidden="true"></i>';
            } else {
                $resp[$key]->estado_consulta = '<i class="fa fa-times text_color_R"  style="font-size:21px" aria-hidden="true"></i>';
            }			
			//--- MODIFICACION POR MOTIVO DE ERROR
			if ( is_null($value->estado) ){
				$resp[$key]->estado = 'Sin Datos';
			}
			//---- FIN DE MODIFICACION
        }
		//
		//return json_encode(['data' => $resp]);
		return json_encode($resp);
	}

	public static function ledPanelControlInfoCofaceNew(){
		//$cliente = Request::input('cliente');
		$cliente		  = Session::get('usuario')->cliente['client_id'];
		//$resp = SQLConnection::backendStoreProcedure('ln_coface', array(), 'select');
		$resp = SQLConnection::backendStoreProcedure('LN_Panel_Control_SAAS_datos', array($cliente,0), 'select');
		// con el segundo parametro en 0 trae todo (clientes inactivos y contratos inactivos tambien)
		foreach($resp as $key => $value){
			//
			self::estadosCoface($value->estado,$value->estado_consulta);
			//
            if ($value->estado_consulta == 'V'){
                $resp[$key]->estado_consulta = '<i class="fa fa-check text_color_V"  style="font-size:21px" aria-hidden="true"></i>';
            } elseif ($value->estado_consulta == 'A'){
                $resp[$key]->estado_consulta = '<i class="fa fa-exclamation text_color_A"  style="font-size:21px" aria-hidden="true"></i>';
            } else {
                $resp[$key]->estado_consulta = '<i class="fa fa-times text_color_R"  style="font-size:21px" aria-hidden="true"></i>';
            }
			//
			self::estadosIndicadoresCoface($value->formales_estado);
			self::estadosIndicadoresCoface($value->blacklist_estado);
			self::estadosIndicadoresCoface($value->fiscales_estado);
			self::estadosIndicadoresCoface($value->contables_estado);
			self::estadosIndicadoresCoface($value->patrimonio_estado);
			self::estadosIndicadoresCoface($value->legales_estado);
			self::estadosIndicadoresCoface($value->bancos_estado);
			self::estadosIndicadoresCoface($value->cheques_estado);
			//--- MODIFICACION POR MOTIVO DE ERROR
			if ( is_null($value->estado) ){
				$resp[$key]->estado = 'Sin Datos';
			}
			//---- FIN DE MODIFICACION
        }
		//
		return json_encode(['data' => $resp]);
	}

	/**
	 * Funcion que formateo
	 * el estado de los indicadores
	 * @access private
	 * @static
	 * @param string el valor
	 */
	private static function estadosIndicadoresCoface(&$value){
		switch($value){
			case 'V':
				$value = "<div title='APROBADO'><svg width='10'  height='10'><rect width='10' height='10' style='fill:#52BA89;'  /></svg></div>";
				break;
			case 'R':
				$value = "<div title='RECHAZADO'><svg width='10'  height='10'><rect width='10' height='10' style='fill:#A52830;'  /></svg></div>";
				break;
			default:
				$value = "<div title='A CONSULTAR'><svg width='10'  height='10'><rect width='10' height='10' style='fill:#FBB63D;'  /></svg></div>";
				break;
		}
	}

	/**
	 * Funcion que formateo
	 * el estado del registro
	 * @access private
	 * @static
	 * @param string el valor
	 */
	private static function estadosCoface(&$value,$codigo){
		switch($codigo){
			case 'A':
				$value = '<label style="color:#FBB63D;">'.$value.'</label>';
				break;
			case 'R':
				$value = '<label style="color:#A52830;">'.$value.'</label>';
				break;
			case 'V':
				$value = '<label style="color:#52BA89;">'.$value.'</label>';
				break;
			default:
				$value = '<label style="color:#000000;">'.$value.'</label>';
				break;
		}
	}


  public static function excelCoface(){


  	$cliente = Session::get('usuario')->cliente['client_id'];
	$resp    = SQLConnection::backendStoreProcedure('LN_Panel_Control_SAAS_datos', array($cliente), 'select');

	$estados = [];
    $estado['V'] = 'Aprobado'; 
    $estado['R'] = 'Rechazado'; 
    $estado['A'] = 'A Consultar'; 
	$estado[NULL] = 'S/D';
	
    $file  = '<table border="1">';
    $file .= '<tr><td>ASEGURADO</td><td>CONTRATO</td><td>ANALIZADO</td><td>C.U.I.T.</td><td>FECHA CONSULTA</td><td>ESTADO ORIGINAL</td><td>ESTADO ACTUAL</td><td>BLACK LIST</td><td>FORMALES</td><td>FISCALES</td><td>CONTABLES</td><td>LEGALES</td><td>BANCOS</td><td>CHEQUES</td></tr>'; 
    foreach($resp as $datos)

    {
      $file .=  '<tr valign="top">';
      $file .= "<td>".$datos->asegurado                  . "</td>" .
                "<td>".$datos->contrato                  . "</td>" .
                "<td>".$datos->analizado                 . "</td>" .
                "<td>".$datos->identificacion            . "</td>" .
                "<td>".$datos->fecha_consulta            . "</td>" .
                "<td>".$estado[$datos->estado_consulta]  . "</td>" . 
                "<td>".($datos->estado ?? 'S/D')        . "</td>" . 
                "<td>".$estado[$datos->blacklist_estado] . "</td>" . 
                "<td>".$estado[$datos->formales_estado]  . "</td>" . 
                "<td>".$estado[$datos->fiscales_estado]  . "</td>" . 
                "<td>".$estado[$datos->contables_estado] . "</td>" . 
                "<td>".$estado[$datos->legales_estado]   . "</td>" . 
                "<td>".$estado[$datos->bancos_estado]    . "</td>" . 
                "<td>".$estado[$datos->cheques_estado]   . "</td>" .
                "</tr>";
    }
    $file .= '</table>'; 
	$fecha = date("Y-m-d");
	header('Content-disposition: attachment; filename=Reporte_Consultas_' . $fecha . '.xls');
	header('Content-type: application/vnd.ms-excel; charset=utf-8');
	$file = utf8_decode($file); 
	//echo $file;
	$response =  array(
        'op' => 'ok',
        'archivo' => 'Reporte_Consultas_' . $fecha . '.xls', 
        'file' => "data:application/vnd.ms-excel;base64,".base64_encode($file)
    );
	die(json_encode($response));
  }


	public static function ledPanelControlFile($cliente=null,$contratista_subcontratista=null){
	    ini_set('memory_limit','4096M');

		ini_set('max_execution_time', 10000); // 1000 segundos
		set_time_limit(0); 


		// el archivo json se genera en español. Después se traducirá cuando se muestra		
		if ($cliente == null){
			$cliente = Request::input('cliente');
		}

		if ($contratista_subcontratista == null) {
			$contratista_subcontratista = Request::input('cs');
		}
		
		// Genera el archivo de la fancy completo, sin filtros
		$filtro_familia  = null;
		$filtro_familia_sub = null;
		$filtro_pais  = null;

		$prodind = [];

		if ( $cliente == '861672084' || $cliente == '5546348' || $cliente == '2254875') 
		{
			if ($contratista_subcontratista == 'C' || $contratista_subcontratista == 'I')
			{
				if ($contratista_subcontratista == 'C') 
					{ $servicio = env('LED_PRODUCTO'); }
				if ($contratista_subcontratista == 'I')
					{ $servicio = env('IMPE_PRODUCTO'); }
				$json = new DashboardJSON($cliente,$servicio);
				$json->generarJSON();
				
			}
		}
		
		if ($contratista_subcontratista == 'C'){
			$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('contrapartes', $cliente, $filtro_pais, $filtro_familia, NULL), 'select');
			//$indic = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('PRODUCTOS_INDICADORES', $cliente,null,null, null,NULL,NULL,null,null,null,null,1,null,null,null,null,null), 'select');
			$indic = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod_mis', array('PRODUCTOS_INDICADORES', $cliente,null,null, null,NULL,NULL,null,null,null,null,1,null,null,null,null,null), 'select');
		}
		elseif ($contratista_subcontratista == 'I') {
			$contrap = SQLConnection::backendStoreProcedure('LED_PANEL_CONTROL_mis', array('contrapartes', 73, $cliente, $filtro_pais, $filtro_familia, NULL), 'select');
			$indic = SQLConnection::backendStoreProcedure('LED_PANEL_CONTROL_mis', array('PRODUCTOS_INDICADORES', 73, $cliente,null,null, null,NULL,NULL,null,null,null,null,1,null,null,null,null,null), 'select');	
		}
		else {
			$contrap = SQLConnection::backendStoreProcedure('LN_subcontratistas_fancy', array('contrapartes', $cliente, $filtro_pais, $filtro_familia_sub, null), 'select');
			$indic = SQLConnection::backendStoreProcedure('LN_subcontratistas_fancy', array('PRODUCTOS_INDICADORES', $cliente,null,null, NULL), 'select');
		}
		// ---------------
		foreach ($indic as $key => $idata) {
			// ESTA DEFINICIÓN NO SERIA IGUAL QUE "$map = $idata->producto_id;" ?
			$map = function ($idata) {
				return $idata->producto_id;
			};
			$apariciones = array_count_values(array_map($map, $indic));

			$buscar = ($idata->clave_indicador=='RAZON_SOCIAL' || $idata->clave_indicador=='FAMILIA' || $idata->clave_indicador=='PAIS' || $idata->clave_indicador=='pais_servicio'||$idata->clave_indicador=='impe_status');

			// PARA TRADUCCIONES
			if( $buscar && $idata->clave_indicador!=='impe_status'){
			  	$idata->etiqueta_indicador =  $idata->etiqueta;
			}else{
			  	$idata->etiqueta_indicador = $idata->etiqueta_indicador;
			}

			$prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['clave_indicador'] = $idata->clave_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;
			$prodind[$idata->producto_id][$idata->clave_indicador]['nombre_padre'] = ($apariciones[$idata->producto_id] > 1) ? $idata->etiqueta : 0;
			$prodind[$idata->producto_id][$idata->clave_indicador]['alignment'] = $idata->alignment;
			$prodind[$idata->producto_id][$idata->clave_indicador]['locked'] = ($idata->locked == 1) ? true : false;
			$prodind[$idata->producto_id][$idata->clave_indicador]['width'] = (int)$idata->width;
			$prodind[$idata->producto_id][$idata->clave_indicador]['separator'] = $idata->separator;
			$prodind[$idata->producto_id][$idata->clave_indicador]['decimals'] = $idata->decimals;
			$prodind[$idata->producto_id][$idata->clave_indicador]['buscar'] =   $buscar ? true: false ;
			if ($contratista_subcontratista=='S'){
			  $prodind[$idata->producto_id][$idata->clave_indicador]['buscar'] = ($idata->clave_indicador=='RAZON_SOCIAL' || $idata->clave_indicador=='FAMILIA' || $idata->clave_indicador=='PAIS' || $idata->clave_indicador=='RAZON_SOCIAL_SUB' || $idata->clave_indicador=='FAMILIA_SUB' || $idata->clave_indicador=='PAIS_SUB') ? true: false ;
			}
			$clave_indicador[] = $idata->clave_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['icono'] = $idata->class_icon;
			$prodind[$idata->producto_id][$idata->clave_indicador]['nombre_producto'] = $idata->nombre_producto;
			$prodind[$idata->producto_id][$idata->clave_indicador]['nombre_indicador'] = $idata->nombre_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['producto'] = $idata->producto;
			$prodind[$idata->producto_id][$idata->clave_indicador]['indicador'] = $idata->indicador;
		}
		
		$cant_hijos = count(array_unique($clave_indicador));
		
		$valores = [];
		//Sólo para PAE. porque el producto aún no existe.
		if ($cliente == '2046807993') {
			foreach ($prodind as $key => $value) {
				if (isset($value['NIVEL_RIESGO'])) {
					unset($prodind[$key]['NIVEL_RIESGO']);
				}
				if (isset($value['DEP_ECON'])) {
					unset($prodind[$key]['DEP_ECON']);
				}
			}
		}
		$titulos = $prodind;

		//var_dump($titulos); die(); 
		$vista_filtrada = false;

		/* cuando se queria un panel de contrapartes sin gestion activa */
		if ($contratista_subcontratista == 'C')	{
			/* cuando se queria un panel de contrapartes sin gestion activa */

			/* 14/12/2022: Si el cliente tienen los datos en la tabla PANEL_CONTROL_JSON directamente arma el panel con los datos de esa tabla, sino va a buscar todos los datos como antes */
			$params = array('tiene_tabla_json', $cliente, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,47);
			$tiene_tabla_json = (SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod_mis', $params, 'selectOne'))->respuesta;
			var_dump('Por tabla json: ' . $tiene_tabla_json);
			/*
			if ($tiene_tabla_json == 'SI') {
				$params = array('resultado_panel', $cliente, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,47);
				$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod_mis', $params, 'select');
				//var_dump($led);die(); 
			}*/
			
			/* 
			21/11/2023: Va llamando de a grupos, para que no se cuelgue el sql. 
			Nro registro entre 1 - 10000 / 10001 - 20000....
			*/
			if ($tiene_tabla_json == 'SI') {
				$grupo = 1;
				$led = [];
				while ($grupo > 0) {
					$params = array('resultado_panel', $cliente, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,47,$grupo);
					$led1 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod_mis', $params, 'select');
					if (empty($led1)) // si no devolvio nada, lo pone en 0 para que termine
					{
						$grupo = 0;
					}
					else 
					{
						var_dump('grupo: ' . $grupo);
						$led = array_merge($led, $led1);
						$grupo += 1;
					} 
				}  

			}
			/**/
			 else {
				$params = array('VALORES_GRILLA_EXT', $cliente, $filtro_pais, $filtro_familia, null, null, null, null, null, null, null, null, null,  null,null,null);
				$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod_mis', $params, 'select');
			}
		} elseif ($contratista_subcontratista == 'I') {
			$params = array('VALORES_GRILLA_EXT', 73, $cliente, $filtro_pais, $filtro_familia, null, null, null, null, null, null, null, null, null,  null,null,null);
			$led	= SQLConnection::backendStoreProcedure('LED_PANEL_CONTROL_mis', $params, 'select');	
		} else {
			$params = array('VALORES_GRILLA_EXT ', $cliente, $filtro_pais, $filtro_familia_sub, null, null, null, null, null, null, null, null, null, null,null,null);
			$led	= SQLConnection::backendStoreProcedure('LN_subcontratistas_fancy', $params, 'select');
		}

		$pi = $indic; 
		$indices 		= [];
		$pais			= [];
		$familia 		= [];
		$familia_sub 	= [];
		$mostrar_ps 		= 0;
		$pais_servicio	= [];
		$impe_status	= [];
		foreach ($led as $key => $datos) {
			
			if (isset($datos->color_personalizado)) {
				$datos->color	 = $datos->color_personalizado;
			}
			if (isset($datos->textcolor_personalizado)) {
				$datos->textcolor = $datos->textcolor_personalizado;
			}
			if (isset($datos->svg_data_personalizado)) {
				$datos->svg_data  = $datos->svg_data_personalizado;
			}
			
			if(isset($datos->pais_servicio)){
				$pais_servicio[$key]['info'] = $datos->pais_servicio;
				$pais_servicio[$key]['country_name_servicio'] = $datos->country_name_servicio;
				$pais_servicio[$key]['cls'] = 'flag-icon-'.$datos->pais_servicio;
				$pais_servicio[$key]['val'] = '<span class=flag-icon flag-icon-background flag-icon-'.$datos->pais_servicio.'></span>';
			}


			if($datos->clave_indicador == 'impe_status' && $datos->valor !== null){
				$impe_status[$key]['info'] = '<span class="circle" title="' . $datos->textcaption . '" style="background:#'.$datos->color.';">&nbsp;</span>'; 
				$impe_status[$key]['valor'] = $datos->valor;
				$impe_status[$key]['color'] = $datos->color;
				$impe_status[$key]['textcolor']  = $datos->textcolor;
				$impe_status[$key]['svg_data']  = $datos->svg_data;
				$impe_status[$key]['info']  = $datos->textcaption;
			}
			$pais[$key]['info'] = $datos->PAIS;
			$pais[$key]['cls'] = 'flag-icon-'.$datos->PAIS;
			$pais[$key]['val'] = '<span  class=flag-icon flag-icon-background flag-icon-'.$datos->PAIS.'></span>';
			$pais[$key]['country_name'] = $datos->country_name ?? '';
			
			$familia[$key]['value'] = $datos->FAMILIA;			
			if ($contratista_subcontratista == 'C' OR $contratista_subcontratista == 'I')
			{
			$valores[$datos->contraparte]['pais_servicio']['pais_servicio'] = array($datos->pais_servicio,'', '', '', '','');
			$valores[$datos->contraparte]['pais_servicio']['country_name_servicio'] = array($datos->country_name_servicio,'', '', '', '','');
			$valores[$datos->contraparte]['PAIS']['PAIS'] = array($datos->PAIS,'', '', '', '','');
			$valores[$datos->contraparte]['PAIS']['COUNTRY_NAME'] = array($datos->country_name,'', '', '', '','');
			$valores[$datos->contraparte]['FAMILIA']['FAMILIA'] = array(strtoupper($datos->FAMILIA),'', '', '', '','');
			$valores[$datos->contraparte]['RAZON_SOCIAL']['RAZON_SOCIAL'] = array(strtoupper($datos->RAZON_SOCIAL).' <div style="display:none;">'.$datos->identificacion.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte.'</div>','', '', '', '','');
			$valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->cell_data,$datos->textcaption,$datos->texto,$datos->textcolor);
			}
			if ($contratista_subcontratista=='S')
			{
			$familia_sub[$key]['value'] = $datos->FAMILIA_SUB;
			$valores[$datos->contraparte_sub]['PAIS']['PAIS'] = array($datos->PAIS,'', '', '', '','');
			$valores[$datos->contraparte_sub]['FAMILIA']['FAMILIA'] = array(strtoupper($datos->FAMILIA),'', '', '', '','');
			$valores[$datos->contraparte_sub]['RAZON_SOCIAL']['RAZON_SOCIAL'] = array(strtoupper($datos->RAZON_SOCIAL).' <div style="display:none;">'.$datos->identificacion.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte.'</div>','', '', '', '','');
			$valores[$datos->contraparte_sub]['FAMILIA_SUB']['FAMILIA_SUB'] = array($datos->FAMILIA_SUB,'', '', '', '','');
			$valores[$datos->contraparte_sub]['RAZON_SOCIAL_SUB']['RAZON_SOCIAL_SUB'] = array($datos->RAZON_SOCIAL_SUB.' <div style="display:none;">'.$datos->identificacion_sub.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte_sub.'</div>','', '', '', '','');
			$valores[$datos->contraparte_sub]['DESDE']['DESDE'] = array($datos->DESDE,'', '', '', '','');
			$valores[$datos->contraparte_sub]['HASTA']['HASTA'] = array($datos->HASTA,'', '', '', '','');
			$valores[$datos->contraparte_sub][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->cell_data,$datos->textcaption,$datos->texto,$datos->textcolor);
			}

		}

		$impe_status	= array_map("unserialize", array_unique(array_map("serialize", $impe_status)));
		$aux = [];
		foreach ($impe_status as $key => $row) {
		    $aux[$key] = $row['valor'];
		}

		array_multisort($aux, SORT_ASC, $impe_status);

		$pais_servicio	= array_map("unserialize", array_unique(array_map("serialize", $pais_servicio)));
		$pais	   		= array_map("unserialize", array_unique(array_map("serialize", $pais)));
		$familia		= array_map("unserialize", array_unique(array_map("serialize", $familia)));
		$familia_sub	= array_map("unserialize", array_unique(array_map("serialize", $familia_sub)));
		foreach ($valores as $valores_key => $valores_value) {
			foreach ($pi as $pi_key => $pi_value) {
				if (!isset($valores_value[$pi_value->producto_id][$pi_value->clave_indicador])) {
					$valores[$valores_key][$pi_value->producto_id][$pi_value->clave_indicador][] = '';
				}
			}
		}
		
		//var_dump($valores); die(); 
		if (!file_exists(env('PATH_COMPARTIDO') .  '/LED-PANEL/' . $cliente)) {
			mkdir(env('PATH_COMPARTIDO') .  '/LED-PANEL/' . $cliente, 0777, true);
		}
		$fecha = date('Ymd-Hi');
		
		if ($contratista_subcontratista == 'C') {
			/* cuando se queria un panel de contrapartes sin gestion activa */
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-' . $fecha . '.bkp'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel.json';
		} elseif ($contratista_subcontratista == 'I') {
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-impe-' . $fecha . '.bkp'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-impe.json'; 
		} else {
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub-' . $fecha . '.bkp'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub.json'; 	
		}		

		$resp = json_encode(['valores' => $valores,'titulos' => $titulos,'cant_hijos' => $cant_hijos,'pais' => $pais,'familia' => $familia,'familia_sub' => $familia_sub,'vista_filtrada' => $vista_filtrada,'pais_servicio' => $pais_servicio,'impe_status' => $impe_status]); 

		// var_dump($resp); die(); 
		if (sizeof($valores) > 0){
			$aux = file_put_contents($file_actual, $resp); 
			$aux2 = file_put_contents($file, $resp);
		}
	}
	
	/**
	 * Led panel control retorna la vista, que luego consume por medio de un ajax la información del panel de control.
	 *
	 * @return laravel View
	 */

	public static function ledPanelControlFileAnterior($cliente=null,$contratista_subcontratista=null){
		ini_set('memory_limit','4096M');	
		ini_set('max_execution_time', 10000); // 1000 segundos
		set_time_limit(0); 
		// el archivo json se genera en español. Después se traducirá cuando se muestra		
		if ($cliente == null){
			$cliente = Request::input('cliente');
		}

		if ($contratista_subcontratista == null) {
			$contratista_subcontratista = Request::input('cs');
		}
		// Genera el archivo de la fancy completo, sin filtros
		$filtro_familia  = null;
		$filtro_familia_sub = null;
		$filtro_pais  = null;

		$prodind = [];
		
		if ($contratista_subcontratista == 'C'){
			$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('contrapartes', $cliente, $filtro_pais, $filtro_familia, NULL), 'select');
			$indic = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('PRODUCTOS_INDICADORES', $cliente,null,null, null,NULL,NULL,null,null,null,null,1,null,null,null,null,null), 'select');
		}
		elseif ($contratista_subcontratista == 'I') {
			$contrap = SQLConnection::backendStoreProcedure('LED_PANEL_CONTROL_mis', array('contrapartes', 73, $cliente, $filtro_pais, $filtro_familia, NULL), 'select');
			$indic = SQLConnection::backendStoreProcedure('LED_PANEL_CONTROL_mis', array('PRODUCTOS_INDICADORES', 73, $cliente,null,null, null,NULL,NULL,null,null,null,null,1,null,null,null,null,null), 'select');	
		}
		else {
			$contrap = SQLConnection::backendStoreProcedure('LN_subcontratistas_fancy', array('contrapartes', $cliente, $filtro_pais, $filtro_familia_sub, null), 'select');
			$indic = SQLConnection::backendStoreProcedure('LN_subcontratistas_fancy', array('PRODUCTOS_INDICADORES', $cliente,null,null, NULL), 'select');
		}
		//echo(var_dump($indic)); die();
		//Traducciones::$blade = 'led_panel_control';
		//SQLConnection::obtenerTraducciones(Traducciones::$blade);
		foreach ($indic as $key => $idata) {
			$map = function ($idata) {
				return $idata->producto_id;
			};
			$apariciones = array_count_values(array_map($map, $indic));

			$buscar = ($idata->clave_indicador=='RAZON_SOCIAL' || $idata->clave_indicador=='FAMILIA' || $idata->clave_indicador=='PAIS' || $idata->clave_indicador=='pais_servicio'||$idata->clave_indicador=='impe_status');
			//para traducciones.
			if( $buscar && $idata->clave_indicador!=='impe_status'){
			  //$idata->etiqueta_indicador =  \Traducciones::get($idata->etiqueta);
			  $idata->etiqueta_indicador =  $idata->etiqueta;
			}else{
			  //$idata->etiqueta_indicador = \Traducciones::get($idata->etiqueta_indicador);
			  $idata->etiqueta_indicador = $idata->etiqueta_indicador;
			}
			//$idata->nombre_producto = \Traducciones::get($idata->nombre_producto);
			//$idata->nombre_indicador = \Traducciones::get($idata->nombre_indicador);

			$prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;//($apariciones[$idata->producto_id] > 1) ? $idata->etiqueta_indicador : $idata->etiqueta;
			$prodind[$idata->producto_id][$idata->clave_indicador]['clave_indicador'] = $idata->clave_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;
			$prodind[$idata->producto_id][$idata->clave_indicador]['nombre_padre'] = ($apariciones[$idata->producto_id] > 1) ? $idata->etiqueta : 0;
			$prodind[$idata->producto_id][$idata->clave_indicador]['alignment'] = $idata->alignment;
			$prodind[$idata->producto_id][$idata->clave_indicador]['locked'] = ($idata->locked == 1) ? true : false;
			$prodind[$idata->producto_id][$idata->clave_indicador]['width'] = (int)$idata->width;
			$prodind[$idata->producto_id][$idata->clave_indicador]['separator'] = $idata->separator;
			$prodind[$idata->producto_id][$idata->clave_indicador]['decimals'] = $idata->decimals;
			$prodind[$idata->producto_id][$idata->clave_indicador]['buscar'] =   $buscar ? true: false ;
			if ($contratista_subcontratista=='S'){
			  $prodind[$idata->producto_id][$idata->clave_indicador]['buscar'] = ($idata->clave_indicador=='RAZON_SOCIAL' || $idata->clave_indicador=='FAMILIA' || $idata->clave_indicador=='PAIS' || $idata->clave_indicador=='RAZON_SOCIAL_SUB' || $idata->clave_indicador=='FAMILIA_SUB' || $idata->clave_indicador=='PAIS_SUB') ? true: false ;
			}
			$clave_indicador[] = $idata->clave_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['icono'] = $idata->class_icon;
			$prodind[$idata->producto_id][$idata->clave_indicador]['nombre_producto'] = $idata->nombre_producto;
			$prodind[$idata->producto_id][$idata->clave_indicador]['nombre_indicador'] = $idata->nombre_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['producto'] = $idata->producto;
			$prodind[$idata->producto_id][$idata->clave_indicador]['indicador'] = $idata->indicador;
		}
		
		$cant_hijos = count(array_unique($clave_indicador));
		
		$valores = [];
		//Sólo para PAE. porque el producto aún no existe.
		if ($cliente == '2046807993') {
			foreach ($prodind as $key => $value) {
				if (isset($value['NIVEL_RIESGO'])) {
					unset($prodind[$key]['NIVEL_RIESGO']);
				}
				if (isset($value['DEP_ECON'])) {
					unset($prodind[$key]['DEP_ECON']);
				}
			}
		}
		$titulos = $prodind;
		$vista_filtrada = false;

		/* cuando se queria un panel de contrapartes sin gestion activa */
		/*
		$vigente = Request::input('vigente') ?? 1;
		*/
		if ($contratista_subcontratista == 'C')	{
			/* cuando se queria un panel de contrapartes sin gestion activa */
			/*
			if ($vigente == 0)
			{
			$params = array('VALORES_GRILLA_EXT', $cliente,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null,47,0);
			$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod_vigente_o_novigente', $params, 'select');
			}
			else 
			{ */
			$params = array('VALORES_GRILLA_EXT', $cliente, $filtro_pais, $filtro_familia, null, null, null, null, null, null, null, null, null,  null,null,null);
			$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod_mis', $params, 'select');
			// var_dump($led); die();
			/* } */
		}
		elseif ($contratista_subcontratista == 'I') {
			$params = array('VALORES_GRILLA_EXT', 73, $cliente, $filtro_pais, $filtro_familia, null, null, null, null, null, null, null, null, null,  null,null,null);
			$led	= SQLConnection::backendStoreProcedure('LED_PANEL_CONTROL_mis', $params, 'select');	
		}
		else {
			$params = array('VALORES_GRILLA_EXT ', $cliente, $filtro_pais, $filtro_familia_sub, null, null, null, null, null, null, null, null, null, null,null,null);
			$led	= SQLConnection::backendStoreProcedure('LN_subcontratistas_fancy', $params, 'select');
		}
		
		$pi = $indic; 
		$indices 		= [];
		$pais			= [];
		$familia 		= [];
		$familia_sub 	= [];
		$mostrar_ps 		= 0;
		$pais_servicio	= [];
		$impe_status	= [];
		foreach ($led as $key => $datos) {

			//valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);
			if (isset($datos->color_personalizado)) {
				$datos->color	 = $datos->color_personalizado;
			}
			if (isset($datos->textcolor_personalizado)) {
				$datos->textcolor = $datos->textcolor_personalizado;
			}
			if (isset($datos->svg_data_personalizado)) {
				$datos->svg_data  = $datos->svg_data_personalizado;
			}
			
			//$datos->textcaption = \Traducciones::get($datos->textcaption);
			//$datos->texto = \Traducciones::get($datos->texto);
			if(isset($datos->pais_servicio)){
				$pais_servicio[$key]['info'] = $datos->pais_servicio;
				$pais_servicio[$key]['country_name_servicio'] = $datos->country_name_servicio;
				$pais_servicio[$key]['cls'] = 'flag-icon-'.$datos->pais_servicio;
				$pais_servicio[$key]['val'] = '<span class=flag-icon flag-icon-background flag-icon-'.$datos->pais_servicio.'></span>';
			}


			if($datos->clave_indicador == 'impe_status' && $datos->valor !== null){
				$impe_status[$key]['info'] = '<span class="circle" title="' . $datos->textcaption . '" style="background:#'.$datos->color.';">&nbsp;</span>'; 
				$impe_status[$key]['valor'] = $datos->valor;
				$impe_status[$key]['color'] = $datos->color;
				$impe_status[$key]['textcolor']  = $datos->textcolor;
				$impe_status[$key]['svg_data']  = $datos->svg_data;
				$impe_status[$key]['info']  = $datos->textcaption;
				/*
				$valores[$datos->contraparte][$datos->producto_id]['impe_status']['impe_status'] = array(
					$datos->textcaption,
					//'<span class="circle" title="'.$datos->textcaption.'" style="background:#'.$datos->color . '"></span>',
					'', '', '', '','');
				$valores[$datos->contraparte][$datos->producto_id]['impe_status']['impevalor'] = array($datos->valor, '', '', '', '','');	
				$valores[$datos->contraparte][$datos->producto_id]['impe_status']['impecolor'] = array($datos->color, '', '', '', '','');	
				$valores[$datos->contraparte][$datos->producto_id]['impe_status']['impetext']  = array($datos->textcaption, '', '', '', '','');	*/
			}
			$pais[$key]['info'] = $datos->PAIS;
			$pais[$key]['cls'] = 'flag-icon-'.$datos->PAIS;
			$pais[$key]['val'] = '<span  class=flag-icon flag-icon-background flag-icon-'.$datos->PAIS.'></span>';
			$pais[$key]['country_name'] = $datos->country_name ?? '';
			
			$familia[$key]['value'] = $datos->FAMILIA;			
			if ($contratista_subcontratista == 'C' OR $contratista_subcontratista == 'I')
			{
			$valores[$datos->contraparte]['pais_servicio']['pais_servicio'] = array($datos->pais_servicio,'', '', '', '','');
			$valores[$datos->contraparte]['pais_servicio']['country_name_servicio'] = array($datos->country_name_servicio,'', '', '', '','');
			$valores[$datos->contraparte]['PAIS']['PAIS'] = array($datos->PAIS,'', '', '', '','');
			$valores[$datos->contraparte]['PAIS']['COUNTRY_NAME'] = array($datos->country_name,'', '', '', '','');
			$valores[$datos->contraparte]['FAMILIA']['FAMILIA'] = array(strtoupper($datos->FAMILIA),'', '', '', '','');
			$valores[$datos->contraparte]['RAZON_SOCIAL']['RAZON_SOCIAL'] = array(strtoupper($datos->RAZON_SOCIAL).' <div style="display:none;">'.$datos->identificacion.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte.'</div>','', '', '', '','');
			$valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->cell_data,$datos->textcaption,$datos->texto,$datos->textcolor);
			}
			if ($contratista_subcontratista=='S')
			{
			$familia_sub[$key]['value'] = $datos->FAMILIA_SUB;
			$valores[$datos->contraparte_sub]['PAIS']['PAIS'] = array($datos->PAIS,'', '', '', '','');
			$valores[$datos->contraparte_sub]['FAMILIA']['FAMILIA'] = array(strtoupper($datos->FAMILIA),'', '', '', '','');
			$valores[$datos->contraparte_sub]['RAZON_SOCIAL']['RAZON_SOCIAL'] = array(strtoupper($datos->RAZON_SOCIAL).' <div style="display:none;">'.$datos->identificacion.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte.'</div>','', '', '', '','');
			$valores[$datos->contraparte_sub]['FAMILIA_SUB']['FAMILIA_SUB'] = array($datos->FAMILIA_SUB,'', '', '', '','');
			$valores[$datos->contraparte_sub]['RAZON_SOCIAL_SUB']['RAZON_SOCIAL_SUB'] = array($datos->RAZON_SOCIAL_SUB.' <div style="display:none;">'.$datos->identificacion_sub.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte_sub.'</div>','', '', '', '','');
			$valores[$datos->contraparte_sub]['DESDE']['DESDE'] = array($datos->DESDE,'', '', '', '','');
			$valores[$datos->contraparte_sub]['HASTA']['HASTA'] = array($datos->HASTA,'', '', '', '','');
			$valores[$datos->contraparte_sub][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->cell_data,$datos->textcaption,$datos->texto,$datos->textcolor);
			}

		}
		$impe_status	= array_map("unserialize", array_unique(array_map("serialize", $impe_status)));
		$aux = [];
		foreach ($impe_status as $key => $row) {
		    $aux[$key] = $row['valor'];
		}

		array_multisort($aux, SORT_ASC, $impe_status);

		$pais_servicio	= array_map("unserialize", array_unique(array_map("serialize", $pais_servicio)));
		$pais	   		= array_map("unserialize", array_unique(array_map("serialize", $pais)));
		$familia		= array_map("unserialize", array_unique(array_map("serialize", $familia)));
		$familia_sub	= array_map("unserialize", array_unique(array_map("serialize", $familia_sub)));
		foreach ($valores as $valores_key => $valores_value) {
			foreach ($pi as $pi_key => $pi_value) {
				if (!isset($valores_value[$pi_value->producto_id][$pi_value->clave_indicador])) {
					$valores[$valores_key][$pi_value->producto_id][$pi_value->clave_indicador][] = '';
				}
			}
		}
		if (!file_exists(env('PATH_COMPARTIDO') .  '/LED-PANEL/' . $cliente)) {
						mkdir(env('PATH_COMPARTIDO') .  '/LED-PANEL/' . $cliente, 0777, true);
				}
		$fecha = date('Ymd-Hi');
		if ($contratista_subcontratista == 'C')
		{
			/* cuando se queria un panel de contrapartes sin gestion activa */
			/*
			if ($vigente == 0)
			{
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-no-activos' . $fecha . '.bkp'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-no-activos.json'; 	
			}
			else 
			{*/
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-' . $fecha . '.bkp'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel.json'; 
			/*}*/
		}

		elseif ($contratista_subcontratista == 'I') {
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-impe-' . $fecha . '.bkp'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-impe.json'; 
		}

		else 
		{
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub-' . $fecha . '.bkp'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub.json'; 	
		}
		/*
		echo(var_dump($file_actual));
		echo(var_dump($file)); 
		echo(var_dump(sizeof($valores)));
		*/
		
		

		$resp = json_encode(['valores' => $valores,'titulos' => $titulos,'cant_hijos' => $cant_hijos,'pais' => $pais,'familia' => $familia,'familia_sub' => $familia_sub,'vista_filtrada' => $vista_filtrada,'pais_servicio' => $pais_servicio,'impe_status' => $impe_status]); 

		if (sizeof($valores) > 0)
		{
		$aux = file_put_contents($file_actual, $resp); 
		$aux2 = file_put_contents($file, $resp);
		
		}
	}
	
	/**
	 * Led panel control retorna la vista, que luego consume por medio de un ajax la información del panel de control.
	 *
	 * @return laravel View
	 */
	public static function ledPanelControlSubcontratista(){
	  	return self::ledPanelControl('S');
	}
		
	public static function ledPanelControl($contratista_subcontratista='C') {
	    $cliente = Session::get('usuario')->cliente['client_id'];
  	    $vrm = Request::input('vrm') ?? '1'; 
		$servicio_actual  = Session::get('servicio_actual');
		if ($servicio_actual == '73') {
			$contratista_subcontratista = 'I';
		}

		$cliente		  = Session::get('usuario')->cliente['client_id'];
		$nombre_grafico   = Request::input('nombre_grafico');
		$all			  = Request::input();
		$inicial_etiqueta = '';
		$nombre_etiqueta  = Request::input('valor_etiqueta');//ej: '0-20' , '21-40'

		$clave_indicador  = Request::input('clave_indicador');
		$valor_min		= Request::input('valor_min');
		$valor_max		= Request::input('valor_max');
		$filtro_pais_servicio = Request::input('filtro_pais_servicio');
		$valor_texto	  = !empty(Request::input('valor_texto')) ? Request::input('valor_texto') : NULL;
		$country_code = !empty(Request::input('country_code')) ? Request::input('country_code') : NULL;
    	$familia = !empty(Request::input('familia')) ? Request::input('familia') : NULL;

		$contraparte = !empty(Request::input('contraparte')) ? ( (Request::input('contraparte') > 0) ? Request::input('contraparte') : NULL ) : NULL;
		$lista_contrapartes			= ( '' !==Request::input('lista_contrapartes')) ? Request::input('lista_contrapartes') : null;

		if ($contratista_subcontratista == 'C'){
		    $navtext = "Panel de Control - Contrapartes";
		} elseif ($contratista_subcontratista == 'I') {
			$navtext = "Panel de Control - Imperium";
		} else {
		    $navtext = "Panel de Control - Subcontratistas";
		}

		$icon_subc = '';
		$tiene_subc = 0; 
		
		if ($contratista_subcontratista == 'C' OR $contratista_subcontratista == 'I') {
			return view('/led/led_panel_control')->with(compact(['filtro_pais_servicio','navtext','tiene_subc','icon_subc', 'clave_indicador', 'valor_min', 'valor_max', 'valor_texto', 'country_code', 'familia', 'contraparte','contratista_subcontratista','lista_contrapartes','vrm']));
		} else {

			return view('/led/led_panel_control_subcontratista')->with(compact(['navtext','tiene_subc','icon_subc', 'clave_indicador', 'valor_min', 'valor_max', 'valor_texto', 'country_code', 'familia', 'contraparte','contratista_subcontratista']));
		} 
	}

	public static function test(){
		$cliente		  = Session::get('usuario')->cliente['client_id'];
		$nombre_grafico   = Request::input('nombre_grafico');
		$all			  = Request::input();
		$inicial_etiqueta = '';
		$nombre_etiqueta  = Request::input('valor_etiqueta');//ej: '0-20' , '21-40'
		$valor_indicador  = Request::input('indicador');
		$valor_min		= Request::input('min');
		$valor_max		= Request::input('max');
		$valor_texto	  = Request::input('valor_texto');
		// dd($all);
	}
	/*
		public static function ledPanelControl() {
		$cliente = Session::get('usuario')->cliente['client_id'];
		$state_save = Request::input('state_save');
		$paises = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('paises', $cliente,NULL,NULL, null), 'select');
		$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,NULL,NULL,NULL));

		$filter_cc = null != Request::input('country_code_chk') ? 1 : 0;
		$filtro_pais = ($filter_cc > 0) ? ( null != Request::input('country_code') ? Request::input('country_code') : null ) : null;

		$filter_fam = null != Request::input('familia_chk') ? 1 : 0;
		$filtro_familia = ($filter_fam > 0) ? ( null != Request::input('familia') ? Request::input('familia') : null ) : null;


		$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, $filtro_pais, $filtro_familia, null), 'select');

		$productos_grilla = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla', $cliente,NULL,NULL, null), 'select');


		//self::calcularScoreProductos($cliente);
		$tiene_subc = 0;
		$icon_subc = '';
		$tiene_control_ingreso = 0;

		$productos = [];
		foreach ($productos_grilla as $key => $pdata) {
			$productos[$pdata->producto_id]['etiqueta'] = $pdata->etiqueta;
			$productos[$pdata->producto_id]['producto_id'] = $pdata->producto_id;
			$productos[$pdata->producto_id]['class_icon'] = $pdata->class_icon;

			$tiene_subc = ($tiene_subc == 0) ? ($pdata->subcontratistas > 0 ? 1 : 0) : $tiene_subc;
			if($pdata->subcontratistas > 0) {
				$icon_subc = $pdata->class_icon;
			}

			$tiene_control_ingreso = ($tiene_control_ingreso == 0) ? ($pdata->control_ingreso > 0 ? 1 : 0) : $tiene_control_ingreso;
		}


		$prodind = [];
		$indic = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES', $cliente,NULL,NULL, null), 'select');

		foreach ($indic as $key => $idata) {
			$prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;

			$op = null;
			if(null != $idata->opciones) {
				$t1 = explode('^', $idata->opciones);
				$text = explode('|', $t1[0]);
				$values = explode('|', $t1[1]);
				$op = array('text' => $text, 'values' => $values);
			}
			$prodind[$idata->producto_id][$idata->clave_indicador]['opciones'] = $op;

		}


		$valores = [];
		$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA_EXT', $cliente, $filtro_pais, $filtro_familia, null), 'select');
		foreach ($led as $datos) {
		//valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);

			if (isset($datos->color_personalizado))	 $datos->color	 = $datos->color_personalizado;
			if (isset($datos->textcolor_personalizado)) $datos->textcolor = $datos->textcolor_personalizado;
			if (isset($datos->svg_data_personalizado))  $datos->svg_data  = $datos->svg_data_personalizado;

			$valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption,$datos->texto);
		}

		$navtext = "Panel de Control - Contrapartes";

		$motivos_killer = [];
		$killer = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, null), 'select');
	foreach ($killer as $data) {
			$motivos_killer[$data->contraparte] = str_replace('; ',"\n",$data->detalle_killer);
	}
	
		return view('/led/led_panel_control')->with(compact(['paises', 'familias', 'contrap', 'filter_cc', 'filtro_pais', 'filter_fam', 'filtro_familia', 'productos', 'tiene_subc', 'icon_subc', 'tiene_control_ingreso', 'prodind', 'valores', 'navtext','state_save','motivos_killer']));
	}

*/


	/*
		public function ledExcelPanelControl(){
			$cliente = Session::get('usuario')->cliente['client_id'];
			$ids = null != Request::input('ids') ? Request::input('ids') : null;

			//$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, null, null, null), 'select');
			$contrap = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, $ids), 'select');

			$productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla', $cliente,NULL,NULL, null), 'select');
			$ind = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES', $cliente,NULL,NULL, null), 'select');


			foreach ($ind as $data) {
				$prodind[$data->etiqueta][$data->indicador]['etiqueta'] = $data->etiqueta_indicador;
				$prodind[$data->etiqueta][$data->indicador]['tipo_dato'] = $data->tipo_dato;
				$prodind[$data->etiqueta][$data->indicador]['clave_indicador'] = $data->clave_indicador;
			}

			foreach ($prodind as $nombre_producto => $indicadores) {
				foreach ($indicadores as $key => $data) {
					$aind[] = $key;
				}
			}
			

			$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA', $cliente, null, null, null), 'select');
			foreach ($led as $datos) {
				//$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data);
				if(in_array($datos->indicador, $aind)) {
					$valores[$datos->contraparte][$datos->indicador] = $datos->valor;
				}
			}


			$file = 'PAIS' . "\t" . 'FAMILIA' . "\t" . 'RAZON SOCIAL' . "\t" . "IDENTIFICACION";

			foreach ($prodind as $nombre_producto => $ìndicadores) {
				if (!empty($ìndicadores)) {
					foreach ($ìndicadores as $fld => $data_indicador) {
						$file .= "\t" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")";
					}
				}
				else {
					$file .= "\t" . $nombre_producto;
				}
			}

			foreach($contrap as $contraparte){
				$file .=  "\n";
				$file .= $contraparte->country_name . "\t" .
							$contraparte->nombre_familia . "\t" .
							$contraparte->nombre_persona . "\t" .
							$contraparte->abreviatura . " " . $contraparte->numero;

				foreach ($aind as $k => $id) {
					$file .= "\t" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "");
				}
			}


			header('Content-disposition: attachment; filename=led_panel_control_' . $cliente . '.xls');
			header('Content-type: application/vnd.ms-excel; charset=utf-8');
			echo $file;

		}
	*/

	public function ledExcelPanelControlTest(){
		ini_set('memory_limit','4096M');
		ini_set('max_execution_time', 10000); // 1000 segundos
		set_time_limit(0); 
		//
		$servicio_actual  = Request::input('servicio_excel') ?? Session::get('servicio_actual');
		$cliente          = Request::input('cliente_excel')  ?? Session::get('usuario')->cliente['client_id'];
		$cron             = Request::input('cliente_excel')  ? 'SI' : 'NO';
		$ids = Request::input('data') ? Request::input('data') : null; // contrapartes recibidos
		if ( is_null($ids) ){
			return json_encode(['error' => 1,'mensaje' => 'Sin datos a procesar.']);
		}
		$contrap_str = implode(',',$ids);
		//
		$periodo_historico = null; 
		$periodo_archivo = Request::input('periodo') ?? null;
		if ($periodo_archivo !== null) {
			/* El archivo de un mes, tiene los datos del periodo_anterior 
			Por ejemplo: El panel al 31/01/2022 tienen los datos del periodo 202112 */ 
			$fecha = substr($periodo_archivo,0,4) . '-' . substr($periodo_archivo,4,2) . '-01';
			$date = new DateTime($fecha);
			$dt = date_format($date, 'Y-m-d'); 
			$periodo_historico = date("Ym",strtotime($dt."- 1 day")); 

			$dt2 = date("Y-m-d",strtotime($dt."+ 1 month")); 
			$fecha_archivo = date("Y-m-d",strtotime($dt2."- 1 day")); 
			/* para que le ponga el ultimo dia del mes le sumamos 1 mes y le restamos 1 dia */
		}
		//
		$contrap = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, $contrap_str, $servicio_actual), 'select');
		// clientes
		$es_bbva = ($cliente == 1226057645);
		$es_amx = ($cliente == 5546348);
		//
		$es_led = false;
		$es_pae = false;		
		//
		if ( $servicio_actual == 73 ){
			if ( $cliente == 2046807993 ){
				$es_pae = true;		
			}
		} else {
			$es_led = true;
		}
		// AGREGA PERSONAL 
		// (AMX)
		$personal = [];
		if ($es_amx) {
			$personal = SQLConnection::backendStoreProcedure('LN_panel_control_excel_personal', array($cliente, $contrap_str, $servicio_actual), 'select');
		}
		// 7/6/2023: Agrega datos comerciales 
		// (AMX)
		$datos_comerciales = [];
		$email_contacto = [];
		if ($es_amx) {
			$datos_comerciales1 = [];
			$datos_comerciales1 = SQLConnection::backendStoreProcedure('LN_panel_control_excel_datos_comerciales', array($cliente, $contrap_str, $servicio_actual), 'select');
			foreach ($datos_comerciales1 as $key => $dc) {
				$datos_comerciales[$dc->contraparte] = str_replace('<BR>','',$dc->datos_comerciales); 
				$email_contacto[$dc->contraparte] = str_replace('<BR>','',$dc->email_contacto); 
			}
		}
		//
		$pacto_mundial = [];
		if ($es_bbva && $servicio_actual == 47) {
			$pacto_mundial1 = [];
			$pacto_mundial1 = SQLConnection::backendStoreProcedure('LN_panel_control_excel_pacto_mundial', array($cliente, $contrap_str, $servicio_actual), 'select');
			foreach ($pacto_mundial1 as $key => $pacto) {
				$pacto_mundial[$pacto->contraparte] = $pacto->valor; 
			}
		}
		//
		$deuda_Aportes = [];
		$deuda_Contribuciones = [];
		$deuda_previsional = [];
		if ( $es_pae ){
			$deuda_previsional = SQLConnection::backendStoreProcedure('LN_panel_control_excel_deuda_previsional', array($cliente, $ids, $servicio_actual), 'select');
			foreach ($deuda_previsional as $key => $deuda) {
				$deuda_Aportes[$deuda->contraparte] = $deuda->deuda_301; 
				$deuda_Contribuciones[$deuda->contraparte] = $deuda->deuda_351;  
			}
		}
		//
    	$ind = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES',$cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,$servicio_actual),'select');
		/******************************************************/
		/* sacamos indicadores no habilitados para el usuario */
		$indicadores_habilitados_usuario = []	;
		$indicadores_habilitados_usuario = Session::get('indicadores_habilitados_usuario');
		if (is_array($indicadores_habilitados_usuario) && count($indicadores_habilitados_usuario) > 0)  {	
			foreach ($ind as $key => $indicador) {	
				$sacar = $key; 
				foreach ($indicadores_habilitados_usuario as $prod => $habilitado) {			
					if ($habilitado->indicador == $indicador->indicador) { 
						$sacar = null;
						break;
					}
				}
				if ($sacar !== null) {
					unset($ind[$key]);
				}
			}
		}
		// Se obtienen los documentos
		foreach ($ids as $id) {
			$docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
			$documentos[$id]['N'] = '';
			$documentos[$id]['V'] = '';
			$documentos[$id]['I'] = '';
			$documentos[$id]['R'] = '';
			foreach ($docs as $doc) {
				if ( $doc->aplica ) {
					$documentos[$id][$doc->estado_doc] .= $doc->nombre_tipo_doc . '<br style="mso-data-placement:same-cell;" />'; 
				}
			} 
		} 
		//
		$empleados = []; 
		foreach ($personal as $doc) {
			$empleados[$doc->contraparte][$doc->etiqueta] = $doc->valor; 
		}
		//		
		$titulo_score = DB::selectOne("SELECT top 1 titulo as titulo from ln_cliente_nivel where titulo is not null and cliente = " . $cliente); 
		//
		$tiene_dias_gestion = 'N'; 
		//
		$prodind = []; 
		foreach ($ind as $data) {
			$prodind[$data->etiqueta][$data->indicador]['etiqueta'] = $data->etiqueta_indicador;
			$prodind[$data->etiqueta][$data->indicador]['tipo_dato'] = $data->tipo_dato;
			$prodind[$data->etiqueta][$data->indicador]['clave_indicador'] = $data->clave_indicador;

			if ($data->clave_indicador=="INICIO_GESTION") {
				$tiene_dias_gestion = 'S'; 
			}

	  		if ($data->indicador == 37 ) { 
				$prodind[$data->etiqueta]['9990']['etiqueta'] = "Datos Informe Exterior"; 
				$prodind[$data->etiqueta]['9990']['tipo_dato'] = "T";
				$prodind[$data->etiqueta]['9990']['clave_indicador'] = $data->clave_indicador;
			}

			if ($data->clave_indicador=="CTRL_ETICO") { 
				$prodind[$data->etiqueta]['9993']['etiqueta'] = $data->etiqueta_indicador . " Cruce con Base de Personas no autorizadas"; 
				$prodind[$data->etiqueta]['9993']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9993']['clave_indicador'] = $data->clave_indicador;
			}

			if ($data->clave_indicador=="CTRL_CALIDAD") { 
				$prodind[$data->etiqueta]['9994']['etiqueta'] = $data->etiqueta_indicador . " Cruce con Base de Proveedores no autorizados"; 
				$prodind[$data->etiqueta]['9994']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9994']['clave_indicador'] = $data->clave_indicador;
			}

			if ($data->clave_indicador=="SCORE_FINAL" && isset($titulo_score)) { 
				$prodind[$data->etiqueta]['9995']['etiqueta'] = $titulo_score->titulo; 
				$prodind[$data->etiqueta]['9995']['tipo_dato'] = "T";
				$prodind[$data->etiqueta]['9995']['clave_indicador'] = $data->clave_indicador;
			}



			if ($data->clave_indicador=="CUMPL_DOC") {
				$prodind[$data->etiqueta]['9996']['etiqueta'] = "Verificados";
				$prodind[$data->etiqueta]['9996']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9996']['clave_indicador'] = "V";
				
				$prodind[$data->etiqueta]['9997']['etiqueta'] = "Pendientes de Verificar";
				$prodind[$data->etiqueta]['9997']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9997']['clave_indicador'] = "I";

				$prodind[$data->etiqueta]['9998']['etiqueta'] = "Rechazados";
				$prodind[$data->etiqueta]['9998']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9998']['clave_indicador'] = "R";
				
				$prodind[$data->etiqueta]['9999']['etiqueta'] = "Pendientes de Ingreso";
				$prodind[$data->etiqueta]['9999']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9999']['clave_indicador'] = "N";
			}

		}
		//
		$aind = []; 
		$tipo_datos = [];
		foreach ($prodind as $nombre_producto => $indicadores) {
			foreach ($indicadores as $key => $data) {
				$aind[] = $key; 
				$tipo_datos[$key] = $indicadores[$key]['tipo_dato']; 
			}
		}
		//
		$titulo_personal = []; 
		foreach ($empleados as $key => $data) {
			foreach ($data as $key => $tit) {
				$titulo_personal[$key] = $key; 
			}
		}
		//
		if ($periodo_historico !== null) {
			$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA_HIST',$cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,Session::get('servicio_actual'),$periodo_historico), 'select');	
		}
		else {
			if ($cliente == '2046807993'){
				$accionln = 'VALORES_GRILLA_NEW';
			} else {
				$accionln = 'VALORES_GRILLA';
			}
			//
			$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array($accionln, $cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,$servicio_actual), 'select');
		}
		//
		foreach ($led as $datos) {
			if(in_array($datos->indicador, $aind)) {	  
				if ($datos->valor == 'SIN CALCULAR'){ 
					$datos->valor = 'SIN DATOS'; 
				}
				//
				$valores[$datos->contraparte][$datos->indicador] = $datos->valor;
				//
				if($datos->indicador == 37) {
					$valores[$datos->contraparte]['9990'] = $datos->valor_memo;
				}
				//
				if($datos->indicador == 361 || $datos->indicador == 360) {
					$valores[$datos->contraparte][$datos->indicador] = $datos->valor_memo;
				}
				//
				if($datos->indicador == 4 && isset($titulo_score)) {
					if ($datos->texto!=null)  {
						$valores[$datos->contraparte]['9995'] = $datos->texto;
					} else {
						$valores[$datos->contraparte]['9995'] = ''; 
					}
				}
			}
		}
		/*****************************************************************/
		/* Saco registros que no cumplen restricciones de pais / familia */
	  	$usuarios_restricciones = Session::get('usuarios_restricciones');
		//
		if(!empty($usuarios_restricciones)) {
			foreach ($usuarios_restricciones as $key_ur => $value_ur) {
				if($servicio_actual == $key_ur) {
					foreach ($contrap as $key1 => $datos1) {
						foreach ($value_ur as $key_n2 => $value_n2) {
							//busco sólo por familia.
							if($value_n2->pais_servicio == null && $value_n2->indicador  == null && $value_n2->familia != null ) {
								if (isset($datos1->familia)) {
									if($datos1->familia == $value_n2->familia ) {
										unset($contrap[$key1]);
									}
								}
								//busco por familia y por pais de servicio.
							} else if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia != null){
								if (isset($datos1->ps) && isset($datos1->familia))  {
									if(strtolower($datos1->ps) == strtolower($value_n2->pais_servicio) && $datos1->familia == $value_n2->familia ){
										unset($contrap[$key1]);
									}
								} else if (!isset($datos1->ps) && isset($datos1->familia)) {
									if($datos1->familia == $value_n2->familia ) {
										unset($contrap[$key1]);
									}
								}
							} else if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia == null) {
								if (isset($datos1->ps)) {
									if(strtolower($datos1->ps) == strtolower($value_n2->pais_servicio) ){
											unset($contrap[$key1]);
								    }
								}
							}
						}
					}
				}
			}
		}
		/************************************************************/
		$mostrar_ps = $contrap[0]->cant_ps;
		/* foreach($contrap as $contraparte){
			$mostrar_ps = $contraparte->cant_ps;
			break; 
		}  */
		//
		// $file = '';
		$file = [];
		$cabezera = [];
		if($mostrar_ps > 1){
			// $file .= "<td>PAIS DE SERVICIO</td>";
			$cabezera[] = 'PAIS DE SERVICIO';
		}
		// $file .= '<td>PAIS' . "</td><td>" . 'FAMILIA' . "</td><td>" . 'RAZON SOCIAL' . "</ td><td>IDENTIFICADOR</td>" . "<td>IDENTIFICACION" . "</td>"; 
		$cabezera[] = 'PAIS';
		$cabezera[] = 'FAMILIA';
		$cabezera[] = 'RAZON SOCIAL';
		$cabezera[] = 'IDENTIFICADOR';
		$cabezera[] = 'IDENTIFICACION';
		//
		if ($tiene_dias_gestion == 'S') { 
			//$file .= "<td>DIAS GESTION</td>";
			$cabezera[] = 'DIAS GESTION';
		}
//		if ($cliente==5546348) { 
//			//$file .= "<td>DATOS COMERCALES</td><td>EMAIL CONTACTO</td>";
//			$cabezera[] = 'DATOS COMERCALES';
//			$cabezera[] = 'EMAIL CONTACTO';
//		}
		if ($cliente==5546348) { 
			$file .= "<td>DATOS COMERCALES</td><td>EMAIL CONTACTO</td>";
		} elseif ( $cliente == 1758083682 ) {			
			$file .= "<td>EMAIL RESPONSABLE INTERNO</td>";
		}

		//
		foreach ($prodind as $nombre_producto => $ìndicadores) {
			if (!empty($ìndicadores)) {
				foreach ($ìndicadores as $fld => $data_indicador) { 				
					//if ($data_indicador['clave_indicador']=="SCORE_IC" && $fld == "37") {
					if ( $data_indicador['clave_indicador'] != "SCORE_IC" || $fld != "37" ){
						$cabezera[] = $data_indicador['etiqueta'];
						//continue;
					}
					//
					//$file .= "<td>" . $data_indicador['etiqueta'] . "</td>";
				}
			} else {
				// $file .= "<td>" . $nombre_producto . "</td>";
				$cabezera[] = $nombre_producto;
			}
		}
		//
		if ( $es_led ) {
			$cabezera[] = 'Detalle Rechazos';
			// $file .= "<td>Detalle Rechazos</td>";
		}
		foreach ($titulo_personal as $key => $tit) {
			$cabezera[] = $key;
			// $file .= "<td>" . $key. "</td>";
		}
		if ( $es_bbva && $servicio_actual == 47) {
			$cabezera[] = 'PACTO MUNDIAL';
			// $file .= "<td>PACTO MUNDIAL</td>";
		}
		if ( $es_pae ){
			// $file .= "<td>Meses Deuda Aportes</td>";
	   		// $file .= "<td>Meses Deuda Contribuciones</td>";
			$cabezera[] = 'Meses Deuda Aportes';
			$cabezera[] = 'Meses Deuda Contribuciones';
		}
		// $file .= '</tr>'; 
		//
		$file[] = $cabezera;
		$fila = [];
		$datos_cruce = ''; 
		
		foreach($contrap as $contraparte){
			$fila = [];
	  		// $file .= '<tr valign="top">';
      		if($mostrar_ps > 1) {
				$fila[] = $contraparte->pais_servicio;
      			// $file .= "<td>" . $contraparte->pais_servicio . "</td>";

  			}			
	  		//$file .= "<td>" . $contraparte->country_name . "</td>" . "<td>".$contraparte->nombre_familia . "</td>" . "<td>" . $contraparte->nombre_persona . "</td>" . "<td>" . $contraparte->abreviatura . "</td>" . "<td>" . $contraparte->numero . "</td>"; 
			array_push($fila,$contraparte->country_name,$contraparte->nombre_familia,$contraparte->nombre_persona,$contraparte->abreviatura,$contraparte->numero);
      		//"<td>".$contraparte->inicio_gestion  . "</td>" . 
			if ($tiene_dias_gestion == 'S') { 
				// $file .= "<td>".$contraparte->dias_gestion . "</td>";
				$fila[] = $contraparte->dias_gestion;
			}

			if ( $es_amx ) {
				if(isset($datos_comerciales[$contraparte->contraparte])) {
  					// $file .= "<td>" . $datos_comerciales[$contraparte->contraparte] . "</td>";
					$fila[] = $datos_comerciales[$contraparte->contraparte];
				} else {
					$fila[] = '';
					// $file .= "<td></td>";
				}
				if(isset($email_contacto[$contraparte->contraparte])) {
					$fila[] = $email_contacto[$contraparte->contraparte];
  					// $file .= "<td>" . $email_contacto[$contraparte->contraparte] . "</td>";
				} else {
					$fila[] = '';
					// $file .= "<td></td>";
				}
			}

			$datos_cruce = ''; 
			$cruce_socios = SQLConnection::backendStoreProcedure('LN_control_etica', array($contraparte->contraparte), 'select');
		
			foreach ($cruce_socios as $cruce) {
				if ($datos_cruce == '') { 
					$datos_cruce = $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				} else {
					$datos_cruce = '<br style="mso-data-placement:same-cell;" />' . $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				}
			}
	  		$valores[$contraparte->contraparte]['9993'] = $datos_cruce;

			$datos_cruce = ''; 
			$cruce_socios = SQLConnection::backendStoreProcedure('LN_control_calidad', array($contraparte->contraparte), 'select');
			foreach ($cruce_socios as $cruce) {
				if ($datos_cruce == '') { 
					$datos_cruce = $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				} else  {
					$datos_cruce = '<br style="mso-data-placement:same-cell;" />' . $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				}
			}
			
	  		$valores[$contraparte->contraparte]['9994'] = $datos_cruce;
	  		foreach ($aind as $k => $id) {
				switch ($id) {
					case 9999:
						//$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['N']) ? $documentos[$contraparte->contraparte]['N'] : "") . "</td>";
						$fila[] = (isset($documentos[$contraparte->contraparte]['N']) ? $documentos[$contraparte->contraparte]['N'] : "");
						break;
					case 9998:
						// $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['R']) ? $documentos[$contraparte->contraparte]['R'] : "") . "</td>";
						$fila[] = (isset($documentos[$contraparte->contraparte]['R']) ? $documentos[$contraparte->contraparte]['R'] : "");
						break;
					case 9997:
						// $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['I']) ? $documentos[$contraparte->contraparte]['I'] : "") . "</td>";
						$fila[] = (isset($documentos[$contraparte->contraparte]['I']) ? $documentos[$contraparte->contraparte]['I'] : "");
						break;
					case 9996:
						//$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['V']) ? $documentos[$contraparte->contraparte]['V'] : "") . "</td>";
						$fila[] = (isset($documentos[$contraparte->contraparte]['V']) ? $documentos[$contraparte->contraparte]['V'] : "");
						break;
					case 6:
						if (!isset($valores[$contraparte->contraparte][$id])) {
							$valores[$contraparte->contraparte][6] = (isset($valores[$contraparte->contraparte][37]) ? $valores[$contraparte->contraparte][37] : "");
						}
						// $file .= "<td>" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
						$fila[] = (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "");
						break;
					case 37:
						break;
		  			default:
						if (isset($valores[$contraparte->contraparte][$id])) { 
							if (substr($valores[$contraparte->contraparte][$id],0,4)==(-100)) { 
								$valores[$contraparte->contraparte][$id] = str_replace('-100','N/A', $valores[$contraparte->contraparte][$id]);
							}
							if ($tipo_datos[$id] == 'I') { 
								$valores[$contraparte->contraparte][$id] = str_replace('.','', $valores[$contraparte->contraparte][$id]);
							}
						}
						/* switch ($tipo_datos[$id]) {
							case 'F':
								$file .= '<td style="mso-number-format:\'0.00\';">'; 
								break;
							default:
								$file .= "<td>"; 
								break;
						} */
						$fila[] = (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "");
						// $file .= (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
						break;
				}
			}
			//
			if ( $es_led ){
				$detalle = trim($contraparte->detalle_killer); 
				$detalle = str_replace(';', '<br style="mso-data-placement:same-cell;" />', $detalle); 
				//$file .= '<td>' . $detalle . '</td>';
				$fila[] = $detalle;
			}
			//
			if(isset($empleados[$contraparte->contraparte])) {
				$empleado = []; 
				$empleado = $empleados[$contraparte->contraparte]; 
				foreach ($titulo_personal as $key1 => $tit) {
					foreach ($empleado as $key => $val) {
						if ($key == $tit) {
							if ($key=='No tenemos personal')  {
								if ($val == '0') { 
									$val = ''; 
								} else  { 
									$val = 'X'; 
								}
							}
							// $file .= '<td>' . $val . '</td>';
							$fila[] = $val;
						}
					}
				}
			} else {
		  		foreach ($titulo_personal as $key => $tit) {
			  		// $file .= "<td></td>";
					$fila[] = '';
		  		}
			}
			//
			if ( $es_bbva && $servicio_actual == 47 ) {
				if(isset($pacto_mundial[$contraparte->contraparte])) {
					$fila[] = $pacto_mundial[$contraparte->contraparte];
  					//$file .= "<td>" . $pacto_mundial[$contraparte->contraparte] . "</td>";
				} else {
					$fila[] = '';
					// $file .= "<td></td>";
				}
			}
			//
			if ( $es_pae ){
				if(isset($deuda_Aportes[$contraparte->contraparte])) {
					$fila[] = $deuda_Aportes[$contraparte->contraparte];
  					// $file .= "<td>" . $deuda_Aportes[$contraparte->contraparte] . "-</td>";
				} else {
					$fila[] = '';
					// $file .= "<td></td>";
				}
				if(isset($deuda_Contribuciones[$contraparte->contraparte])) {
					$fila[] = $deuda_Contribuciones[$contraparte->contraparte];
  					// $file .= "<td>" . $deuda_Contribuciones[$contraparte->contraparte] . "-</td>";
				} else {
					$fila[] = '';
					//$file .= "<td></td>";
				}
			}
			//
			//$file .= '</tr>'; 
			$file[] = $fila;
	  	}
		//
		return json_encode($file);
		
	}


	public static function ledExcelPanelControl($ids=null){
		ini_set('memory_limit','4096M');
		ini_set('max_execution_time', 10000); // 1000 segundos
		set_time_limit(0); 
		//
		$servicio_actual  = Request::input('servicio_excel') ?? Session::get('servicio_actual');
		$cliente          = Request::input('cliente_excel')  ?? Session::get('usuario')->cliente['client_id'];
		$cron             = Request::input('cliente_excel')  ? 'SI' : 'NO';
		if ($ids == null)
		{
		$ids = null != Request::input('ids') ? Request::input('ids') : null;
		}

		//var_dump($ids); die();

		$periodo_historico = null; 
		$periodo_archivo = Request::input('periodo') ?? null;
		
		if ($periodo_archivo !== null) {
			/* El archivo de un mes, tiene los datos del periodo_anterior 
			Por ejemplo: El panel al 31/01/2022 tienen los datos del periodo 202112 */ 
			$fecha = substr($periodo_archivo,0,4) . '-' . substr($periodo_archivo,4,2) . '-01';
			$date = new DateTime($fecha);
			$dt = date_format($date, 'Y-m-d'); 
			$periodo_historico = date("Ym",strtotime($dt."- 1 day")); 

			$dt2 = date("Y-m-d",strtotime($dt."+ 1 month")); 
			$fecha_archivo = date("Y-m-d",strtotime($dt2."- 1 day")); 
			/* para que le ponga el ultimo dia del mes le sumamos 1 mes y le restamos 1 dia */
		}
	
		$array_ids = [];
		$array_ids = explode(",", $ids);
		//var_dump($array_ids); die();
		/* CHANCHADA: Cuando se arregle que se puedan pedir mas de 3000 ids sacar >= 3000, si dejar el == 0*/
		/* 10/07/2024: ahora el js puede armar el total de la lista => sacamos la chanchada */
		/*
		if (count($array_ids) >= 3000 || count($array_ids) ==  0 ) {
			$ids = null; 
			$todas = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, null, null, null), 'select');
			$array_ids = [];
			foreach ($todas as $una) {
				$array_ids[] = $una->contraparte;
			}
	    }
	    */
		$contrap = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, $ids, $servicio_actual), 'select');
		// dd($contrap);
		// AGREGA PERSONAL
		$personal = [];
		if ($cliente == 5546348) {
			$personal = SQLConnection::backendStoreProcedure('LN_panel_control_excel_personal', array($cliente, $ids, $servicio_actual), 'select');
		}
		
		// 7/6/2023: Agrega datos comerciales 
		$datos_comerciales = [];
		$email_contacto = [];
		if ($cliente == 5546348) {
			$datos_comerciales1 = [];
			$datos_comerciales1 = SQLConnection::backendStoreProcedure('LN_panel_control_excel_datos_comerciales', array($cliente, $ids, $servicio_actual), 'select');
			foreach ($datos_comerciales1 as $key => $dc) {
				$datos_comerciales[$dc->contraparte] = str_replace('<BR>','',$dc->datos_comerciales); 
				$email_contacto[$dc->contraparte] = str_replace('<BR>','',$dc->email_contacto); 
			}
		}
		

		$pacto_mundial = [];
		if ($cliente == 1226057645) {
			$pacto_mundial1 = [];
			$pacto_mundial1 = SQLConnection::backendStoreProcedure('LN_panel_control_excel_pacto_mundial', array($cliente, $ids, $servicio_actual), 'select');
			foreach ($pacto_mundial1 as $key => $pacto) {
				$pacto_mundial[$pacto->contraparte] = $pacto->valor; 
			}
		}


		$deuda_Aportes = [];
		$deuda_Contribuciones = [];
		$deuda_previsional = [];
		if ($cliente == 2046807993 && $servicio_actual == 73) {
			$deuda_previsional = SQLConnection::backendStoreProcedure('LN_panel_control_excel_deuda_previsional', array($cliente, $ids, $servicio_actual), 'select');
			foreach ($deuda_previsional as $key => $deuda) {
				$deuda_Aportes[$deuda->contraparte] = $deuda->deuda_301; 
				$deuda_Contribuciones[$deuda->contraparte] = $deuda->deuda_351;  
			}
		}



		$productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla',$cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,$servicio_actual),'select');
    	$ind = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES',$cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,$servicio_actual),'select');

		/******************************************************/
		/* sacamos indicadores no habilitados para el usuario */
		$indicadores_habilitados_usuario = []	;
		$indicadores_habilitados_usuario = Session::get('indicadores_habilitados_usuario');
		if (is_array($indicadores_habilitados_usuario) && count($indicadores_habilitados_usuario) > 0)  {	
			foreach ($ind as $key => $indicador) {	
				$sacar = $key; 
				foreach ($indicadores_habilitados_usuario as $prod => $habilitado) {
					
					if ($habilitado->indicador == $indicador->indicador) { 
						$sacar = null;
						break;
					}
				}
				if ($sacar !== null) {
					unset($ind[$key]);
				}
			}
		}
		

		$prodind = []; 
		$aind = []; 
		
		$empleados = []; 
		foreach ($array_ids as $id) {
			$docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
			$documentos[$id]['N'] = '';
			$documentos[$id]['V'] = '';
			$documentos[$id]['I'] = '';
			$documentos[$id]['R'] = '';
			foreach ($docs as $doc) {
				if ($doc->estado_documento!="No solicitado") {
					$documentos[$id][$doc->estado_doc] .= $doc->nombre_tipo_doc . '<br style="mso-data-placement:same-cell;" />'; 
				}
			} 
		} 
		foreach ($personal as $doc) {
			$empleados[$doc->contraparte][$doc->etiqueta] = $doc->valor; 
		}
		
		$titulo_score = DB::selectOne("SELECT top 1 titulo as titulo from ln_cliente_nivel where titulo is not null and cliente = " . $cliente); 
  
  		$tiene_dias_gestion = new stdClass(); 
		$tiene_dias_gestion = 'N'; 

		foreach ($ind as $data) {
			$prodind[$data->etiqueta][$data->indicador]['etiqueta'] = $data->etiqueta_indicador;
			$prodind[$data->etiqueta][$data->indicador]['tipo_dato'] = $data->tipo_dato;
			$prodind[$data->etiqueta][$data->indicador]['clave_indicador'] = $data->clave_indicador;

			if ($data->clave_indicador=="INICIO_GESTION") {
				$tiene_dias_gestion = 'S'; 
			}

	  		if ($data->indicador == 37 ) { 
				$prodind[$data->etiqueta]['9990']['etiqueta'] = "Datos Informe Exterior"; 
				$prodind[$data->etiqueta]['9990']['tipo_dato'] = "T";
				$prodind[$data->etiqueta]['9990']['clave_indicador'] = $data->clave_indicador;
			}

			if ($data->clave_indicador=="CTRL_ETICO") { 
				$prodind[$data->etiqueta]['9993']['etiqueta'] = $data->etiqueta_indicador . " Cruce con Base de Personas no autorizadas"; 
				$prodind[$data->etiqueta]['9993']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9993']['clave_indicador'] = $data->clave_indicador;
			}

			if ($data->clave_indicador=="CTRL_CALIDAD") { 
				$prodind[$data->etiqueta]['9994']['etiqueta'] = $data->etiqueta_indicador . " Cruce con Base de Proveedores no autorizados"; 
				$prodind[$data->etiqueta]['9994']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9994']['clave_indicador'] = $data->clave_indicador;
			}

			if ($data->clave_indicador=="SCORE_FINAL" && isset($titulo_score)) { 
				$prodind[$data->etiqueta]['9995']['etiqueta'] = $titulo_score->titulo; 
				$prodind[$data->etiqueta]['9995']['tipo_dato'] = "T";
				$prodind[$data->etiqueta]['9995']['clave_indicador'] = $data->clave_indicador;
			}



			if ($data->clave_indicador=="CUMPL_DOC") {
				$prodind[$data->etiqueta]['9996']['etiqueta'] = "Verificados";
				$prodind[$data->etiqueta]['9996']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9996']['clave_indicador'] = "V";
				
				$prodind[$data->etiqueta]['9997']['etiqueta'] = "Pendientes de Verificar";
				$prodind[$data->etiqueta]['9997']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9997']['clave_indicador'] = "I";

				$prodind[$data->etiqueta]['9998']['etiqueta'] = "Rechazados";
				$prodind[$data->etiqueta]['9998']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9998']['clave_indicador'] = "R";
				
				$prodind[$data->etiqueta]['9999']['etiqueta'] = "Pendientes de Ingreso";
				$prodind[$data->etiqueta]['9999']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9999']['clave_indicador'] = "N";
			}

		}
		$tipo_datos = [];
		foreach ($prodind as $nombre_producto => $indicadores) {
			foreach ($indicadores as $key => $data) {
				$aind[] = $key; 
				$tipo_datos[$key] = $indicadores[$key]['tipo_dato']; 
			}
		}
		
		$titulo_personal = []; 
		foreach ($empleados as $key => $data) {
			foreach ($data as $key => $tit) {
				$titulo_personal[$key] = $key; 
			}
		}

	
		if ($periodo_historico !== null) {
			$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA_HIST',$cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,Session::get('servicio_actual'),$periodo_historico), 'select');	
		}
		else {
			//$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA_NEW', $cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,Session::get('servicio_actual')), 'select');
			if ($cliente == '2046807993') { $accionln = 'VALORES_GRILLA_NEW';} else { $accionln = 'VALORES_GRILLA';} 
			$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array($accionln, $cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,$servicio_actual), 'select');
		}
		foreach ($led as $datos) {
		//$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data);
			if(in_array($datos->indicador, $aind)) {	  
				//$valores[$datos->contraparte][$datos->indicador] = $datos->valor_sin_formato;
				if ($datos->valor == 'SIN CALCULAR') { $datos->valor = 'SIN DATOS'; }
				$valores[$datos->contraparte][$datos->indicador] = $datos->valor;

				if($datos->indicador == 37) {
					$valores[$datos->contraparte]['9990'] = $datos->valor_memo;
				}

				if($datos->indicador == 361 || $datos->indicador == 360) {
					$valores[$datos->contraparte][$datos->indicador] = $datos->valor_memo;
				}


				if($datos->indicador == 4 && isset($titulo_score)) {
					if ($datos->texto!=null)  {
						$valores[$datos->contraparte]['9995'] = $datos->texto;
					} else {
						$valores[$datos->contraparte]['9995'] = ''; 
					}
				}
			}
		}
		/*****************************************************************/
		/* Saco registros que no cumplen restricciones de pais / familia */
	  	$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 ($contrap as $key1 => $datos1) {
						foreach ($value_ur as $key_n2 => $value_n2) {
							//busco sólo por familia.
							if($value_n2->pais_servicio == null && $value_n2->indicador  == null && $value_n2->familia != null ) {
								if (isset($datos1->familia)) {
										if($datos1->familia == $value_n2->familia ) {
											unset($contrap[$key1]);
										}
								}
							 //busco por familia y por pais de servicio.
							} else if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia != null){
								if (isset($datos1->ps) && isset($datos1->familia))  {
									if(strtolower($datos1->ps) == strtolower($value_n2->pais_servicio) && $datos1->familia == $value_n2->familia ){
										unset($contrap[$key1]);
									}
								} else if (!isset($datos1->ps) && isset($datos1->familia)) {
									if($datos1->familia == $value_n2->familia ) {
										unset($contrap[$key1]);
									}
								}
							} else if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia == null) {
								if (isset($datos1->ps)) {
									if(strtolower($datos1->ps) == strtolower($value_n2->pais_servicio) ){
											unset($contrap[$key1]);
								    }
								}
							}
						}
					}
				}
			}
		}
		/************************************************************/

		$mostrar_ps = 0;
		foreach($contrap as $contraparte){
			$mostrar_ps = $contraparte->cant_ps;
			break; 
		} 

		$file = '<table border="1"><tr>';
		if($mostrar_ps > 1){
			$file .= "<td>PAIS DE SERVICIO</td>";
		}
  		$file .= '<td>PAIS' . "</td><td>" . 'FAMILIA' . "</td><td>" . 'RAZON SOCIAL' . "</ td><td>IDENTIFICADOR</td>" . "<td>IDENTIFICACION" . "</td>"; 
		//"<td>INICIO GESTION</td>"; 
		if ($tiene_dias_gestion == 'S') { 
			$file .= "<td>DIAS GESTION</td>";
		}
		if ($cliente==5546348) { 
			$file .= "<td>DATOS COMERCALES</td><td>EMAIL CONTACTO</td>";
		} elseif ( $cliente == 1758083682 ) {			
			$file .= "<td>EMAIL RESPONSABLE INTERNO</td>";
		}
		foreach ($prodind as $nombre_producto => $ìndicadores) {
			if (!empty($ìndicadores)) {
				foreach ($ìndicadores as $fld => $data_indicador) { 				
					if ($data_indicador['clave_indicador']=="SCORE_IC" && $fld == "37") {
						continue;
					}
					//$file .= "<td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>";
					$file .= "<td>" . $data_indicador['etiqueta'] . "</td>";
					//print_r ($fld . " - <td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>\r\n");
				}
			}
			else {
				$file .= "<td>" . $nombre_producto . "</td>";
				//print_r("<td>" . $nombre_producto . "</td>\r\n");
			}
		}
		if ($servicio_actual == 47) {
			$file .= "<td>Detalle Rechazos</td>";
		}
		foreach ($titulo_personal as $key => $tit) {
			$file .= "<td>" . $key. "</td>";
		}
		if ($cliente == 1226057645) {
			$file .= "<td>PACTO MUNDIAL</td>";
		}
		if ($cliente == 2046807993 && $servicio_actual == 73) {
			$file .= "<td>Meses Deuda Aportes</td>";
	   		$file .= "<td>Meses Deuda Contribuciones</td>";
		}
		$file .= '</tr>'; 
		$hay = new stdClass(); 
		$datos_cruce = new stdClass(); 
		
		foreach($contrap as $contraparte){

	  		$file .= '<tr valign="top">';
      		if($mostrar_ps > 1) {
      			$file .= "<td>" . $contraparte->pais_servicio . "</td>";
  			}
	  		$file .= "<td>" . $contraparte->country_name . "</td>" . "<td>".$contraparte->nombre_familia . "</td>" . "<td>" . $contraparte->nombre_persona . "</td>" . "<td>" . $contraparte->abreviatura . "</td>" . "<td>" . $contraparte->numero . "</td>"; 
      		//"<td>".$contraparte->inicio_gestion  . "</td>" . 
			if ($tiene_dias_gestion == 'S') { 
				$file .= "<td>".$contraparte->dias_gestion . "</td>";
			}

			if ($cliente == 5546348) {
				if(isset($datos_comerciales[$contraparte->contraparte])) {
  					$file .= "<td>" . $datos_comerciales[$contraparte->contraparte] . "</td>";
				} else {
					$file .= "<td></td>";
				}
				if(isset($email_contacto[$contraparte->contraparte])) {
  					$file .= "<td>" . $email_contacto[$contraparte->contraparte] . "</td>";
				} elseif (isset($contraparte->email_contacto)) {
					$file .= "<td>" . $contraparte->email_contacto . "</td>";
				} else {
					$file .= "<td></td>";
				}
			} elseif ($cliente == 1758083682) {
				if (isset($contraparte->email_ejecutivo_cuenta)) {
				$file .= "<td>" . $contraparte->email_ejecutivo_cuenta . "</td>";
				} else {
					$file .= "<td></td>";
				}
			}

			$datos_cruce = ''; 
			$cruce_socios = SQLConnection::backendStoreProcedure('LN_control_etica', array($contraparte->contraparte), 'select');
		
			foreach ($cruce_socios as $cruce) {
				if ($datos_cruce == '') { 
					$datos_cruce = $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				} else {
					$datos_cruce = '<br style="mso-data-placement:same-cell;" />' . $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				}
			}
	  		$valores[$contraparte->contraparte]['9993'] = $datos_cruce;

			$datos_cruce = ''; 
			$cruce_socios = SQLConnection::backendStoreProcedure('LN_control_calidad', array($contraparte->contraparte), 'select');
			foreach ($cruce_socios as $cruce) {
				if ($datos_cruce == '') { 
					$datos_cruce = $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				} else  {
					$datos_cruce = '<br style="mso-data-placement:same-cell;" />' . $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				}
			}
			
	  		$valores[$contraparte->contraparte]['9994'] = $datos_cruce;
	  		foreach ($aind as $k => $id) {

				switch ($id) {
					case 9999:
						$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['N']) ? $documentos[$contraparte->contraparte]['N'] : "") . "</td>";
						break;
					case 9998:
						$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['R']) ? $documentos[$contraparte->contraparte]['R'] : "") . "</td>";
						break;
					case 9997:
						$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['I']) ? $documentos[$contraparte->contraparte]['I'] : "") . "</td>";
						break;
					case 9996:
						//if ($cliente != 5546348){
							$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['V']) ? $documentos[$contraparte->contraparte]['V'] : "") . "</td>";
						//}
						break;
					case 6:
						if (!isset($valores[$contraparte->contraparte][$id])) {
							$valores[$contraparte->contraparte][6] = (isset($valores[$contraparte->contraparte][37]) ? $valores[$contraparte->contraparte][37] : "");
						}
						$file .= "<td>" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
						break;
					case 37:
						break;
		  			default:
						if (isset($valores[$contraparte->contraparte][$id])) { 
							if (substr($valores[$contraparte->contraparte][$id],0,4)==(-100)) { 
								$valores[$contraparte->contraparte][$id] = str_replace('-100','N/A', $valores[$contraparte->contraparte][$id]);
							}
							if ($tipo_datos[$id] == 'I') { 
								$valores[$contraparte->contraparte][$id] = str_replace('.','', $valores[$contraparte->contraparte][$id]);
							}
						}
						switch ($tipo_datos[$id]) {
							case 'F':
								$file .= '<td style="mso-number-format:\'0.00\';">'; 
								break;
							default:
								$file .= "<td>"; 
								break;
						}
						$file .= (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
						break;
				}
			}
			if ($servicio_actual == 47)  {
				$detalle = trim($contraparte->detalle_killer); 
				$detalle = str_replace(';', '<br style="mso-data-placement:same-cell;" />', $detalle); 
				$file .= '<td>' . $detalle . '</td>';
			}
			if(isset($empleados[$contraparte->contraparte])) {
				$empleado = []; 
				$empleado = $empleados[$contraparte->contraparte]; 
				foreach ($titulo_personal as $key1 => $tit) {
					foreach ($empleado as $key => $val) {
						if ($key == $tit) {
							if ($key=='No tenemos personal')  {
								if ($val == '0') { 
									$val = ''; 
								} else  { 
									$val = 'X'; 
								}
							}
							$file .= '<td>' . $val . '</td>';
						}
					}
				}
			} else {
		  		foreach ($titulo_personal as $key => $tit) {
			  		$file .= "<td></td>";
		  		}
			}
			if ($cliente == 1226057645) {
				if(isset($pacto_mundial[$contraparte->contraparte])) {
  					$file .= "<td>" . $pacto_mundial[$contraparte->contraparte] . "</td>";
				} else {
					$file .= "<td></td>";
				}
			}
			if ($cliente == 2046807993 && $servicio_actual == 73) {
				if(isset($deuda_Aportes[$contraparte->contraparte])) {
  					$file .= "<td>" . $deuda_Aportes[$contraparte->contraparte] . "-</td>";
				} else {
					$file .= "<td></td>";
				}
				if(isset($deuda_Contribuciones[$contraparte->contraparte])) {
  					$file .= "<td>" . $deuda_Contribuciones[$contraparte->contraparte] . "-</td>";
				} else {
					$file .= "<td></td>";
				}
			}
		
			$file .= '</tr>'; 
		
	  	}
		$file .= '</table>'; 

		if ($periodo_historico==null) {
			$fecha = date("Y-m-d");
			if ($cron == 'SI')
			{
				$file = utf8_decode($file); 
				$file_txt  = env('PATH_COMPARTIDO') .  '/reportes/Reporte_Contrapartes_' . $servicio_actual . '_' . $cliente . '_' .  $fecha . '.xls'; 
				file_put_contents($file_txt, $file);
				chmod($file_txt,0777);
				echo "Fin"; 
			}
			else 
			{
				header('Content-disposition: attachment; filename=Reporte_Contrapartes_' . $fecha . '.xls');
				header('Content-type: application/vnd.ms-excel; charset=utf-8');
				$file = utf8_decode($file); 
				//echo $file;
				/* 14/02/2020 lo cambiamos por: */
				$response =  array(
					'op' => 'ok',
					'archivo' => 'Reporte_Contrapartes_' . $fecha . '.xls', 
					'file' => "data:application/vnd.ms-excel;base64,".base64_encode($file)
				);
				die(json_encode($response));
			}
		} else {
			header('Content-disposition: attachment; filename=Reporte_al_' . $fecha_archivo . '.xls');
			header('Content-type: application/vnd.ms-excel; charset=utf-8');
			$file = utf8_decode($file);
			echo $file;
			return; 
		}
  	}


	public function ledExcelPanelControlDNV(){
		ini_set('memory_limit','4096M');
		ini_set('max_execution_time', 10000); // 1000 segundos
		set_time_limit(0); 
		//
		$servicio_actual  = Request::input('servicio_excel') ?? Session::get('servicio_actual');
		$cliente          = Request::input('cliente_excel')  ?? Session::get('usuario')->cliente['client_id'];
		$cron             = Request::input('cliente_excel')  ? 'SI' : 'NO';
		
		$ids = null != Request::input('ids') ? Request::input('ids') : null;

		//var_dump($ids); die();

		$periodo_historico = null; 
		$periodo_archivo = Request::input('periodo') ?? null;
		
		if ($periodo_archivo !== null) {
			/* El archivo de un mes, tiene los datos del periodo_anterior 
			Por ejemplo: El panel al 31/01/2022 tienen los datos del periodo 202112 */ 
			$fecha = substr($periodo_archivo,0,4) . '-' . substr($periodo_archivo,4,2) . '-01';
			$date = new DateTime($fecha);
			$dt = date_format($date, 'Y-m-d'); 
			$periodo_historico = date("Ym",strtotime($dt."- 1 day")); 

			$dt2 = date("Y-m-d",strtotime($dt."+ 1 month")); 
			$fecha_archivo = date("Y-m-d",strtotime($dt2."- 1 day")); 
			/* para que le ponga el ultimo dia del mes le sumamos 1 mes y le restamos 1 dia */
		}
	
		$array_ids = [];
		$array_ids = explode(",", $ids);
		//var_dump($array_ids); die();
		/* CHANCHADA: Cuando se arregle que se puedan pedir mas de 3000 ids sacar >= 3000, si dejar el == 0*/
		if (count($array_ids) >= 3000 || count($array_ids) ==  0 ) {
			$ids = null; 
			$todas = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, null, null, null), 'select');
			$array_ids = [];
			foreach ($todas as $una) {
				$array_ids[] = $una->contraparte;
			}
	    }
		$contrap = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, $ids, $servicio_actual), 'select');
		// AGREGA PERSONAL
		$personal = [];
		if ($cliente == 5546348) {
			$personal = SQLConnection::backendStoreProcedure('LN_panel_control_excel_personal', array($cliente, $ids, $servicio_actual), 'select');
		}
		
		// 7/6/2023: Agrega datos comerciales 
		$datos_comerciales = [];
		$email_contacto = [];
		if ($cliente == 5546348) {
			$datos_comerciales1 = [];
			$datos_comerciales1 = SQLConnection::backendStoreProcedure('LN_panel_control_excel_datos_comerciales', array($cliente, $ids, $servicio_actual), 'select');
			foreach ($datos_comerciales1 as $key => $dc) {
				$datos_comerciales[$dc->contraparte] = str_replace('<BR>','',$dc->datos_comerciales); 
				$email_contacto[$dc->contraparte] = str_replace('<BR>','',$dc->email_contacto); 
			}
		}
		

		$pacto_mundial = [];
		if ($cliente == 1226057645) {
			$pacto_mundial1 = [];
			$pacto_mundial1 = SQLConnection::backendStoreProcedure('LN_panel_control_excel_pacto_mundial', array($cliente, $ids, $servicio_actual), 'select');
			foreach ($pacto_mundial1 as $key => $pacto) {
				$pacto_mundial[$pacto->contraparte] = $pacto->valor; 
			}
		}


		$deuda_Aportes = [];
		$deuda_Contribuciones = [];
		$deuda_previsional = [];
		if ($cliente == 2046807993 && $servicio_actual == 73) {
			$deuda_previsional = SQLConnection::backendStoreProcedure('LN_panel_control_excel_deuda_previsional', array($cliente, $ids, $servicio_actual), 'select');
			foreach ($deuda_previsional as $key => $deuda) {
				$deuda_Aportes[$deuda->contraparte] = $deuda->deuda_301; 
				$deuda_Contribuciones[$deuda->contraparte] = $deuda->deuda_351;  
			}
		}



		$productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla',$cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,$servicio_actual),'select');
    	$ind = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES',$cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,$servicio_actual),'select');

		/******************************************************/
		/* sacamos indicadores no habilitados para el usuario */
		$indicadores_habilitados_usuario = []	;
		$indicadores_habilitados_usuario = Session::get('indicadores_habilitados_usuario');
		if (is_array($indicadores_habilitados_usuario) && count($indicadores_habilitados_usuario) > 0)  {	
			foreach ($ind as $key => $indicador) {	
				$sacar = $key; 
				foreach ($indicadores_habilitados_usuario as $prod => $habilitado) {
					
					if ($habilitado->indicador == $indicador->indicador) { 
						$sacar = null;
						break;
					}
				}
				if ($sacar !== null) {
					unset($ind[$key]);
				}
			}
		}
		

		$prodind = []; 
		$aind = []; 
		
		$empleados = []; 
		foreach ($array_ids as $id) {
			$docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
			$documentos[$id]['N'] = '';
			$documentos[$id]['V'] = '';
			$documentos[$id]['I'] = '';
			$documentos[$id]['R'] = '';
			foreach ($docs as $doc) {
				if ($doc->estado_documento!="No solicitado") {
					$documentos[$id][$doc->estado_doc] .= $doc->nombre_tipo_doc . '<br style="mso-data-placement:same-cell;" />'; 
				}
			} 
		} 
		foreach ($personal as $doc) {
			$empleados[$doc->contraparte][$doc->etiqueta] = $doc->valor; 
		}
		
		$titulo_score = DB::selectOne("SELECT top 1 titulo as titulo from ln_cliente_nivel where titulo is not null and cliente = " . $cliente); 
  
  		$tiene_dias_gestion = new stdClass(); 
		$tiene_dias_gestion = 'N'; 

		foreach ($ind as $data) {
			$prodind[$data->etiqueta][$data->indicador]['etiqueta'] = $data->etiqueta_indicador;
			$prodind[$data->etiqueta][$data->indicador]['tipo_dato'] = $data->tipo_dato;
			$prodind[$data->etiqueta][$data->indicador]['clave_indicador'] = $data->clave_indicador;

			if ($data->clave_indicador=="INICIO_GESTION") {
				$tiene_dias_gestion = 'S'; 
			}

	  		if ($data->indicador == 37 ) { 
				$prodind[$data->etiqueta]['9990']['etiqueta'] = "Datos Informe Exterior"; 
				$prodind[$data->etiqueta]['9990']['tipo_dato'] = "T";
				$prodind[$data->etiqueta]['9990']['clave_indicador'] = $data->clave_indicador;
			}

			if ($data->clave_indicador=="CTRL_ETICO") { 
				$prodind[$data->etiqueta]['9993']['etiqueta'] = $data->etiqueta_indicador . " Cruce con Base de Personas no autorizadas"; 
				$prodind[$data->etiqueta]['9993']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9993']['clave_indicador'] = $data->clave_indicador;
			}

			if ($data->clave_indicador=="CTRL_CALIDAD") { 
				$prodind[$data->etiqueta]['9994']['etiqueta'] = $data->etiqueta_indicador . " Cruce con Base de Proveedores no autorizados"; 
				$prodind[$data->etiqueta]['9994']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9994']['clave_indicador'] = $data->clave_indicador;
			}

			if ($data->clave_indicador=="SCORE_FINAL" && isset($titulo_score)) { 
				$prodind[$data->etiqueta]['9995']['etiqueta'] = $titulo_score->titulo; 
				$prodind[$data->etiqueta]['9995']['tipo_dato'] = "T";
				$prodind[$data->etiqueta]['9995']['clave_indicador'] = $data->clave_indicador;
			}



			if ($data->clave_indicador=="CUMPL_DOC") {
				$prodind[$data->etiqueta]['9996']['etiqueta'] = "Verificados";
				$prodind[$data->etiqueta]['9996']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9996']['clave_indicador'] = "V";
				
				$prodind[$data->etiqueta]['9997']['etiqueta'] = "Pendientes de Verificar";
				$prodind[$data->etiqueta]['9997']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9997']['clave_indicador'] = "I";

				$prodind[$data->etiqueta]['9998']['etiqueta'] = "Rechazados";
				$prodind[$data->etiqueta]['9998']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9998']['clave_indicador'] = "R";
				
				$prodind[$data->etiqueta]['9999']['etiqueta'] = "Pendientes de Ingreso";
				$prodind[$data->etiqueta]['9999']['tipo_dato'] = "I";
				$prodind[$data->etiqueta]['9999']['clave_indicador'] = "N";
			}

		}
		$tipo_datos = [];
		foreach ($prodind as $nombre_producto => $indicadores) {
			foreach ($indicadores as $key => $data) {
				$aind[] = $key; 
				$tipo_datos[$key] = $indicadores[$key]['tipo_dato']; 
			}
		}
		
		$titulo_personal = []; 
		foreach ($empleados as $key => $data) {
			foreach ($data as $key => $tit) {
				$titulo_personal[$key] = $key; 
			}
		}

	
		if ($periodo_historico !== null) {
			$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA_HIST',$cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,Session::get('servicio_actual'),$periodo_historico), 'select');	
		}
		else {
			//$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA_NEW', $cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,Session::get('servicio_actual')), 'select');
			if ($cliente == '2046807993') { $accionln = 'VALORES_GRILLA_NEW';} else { $accionln = 'VALORES_GRILLA';} 
			$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array($accionln, $cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,$servicio_actual), 'select');
		}
		foreach ($led as $datos) {
		//$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data);
			if(in_array($datos->indicador, $aind)) {	  
				//$valores[$datos->contraparte][$datos->indicador] = $datos->valor_sin_formato;
				if ($datos->valor == 'SIN CALCULAR') { $datos->valor = 'SIN DATOS'; }
				$valores[$datos->contraparte][$datos->indicador] = $datos->valor;

				if($datos->indicador == 37) {
					$valores[$datos->contraparte]['9990'] = $datos->valor_memo;
				}

				if($datos->indicador == 361 || $datos->indicador == 360) {
					$valores[$datos->contraparte][$datos->indicador] = $datos->valor_memo;
				}


				if($datos->indicador == 4 && isset($titulo_score)) {
					if ($datos->texto!=null)  {
						$valores[$datos->contraparte]['9995'] = $datos->texto;
					} else {
						$valores[$datos->contraparte]['9995'] = ''; 
					}
				}
			}
		}
/*****************************************************************/
/* Saco registros que no cumplen restricciones de pais / familia */
	  	$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 ($contrap as $key1 => $datos1) {
						foreach ($value_ur as $key_n2 => $value_n2) {
							//busco sólo por familia.
							if($value_n2->pais_servicio == null && $value_n2->indicador  == null && $value_n2->familia != null ) {
								if (isset($datos1->familia)) {
										if($datos1->familia == $value_n2->familia ) {
											unset($contrap[$key1]);
										}
								}
							 //busco por familia y por pais de servicio.
							} else if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia != null){
								if (isset($datos1->ps) && isset($datos1->familia))  {
									if(strtolower($datos1->ps) == strtolower($value_n2->pais_servicio) && $datos1->familia == $value_n2->familia ){
										unset($contrap[$key1]);
									}
								} else if (!isset($datos1->ps) && isset($datos1->familia)) {
									if($datos1->familia == $value_n2->familia ) {
										unset($contrap[$key1]);
									}
								}
							} else if($value_n2->pais_servicio != null && $value_n2->indicador  == null && $value_n2->familia == null) {
								if (isset($datos1->ps)) {
									if(strtolower($datos1->ps) == strtolower($value_n2->pais_servicio) ){
											unset($contrap[$key1]);
								    }
								}
							}
						}
					}
				}
			}
		}
/************************************************************/

		$mostrar_ps = 0;
		foreach($contrap as $contraparte){
			$mostrar_ps = $contraparte->cant_ps;
			break; 
		} 

		$file = '<table border="1"><tr>';
		if($mostrar_ps > 1){
			$file .= "<td>PAIS DE SERVICIO</td>";
		}
  		$file .= '<td>PAIS' . "</td><td>" . 'FAMILIA' . "</td><td>" . 'RAZON SOCIAL' . "</ td><td>IDENTIFICADOR</td>" . "<td>IDENTIFICACION" . "</td>"; 
		//"<td>INICIO GESTION</td>"; 
		if ($tiene_dias_gestion == 'S') { 
			$file .= "<td>DIAS GESTION</td>";
		}
		if ($cliente==5546348) { 
			$file .= "<td>DATOS COMERCALES</td><td>EMAIL CONTACTO</td>";
		}
		foreach ($prodind as $nombre_producto => $ìndicadores) {
			if (!empty($ìndicadores)) {
				foreach ($ìndicadores as $fld => $data_indicador) { 				
					if ($data_indicador['clave_indicador']=="SCORE_IC" && $fld == "37") {
						continue;
					}
					//$file .= "<td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>";
					$file .= "<td>" . $data_indicador['etiqueta'] . "</td>";
					//print_r ($fld . " - <td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>\r\n");
				}
			}
			else {
				$file .= "<td>" . $nombre_producto . "</td>";
				//print_r("<td>" . $nombre_producto . "</td>\r\n");
			}
		}
		if ($servicio_actual == 47) {
			$file .= "<td>Detalle Rechazos</td>";
		}
		foreach ($titulo_personal as $key => $tit) {
			$file .= "<td>" . $key. "</td>";
		}
		if ($cliente == 1226057645) {
			$file .= "<td>PACTO MUNDIAL</td>";
		}
		if ($cliente == 2046807993 && $servicio_actual == 73) {
			$file .= "<td>Meses Deuda Aportes</td>";
	   		$file .= "<td>Meses Deuda Contribuciones</td>";
		}
		$file .= '</tr>'; 
		$hay = new stdClass(); 
		$datos_cruce = new stdClass(); 
		
		foreach($contrap as $contraparte){

	  		$file .= '<tr valign="top">';
      		if($mostrar_ps > 1) {
      			$file .= "<td>" . $contraparte->pais_servicio . "</td>";
  			}
	  		$file .= "<td>" . $contraparte->country_name . "</td>" . "<td>".$contraparte->nombre_familia . "</td>" . "<td>" . $contraparte->nombre_persona . "</td>" . "<td>" . $contraparte->abreviatura . "</td>" . "<td>" . $contraparte->numero . "</td>"; 
      		//"<td>".$contraparte->inicio_gestion  . "</td>" . 
			if ($tiene_dias_gestion == 'S') { 
				$file .= "<td>".$contraparte->dias_gestion . "</td>";
			}

//			if ($cliente == 5546348) {
//				if(isset($datos_comerciales[$contraparte->contraparte])) {
//  					$file .= "<td>" . $datos_comerciales[$contraparte->contraparte] . "</td>";
//				} else {
//					$file .= "<td></td>";
//				}
//				if(isset($email_contacto[$contraparte->contraparte])) {
//  					$file .= "<td>" . $email_contacto[$contraparte->contraparte] . "</td>";
//				} else {
//					$file .= "<td></td>";
//				}
//			}
			if ($cliente == 5546348) {
				if(isset($datos_comerciales[$contraparte->contraparte])) {
  					$file .= "<td>" . $datos_comerciales[$contraparte->contraparte] . "</td>";
				} else {
					$file .= "<td></td>";
				}
				if(isset($email_contacto[$contraparte->contraparte])) {
  					$file .= "<td>" . $email_contacto[$contraparte->contraparte] . "</td>";
				} elseif (isset($contraparte->email_contacto)) {
					$file .= "<td>" . $contraparte->email_contacto . "</td>";
				} else {
					$file .= "<td></td>";
				}
			} elseif ($cliente == 1758083682) {
				if (isset($contraparte->email_ejecutivo_cuenta)) {
				$file .= "<td>" . $contraparte->email_ejecutivo_cuenta . "</td>";
				} else {
					$file .= "<td></td>";
				}
			}

			$datos_cruce = ''; 
			$cruce_socios = SQLConnection::backendStoreProcedure('LN_control_etica', array($contraparte->contraparte), 'select');
		
			foreach ($cruce_socios as $cruce) {
				if ($datos_cruce == '') { 
					$datos_cruce = $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				} else {
					$datos_cruce = '<br style="mso-data-placement:same-cell;" />' . $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				}
			}
	  		$valores[$contraparte->contraparte]['9993'] = $datos_cruce;

			$datos_cruce = ''; 
			$cruce_socios = SQLConnection::backendStoreProcedure('LN_control_calidad', array($contraparte->contraparte), 'select');
			foreach ($cruce_socios as $cruce) {
				if ($datos_cruce == '') { 
					$datos_cruce = $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				} else  {
					$datos_cruce = '<br style="mso-data-placement:same-cell;" />' . $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
				}
			}
			
	  		$valores[$contraparte->contraparte]['9994'] = $datos_cruce;
	  		foreach ($aind as $k => $id) {

				switch ($id) {
					case 9999:
						$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['N']) ? $documentos[$contraparte->contraparte]['N'] : "") . "</td>";
						break;
					case 9998:
						$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['R']) ? $documentos[$contraparte->contraparte]['R'] : "") . "</td>";
						break;
					case 9997:
						$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['I']) ? $documentos[$contraparte->contraparte]['I'] : "") . "</td>";
						break;
					case 9996:
						//if ($cliente != 5546348){
							$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['V']) ? $documentos[$contraparte->contraparte]['V'] : "") . "</td>";
						//}
						break;
					case 6:
						if (!isset($valores[$contraparte->contraparte][$id])) {
							$valores[$contraparte->contraparte][6] = (isset($valores[$contraparte->contraparte][37]) ? $valores[$contraparte->contraparte][37] : "");
						}
						$file .= "<td>" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
						break;
					case 37:
						break;
		  			default:
						if (isset($valores[$contraparte->contraparte][$id])) { 
							if (substr($valores[$contraparte->contraparte][$id],0,4)==(-100)) { 
								$valores[$contraparte->contraparte][$id] = str_replace('-100','N/A', $valores[$contraparte->contraparte][$id]);
							}
							if ($tipo_datos[$id] == 'I') { 
								$valores[$contraparte->contraparte][$id] = str_replace('.','', $valores[$contraparte->contraparte][$id]);
							}
						}
						switch ($tipo_datos[$id]) {
							case 'F':
								$file .= '<td style="mso-number-format:\'0.00\';">'; 
								break;
							default:
								$file .= "<td>"; 
								break;
						}
						$file .= (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
						break;
				}
			}
			if ($servicio_actual == 47)  {
				$detalle = trim($contraparte->detalle_killer); 
				$detalle = str_replace(';', '<br style="mso-data-placement:same-cell;" />', $detalle); 
				$file .= '<td>' . $detalle . '</td>';
			}
			if(isset($empleados[$contraparte->contraparte])) {
				$empleado = []; 
				$empleado = $empleados[$contraparte->contraparte]; 
				foreach ($titulo_personal as $key1 => $tit) {
					foreach ($empleado as $key => $val) {
						if ($key == $tit) {
							if ($key=='No tenemos personal')  {
								if ($val == '0') { 
									$val = ''; 
								} else  { 
									$val = 'X'; 
								}
							}
							$file .= '<td>' . $val . '</td>';
						}
					}
				}
			} else {
		  		foreach ($titulo_personal as $key => $tit) {
			  		$file .= "<td></td>";
		  		}
			}
			if ($cliente == 1226057645) {
				if(isset($pacto_mundial[$contraparte->contraparte])) {
  					$file .= "<td>" . $pacto_mundial[$contraparte->contraparte] . "</td>";
				} else {
					$file .= "<td></td>";
				}
			}
			if ($cliente == 2046807993 && $servicio_actual == 73) {
				if(isset($deuda_Aportes[$contraparte->contraparte])) {
  					$file .= "<td>" . $deuda_Aportes[$contraparte->contraparte] . "-</td>";
				} else {
					$file .= "<td></td>";
				}
				if(isset($deuda_Contribuciones[$contraparte->contraparte])) {
  					$file .= "<td>" . $deuda_Contribuciones[$contraparte->contraparte] . "-</td>";
				} else {
					$file .= "<td></td>";
				}
			}
		
			$file .= '</tr>'; 
		
	  	}
		$file .= '</table>'; 

		if ($periodo_historico==null) {
			$fecha = date("Y-m-d");
			if ($cron == 'SI')
			{
				$file = utf8_decode($file); 
				$file_txt  = env('PATH_COMPARTIDO') .  '/reportes/Reporte_Contrapartes_' . $servicio_actual . '_' . $cliente . '_' .  $fecha . '.xls'; 
				file_put_contents($file_txt, $file);
				chmod($file_txt,0777);
				echo "Fin"; 
			}
			else 
			{
				header('Content-disposition: attachment; filename=Reporte_Contrapartes_' . $fecha . '.xls');
				header('Content-type: application/vnd.ms-excel; charset=utf-8');
				$file = utf8_decode($file); 
				//echo $file;
				/* 14/02/2020 lo cambiamos por: */
				$response =  array(
					'op' => 'ok',
					'archivo' => 'Reporte_Contrapartes_' . $fecha . '.xls', 
					'file' => "data:application/vnd.ms-excel;base64,".base64_encode($file)
				);
				die(json_encode($response));
			}
		} else {
			header('Content-disposition: attachment; filename=Reporte_al_' . $fecha_archivo . '.xls');
			header('Content-type: application/vnd.ms-excel; charset=utf-8');
			$file = utf8_decode($file);
			echo $file;
			return; 
		}
  	}

  	public function ledExcelPanelControlSub(){
  	    ini_set('memory_limit','4096M');
  		set_time_limit(0); 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$ids = null != Request::input('ids') ? Request::input('ids') : null;
		$array_ids = explode(",", $ids);
		/* CHANCHADA: Cuando se arr		/* CHANCHADA: Cuando se arregle que se puedan pedir mas de 3000 ids sacar >= 3000, si dejar el == 0*/
		if (count($array_ids) >= 3000 || count($array_ids) ==  0 )  
			{ $ids = null; }

		$servicio_actual = Session::get('servicio_actual');

		$contrap = SQLConnection::backendStoreProcedure('LN_panel_control_sub_excel', array($cliente, $ids, $servicio_actual), 'select');

		$ind = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES', $cliente, null, null, null,null,null,null,null,null,null,null,null,'1'), 'select');

		$array_ids = explode(",", $ids);

		foreach ($array_ids as $id) {
		$docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
			$documentos[$id]['N'] = '';
			$documentos[$id]['V'] = '';
			$documentos[$id]['I'] = '';
			$documentos[$id]['R'] = '';
			foreach ($docs as $doc) {
					if ($doc->estado_documento!="No solicitado")
					{
					$documentos[$id][$doc->estado_doc] .= $doc->nombre_tipo_doc . '<br style="mso-data-placement:same-cell;" />'; 
					}
			} 
		} 
			
		foreach ($ind as $data) {

		$prodind[$data->etiqueta][$data->indicador]['etiqueta'] = $data->etiqueta_indicador;
		$prodind[$data->etiqueta][$data->indicador]['tipo_dato'] = $data->tipo_dato;
		$prodind[$data->etiqueta][$data->indicador]['clave_indicador'] = $data->clave_indicador;

		if ($data->clave_indicador=="CUMPL_DOC")
		{
			$prodind[$data->etiqueta]['9996']['etiqueta'] = "Verificados";
			$prodind[$data->etiqueta]['9996']['tipo_dato'] = "I";
			$prodind[$data->etiqueta]['9996']['clave_indicador'] = "V";
			
			$prodind[$data->etiqueta]['9997']['etiqueta'] = "Pendientes de Verificar";
			$prodind[$data->etiqueta]['9997']['tipo_dato'] = "I";
			$prodind[$data->etiqueta]['9997']['clave_indicador'] = "I";

			$prodind[$data->etiqueta]['9998']['etiqueta'] = "Rechazados";
			$prodind[$data->etiqueta]['9998']['tipo_dato'] = "I";
			$prodind[$data->etiqueta]['9998']['clave_indicador'] = "R";
			
			$prodind[$data->etiqueta]['9999']['etiqueta'] = "Pendientes de Ingreso";
			$prodind[$data->etiqueta]['9999']['tipo_dato'] = "I";
			$prodind[$data->etiqueta]['9999']['clave_indicador'] = "N";
		}
		}

		$tipo_datos = [];
		foreach ($prodind as $nombre_producto => $indicadores) {
		foreach ($indicadores as $key => $data) {
			$aind[] = $key; 
			$tipo_datos[$key] = $indicadores[$key]['tipo_dato']; 
		}
		}

		$led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA', $cliente, null, null, null,null,null,null,null,null,null,null,null,'1'), 'select');

		foreach ($led as $datos) {
		//$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data);
		if(in_array($datos->indicador, $aind)) {	  
			//$valores[$datos->contraparte][$datos->indicador] = $datos->valor_sin_formato;
			$valores[$datos->contraparte][$datos->indicador] = $datos->valor;

			if($datos->indicador == 37)
			{
			$valores[$datos->contraparte]['9990'] = $datos->valor_memo;
			}
			if($datos->indicador == 4 && isset($titulo_score))
			{
			if ($datos->texto!=null) 
			{
			$valores[$datos->contraparte]['9995'] = $datos->texto;
			}
			else
			{
				$valores[$datos->contraparte]['9995'] = ''; 
			}
			}
		}
		}
			
		$file = '<table border="1">';
		$file .= '<tr><td>PAIS</td><td>FAMILIA</td><td>CONTRATISTA</td><td>IDENTIFICADOR</td><td>IDENTIFICACION</td>'.
				'<td>FAMILIA SUB</td><td>SUBCONTRATISTA</td><td>IDENTIFICADOR SUB.</td><td>IDENTIFICACION SUB.</td>'.
				'<td>VIGENCIA DESDE</td><td>VIGENCIA HASTA</td>'; 

		/* en desarrollo el indicador a saltear es el 30, en produccion 37 */
		$saltear = "37"; 
		if (env('URL_BASE') == 'http://192.168.121.7') { $saltear = "30";}

		foreach ($prodind as $nombre_producto => $ìndicadores) {
		if (!empty($ìndicadores)) {
			foreach ($ìndicadores as $fld => $data_indicador) { 
			if ($data_indicador['clave_indicador']=="SCORE_IC" && $fld == $saltear)
			{
			continue;
			}
			$file .= "<td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>";
			//print_r ($fld . " - <td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>\r\n");
			}
		}
		else {
			$file .= "<td>" . $nombre_producto . "</td>";
			//print_r("<td>" . $nombre_producto . "</td>\r\n");
		}
		}
		$file .= '</tr>'; 
			
		$hay = new stdClass(); 
		$datos_cruce = new stdClass(); 

		foreach($contrap as $contraparte){

		$file .=  '<tr valign="top">';
		$file .= "<td>".$contraparte->country_name	   . "</td>" .
				"<td>".$contraparte->nombre_familia_padre  . "</td>" .
				"<td>".$contraparte->nombre_persona_padre  . "</td>" .
				"<td>".$contraparte->abreviatura_padre	 . "</td>" .
				"<td>".$contraparte->numero_padre		  . "</td>" .
				"<td>".$contraparte->nombre_familia		. "</td>" .
				"<td>".$contraparte->nombre_persona		. "</td>" .
				"<td>".$contraparte->abreviatura		   . "</td>" .
				"<td>".$contraparte->numero				. "</td>" .
				"<td>".$contraparte->vigencia_desde		. "</td>" .
				"<td>".$contraparte->vigencia_hasta		. "</td>" ;

		foreach ($aind as $k => $id) {

			switch ($id) {
			case 9999:
				$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['N']) ? $documentos[$contraparte->contraparte]['N'] : "") . "</td>";
				break;
			case 9998:
				$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['R']) ? $documentos[$contraparte->contraparte]['R'] : "") . "</td>";
				break;
			case 9997:
				$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['I']) ? $documentos[$contraparte->contraparte]['I'] : "") . "</td>";
				break;
			case 9996:
				$file .= "<td>" . (isset($documentos[$contraparte->contraparte]['V']) ? $documentos[$contraparte->contraparte]['V'] : "") . "</td>";
				break;
			case 6:
			if (!isset($valores[$contraparte->contraparte][$id]))
				{
					$valores[$contraparte->contraparte][6] = (isset($valores[$contraparte->contraparte][37]) ? $valores[$contraparte->contraparte][37] : "");
				}
				$file .= "<td>" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
				break;
			case $saltear:
				break;
			default:
				if (isset($valores[$contraparte->contraparte][$id])) { 
					if (substr($valores[$contraparte->contraparte][$id],0,4)==(-100)) 
						{ $valores[$contraparte->contraparte][$id] = str_replace('-100','N/A', $valores[$contraparte->contraparte][$id]);}
					if ($tipo_datos[$id] == 'I')  // 06/07/2020 a los enteros eliminamos los puntos separadores de miles
						{ $valores[$contraparte->contraparte][$id] = str_replace('.','', $valores[$contraparte->contraparte][$id]);
						}
					}
					switch ($tipo_datos[$id]) {
						case 'F':
							$file .= '<td style="mso-number-format:\'0.00\';">'; 
							break;
						default:
							$file .= "<td>"; 
							break;
					}

				$file .= (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
				break;
			}
			}
			$file .= '</tr>'; 
			
		}
		$file .= '</table>'; 
		$fecha = date("Y-m-d");
		header('Content-disposition: attachment; filename=Reporte_Subcontratistas_' . $fecha . '.xls');
		header('Content-type: application/vnd.ms-excel; charset=utf-8');
		$file = utf8_decode($file); 
		//echo $file;
		/* 14/02/2020 lo cambiamos por: */
		$response =  array(
			'op' => 'ok',
			'archivo' => 'Reporte_Subcontratistas_' . $fecha . '.xls', 
			'file' => "data:application/vnd.ms-excel;base64,".base64_encode($file)
		);
		die(json_encode($response));
		/* */
  	}


  	public static function ledContraparte() {
		$cliente = Session::get('usuario')->cliente['client_id'];
		$id = Request::input('contraparte');
		$cliente_activo = Request::input('cliente_activo') ?? 1;
		$contrato_activo = Request::input('contrato_activo') ?? 1; 

		$tab = (null != Request::input('tab')) ? Request::input('tab') : 'home';
		$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';
		$productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla', $cliente,NULL,NULL, $id), 'select');
		Traducciones::$blade = 'Productos_Contraparte';
		SQLConnection::obtenerTraducciones(Traducciones::$blade);
		foreach ($productos as $key => $p) {
			$productos[$key]->etiqueta = Traducciones::get($p->etiqueta);
			$productos[$key]->nombre_producto = Traducciones::get($p->nombre_producto);
		}

		if ($cliente_activo == 0 || $contrato_activo == 0)  // Para Coface, solo muestra historial, asi que deja vacio el array productos
		{
			$productos = []; 
		}
		else 
		{
			$productos_habilitados = Session::get('productos_habilitados') ?? [];
			$productos_temp = [];
			//dejo de mostrar un producto especifico si está restringido en usuarios_restricciones LT.
			if(!empty($productos_habilitados)){
				foreach ($productos as $key_prod => $producto) {
					foreach ($productos_habilitados as $key => $value) {
						if($value->producto == $producto->producto) {
							if($producto->producto == '2003' || $producto->producto == '2016'){
								$pp = null; 
								$pp = array_search('informeComercial', array_column($productos_temp, 'producto_id')); 
								if ($pp == false) {
									$productos_temp[] = $productos[$key_prod];
								}
							} else  {
								$productos_temp[] = $productos[$key_prod];
							}
						}
					}
				}
				/* 15/06/2022: antes estaba sacada esta linea, entonces no ponia productos_temp como productos y quedaban todos, 
				estaba hecho así porque antes tomaba los productos de las titulos del panel de control, y como hay productos que no se ven en el panel de control, no quedaban en la lista de productos_habilitados.*/
				$productos = $productos_temp; 
			}
		}
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
	
		$depeconid = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'DEP_ECON_CALC'), 'selectOne'); 
		if (empty($depeconid)) {
	  		$depeconid = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'DEP_ECON_BALANCE'), 'selectOne');
		}		
		$navtext = ($contratista_subcontratista == 'C') ? "Contraparte" : "Subcontratista";
		$tieneAF = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'AprobacionFinal'), 'selectOne');
		$indicadores_habilitados = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('PRODUCTOS_INDICADORES', $cliente, null, null, $id,NULL,NULL,null,null,null,null,1,null,null,null,null,null,$qcontrap->servicio_contratado), 'select');
		$vista = \View::make('/led/led_contraparte')->with(compact(['productos' , 'qcontrap', 'tab','cliente','depeconid', 'navtext','contratista_subcontratista','tieneAF','indicadores_habilitados']))->render();


		return json_encode(array('view' => $vista,'info'=>compact('qcontrap')));
		
	}

  public static function ledProductosCliente() {
	$cliente = Session::get('usuario')->cliente['client_id'];
	$contrap = (null != Request::input('contraparte')) ? Request::input('contraparte') : null;
	$productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla_2', $cliente,NULL,NULL, $contrap,NULL,NULL,NULL,NULL,NULL,Session::get('usuario')->user_id), 'select');
	/* foreach ($productos as $key => $value) {
		if ($key == "nombre_producto") {
			echo(var_dump($value));
		}
	} */
	/* for ($i=0; $i < count($productos); $i++) { 
		echo(var_dump($productos[$i]->nombre_producto));
	} */
	//echo(var_dump($productos));
	return json_encode($productos);
  }

    public static function ledHome($id='',$vrm='no',$scorefidelitas='no') {
	    $cliente = Session::get('usuario')->cliente['client_id'];

	    if(!$id){
		    $id = Request::input('contraparte');
	    }

	    $contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';

	    $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),'selectOne'); 
        if ($qcontrap->domicilio == NULL) {
            $temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('buscar_domicilio', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),'selectOne'); 
            // reread
            $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),'selectOne'); 
        }
	    $qcontrap->datos_comerciales = str_replace('<BR>', "\n ---", $qcontrap->datos_comerciales);

	    $familia = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $id, NULL, NULL, NULL, NULL, NULL), 'select');
		
	    $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla',$cliente,null,null,$id), 'select');

		$tieneSF = [];

        /* Calculo de domicilio */
        $domic = DB::selectOne("SELECT * from domicilios_todos where cuit='" . $qcontrap->identificacion . "' and tipo_domicilio='F'");

  	    $gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($qcontrap->contraparte), 'select');

  	    $data = [];
        $data_vrm = [];
        $depecon  = [];
        $scoredepecon = [];
        $scoreapocrifas = [];
        $scorealertas = [];
        $coloralertas = [];
        $detalle_killer = [];
        $detalle_puntos = [];
        $detalle_trazabilidad = [];
        $observaciones = [];
        $productos_habilitados = Session::get('productos_habilitados') ?? [];

/*
        $tieneAF= new stdClass();
        $tieneSF= new stdClass();
        $tieneSA= new stdClass();
*/

        $tieneAF= [];
        $tieneSF= [];
        $tieneSA= []; 
        $tieneDE= []; 



	
        // Ver si tienen Score Final o Aprobacion Final (COFACE)
  	    foreach ($gestiones as $key => $ges) {
            // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
  		    if ($ges->duracion <= 60) {
  			    unset($gestiones[$key]); 
  		    }
  	    }
  	    foreach ($gestiones as $ges) {
	        $tieneSF = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SCORE_FINAL', 
            NULL,
            null,
            null,
            null,
            null,
            1,
            null, 
            0,
            $ges->desde), 'selectOne'); 
		    if (!empty($tieneSF)) {
			    break; 
            }
        }
	
	    foreach ($gestiones as $ges) {
	        $tieneAF = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'AprobacionFinal',
            NULL,
            null,
            null,
            null,
            null,
            1,
            null, 
            0,
            $ges->desde), 'selectOne'); 
		    if (!empty($tieneAF)) {
			    break; 
            }
        }


	    /* 09/11/2021 */
 	    $indicadores_score = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('indicadores_scores',NULL,$qcontrap->contraparte), 'select'); 
        /* fin 09/11/2021 */




        foreach ($gestiones as $ind => $ges) {

            //data
		    $dato = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, 
			null, $id,
            NULL, 
            NULL,
            null,
            null,
            null,
            null,
            1,
            null, 
            0,
            $ges->desde)
            , 'select');

            foreach ($dato as $key => $datos) {
                if (isset($datos->color_personalizado))	 $dato[$key]->color	 = $datos->color_personalizado; 
                if (isset($datos->textcolor_personalizado)) $dato[$key]->textcolor = $datos->textcolor_personalizado; 
                if (isset($datos->svg_data_personalizado))  $dato[$key]->svg_data  = $datos->svg_data_personalizado; 
            }


            $data2[$ges->desde] = $dato; 
            
            $hoy = new DateTime('today'); 
            $hoy = $hoy->format('Y-m-d'); 
	  	    if ($ges->desde <= $hoy && $ges->hasta >= $hoy) {
                // En la gestion acutal completo las barras grises con los indicadores vacios. 
	  		    // En las anteriores no e puede, porque no sabemos si los indicadores activos ahora, eran los mismos que en la gestion anterior	
			    foreach ($indicadores_score as $key => $ind) {
  				    $esta = 'N';
	  			    foreach ($data2[$ges->desde] as $key2 => $datos) {
	  			    	/*if($ind->indicador=='4') 
	  			    	{
	  			    		var_dump($datos);
	  			    	}*/
	  				    if($datos->indicador == $ind->indicador) {
                            $esta = 'S'; 
                            $data[$ges->desde][$key] = $datos; 
	  					    if ($datos->valor == null) {
                                $data[$ges->desde][$key]->valor  = '100'; 
                                $data[$ges->desde][$key]->color  = 'c0c0c0'; 
                                $data[$ges->desde][$key]->textcolor  = '000000'; 
                                $data[$ges->desde][$key]->texto  = ''; 
  						    }
                        }
                    }

	  			    if ($esta == 'N') {
                        $completa = []; 
                        $completa[0] = new stdClass();
                        $completa[0]->contraparte = $ind->contraparte;
                        $completa[0]->indicador = $ind->indicador;
                        $completa[0]->nombre_indicador = $ind->nombre_indicador;
                        $completa[0]->clave_indicador = $ind->clave_indicador;
                        $completa[0]->etiqueta_indicador = $ind->etiqueta_indicador;
                        $completa[0]->producto = $ind->producto;
                        $completa[0]->nombre_producto = $ind->nombre_producto;
                        $completa[0]->producto_id = $ind->producto_id;
                        $completa[0]->ponderacion	 = $ind->ponderacion;
                        $completa[0]->etiqueta = $ind->etiqueta;
                        $completa[0]->visible = 1; 
                        $completa[0]->valor  = '100'; 
                        $completa[0]->texto  = ''; 
                        $completa[0]->color  = 'c0c0c0'; 
                        $completa[0]->textcolor  = "000000"; 
                        $completa[0]->svg_data  = null; 
                        $completa[0]->textcaption  = null; 
                        $completa[0]->color_personalizado  = null; 
                        $completa[0]->textcolor_personalizado  = null; 
                        $completa[0]->svg_data_personalizado  = null; 
                        $completa[0]->titulo_texto  = null; 
                        $completa[0]->ultima_actualizacion  = null; 
                        $completa[0]->dias_ultima_actualizacion  = null; 
                        $data[$ges->desde][$key] = $completa[0]; 
                    }                
/*
                    if($ind->indicador=='4') 
	  			    	{
                		var_dump($data[$ges->desde][$key]); die(); 
	  			    	}

*/
                }



            } else {
  			    //$data[$ges->desde] = $dato;

			    foreach ($data2[$ges->desde] as $key2 => $datos) {
  					$data[$ges->desde][$key2] = $datos; 
  					if ($datos->valor == null) {
						$data[$ges->desde][$key2]->valor  = '100'; 
						$data[$ges->desde][$key2]->color  = 'c0c0c0'; 
						$data[$ges->desde][$key2]->textcolor  = '000000'; 
						$data[$ges->desde][$key2]->texto  = ''; 
                    }
  			    }
  		    }

  		    //var_dump($data);die();


            /* 07/04/2022 */

            $dato_vrm = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion_vrm', null, null, 
                null, $id,
            NULL, 
            NULL,
            null,
            null,
            null,
            null,
            1,
            null, 
            0,
            $ges->desde)
            , 'select');
            foreach ($dato_vrm as $key => $datos) {
                if (isset($datos->color_personalizado))	 $dato_vrm[$key]->color	 = $datos->color_personalizado; 
                if (isset($datos->textcolor_personalizado)) $dato_vrm[$key]->textcolor = $datos->textcolor_personalizado; 
                if (isset($datos->svg_data_personalizado))  $dato_vrm[$key]->svg_data  = $datos->svg_data_personalizado; 
            }

            $data_vrm2[$ges->desde] = $dato_vrm; 

            $indicadores_vrm_score = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('indicadores_vrm_score',NULL,$qcontrap->contraparte), 'select'); 



		    if ($ges->desde <= $hoy && $ges->hasta >= $hoy) {
            // En la gestion actual completo las barras grises con los indicadores vacios, o que no estan calculados. 
            // En las anteriores no se puede, porque no sabemos si los indicadores activos ahora, eran los mismos que en la gestion anterior
		        foreach ($indicadores_vrm_score as $key => $ind) {
  				    $esta = 'N';
	  			    foreach ($data_vrm2[$ges->desde] as $key2 => $datos) {
	  				    if($datos->indicador == $ind->indicador) {
	  					    $esta = 'S'; 
                            $data_vrm[$ges->desde][$key] = $datos; 
                            if ($datos->valor == null) {
                                $data_vrm[$ges->desde][$key]->valor  = ''; 
                                $data_vrm[$ges->desde][$key]->valor_numerico = '100'; 
                                $data_vrm[$ges->desde][$key]->color  = 'c0c0c0'; 
                                $data_vrm[$ges->desde][$key]->textcolor  = '000000'; 
                                $data_vrm[$ges->desde][$key]->texto  = ''; 
                                $data_vrm[$ges->desde][$key]->valor_memo  = ''; 						
                            }
                        }
                    }

	  			    if ($esta == 'N') {
                        $completa = []; 
                        $completa[0] = new stdClass();
                        $completa[0]->contraparte = $ind->contraparte;
                        $completa[0]->indicador = $ind->indicador;
                        $completa[0]->nombre_indicador = $ind->nombre_indicador;
                        $completa[0]->clave_indicador = $ind->clave_indicador;
                        $completa[0]->etiqueta_indicador = $ind->etiqueta_indicador;
                        $completa[0]->producto = $ind->producto;
                        $completa[0]->nombre_producto = $ind->nombre_producto;
                        $completa[0]->producto_id = $ind->producto_id;
                        $completa[0]->ponderacion	 = $ind->ponderacion;
                        $completa[0]->etiqueta = $ind->etiqueta;
                        $completa[0]->visible = 1; 
                        $completa[0]->valor  = ''; 
                        $completa[0]->valor_numerico  = '100'; 
                        $completa[0]->texto  = ''; 
                        $completa[0]->valor_memo  = ''; 
                        $completa[0]->color  = 'c0c0c0'; 
                        $completa[0]->textcolor  = "000000"; 
                        $completa[0]->svg_data  = null; 
                        $completa[0]->textcaption  = null; 
                        $completa[0]->color_personalizado  = null; 
                        $completa[0]->textcolor_personalizado  = null; 
                        $completa[0]->svg_data_personalizado  = null; 
                        $completa[0]->titulo_texto  = null; 
                        $completa[0]->ultima_actualizacion  = null; 
                        $completa[0]->dias_ultima_actualizacion  = null; 
                        $data_vrm[$ges->desde][$key] = $completa[0]; 
                    }
                }

            } else {
                //$data_vrm[$ges->desde] = $dato_vrm; 
                // gestiones anteriores: Si el indicador se calculo, pero tiene valor vacio, hace la barra gris 
  			    foreach ($data_vrm2[$ges->desde] as $key2 => $datos) {
                    $data_vrm[$ges->desde][$key2] = $datos; 
                    if ($datos->valor == null) {
  						$data_vrm[$ges->desde][$key2]->valor  = ''; 
  						$data_vrm[$ges->desde][$key2]->valor_numerico  = '100'; 
						$data_vrm[$ges->desde][$key2]->color  = 'c0c0c0'; 
						$data_vrm[$ges->desde][$key2]->textcolor  = '000000'; 
						$data_vrm[$ges->desde][$key2]->texto  = ''; 
						$data_vrm[$ges->desde][$key2]->valor_memo  = ''; 
                    }
	  				
	  			}
  		    }
            /* Fin 07/04/2022 */



            //depecon
		    $dato_depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,
			'DEP_ECON_CALC', 
			NULL,
			null,
			null,
			null,
			null,
			1,
			null, 
			0,
			$ges->desde)
		    , 'selectOne');

		    $depecon[$ges->desde] = $dato_depecon; 

            //scoredepencon
            $dato_sco_depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,
            'SCORE_DEP_ECON', 
            NULL,
            null,
            null,
            null,
            null,
            1,
            null, 
            0,
            $ges->desde)
            , 'selectOne');

            $scoredepecon[$ges->desde] = $dato_sco_depecon; 

            //scoreapocrifas
		    $dato_sco_ap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,
			'SCORE_APOCRIFAS', 
			NULL,
			null,
			null,
			null,
			null,
			1,
			null, 
			0,
			$ges->desde)
		    , 'selectOne');

		    $scoreapocrifas[$ges->desde] = $dato_sco_ap; 

            //scorealertas
		    $dato_sco_ale = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,
			'SCORE_ALERTAS_BCRA', 
			NULL,
			null,
			null,
			null,
			null,
			1,
			null, 
			0,
			$ges->desde)
		    , 'selectOne');

		    $scorealertas[$ges->desde] = $dato_sco_ale; 
		    //var_dump($ges->desde); 
			$coloralertas[$ges->desde] = new stdClass(); 
			$coloralertas[$ges->desde]->fondo = '000000'; 
			$coloralertas[$ges->desde]->txt   = '000000'; 
			if (isset($scorealertas[$ges->desde]->valor_numerico)) {
			    switch (true) {
				    case ($scorealertas[$ges->desde]->valor_numerico >=81) : $coloralertas[$ges->desde]->fondo = '63b68c'; $coloralertas[$ges->desde]->txt = '000000'; break; 
				    case ($scorealertas[$ges->desde]->valor_numerico >=61) : $coloralertas[$ges->desde]->fondo = 'cbc367'; $coloralertas[$ges->desde]->txt = '000000'; break; 
				    case ($scorealertas[$ges->desde]->valor_numerico >=41) : $coloralertas[$ges->desde]->fondo = 'FFB81C'; $coloralertas[$ges->desde]->txt = '000000'; break; 
				    case ($scorealertas[$ges->desde]->valor_numerico >=21) : $coloralertas[$ges->desde]->fondo = 'd37123'; $coloralertas[$ges->desde]->txt = '000000'; break; 
				    case ($scorealertas[$ges->desde]->valor_numerico >=0)  : $coloralertas[$ges->desde]->fondo = 'A72B2A'; $coloralertas[$ges->desde]->txt = 'FFFFFF'; break; 
			    }
			}
            $productos_habilitados = Session::get('productos_habilitados') ?? [];
            //var_dump($productos_habilitados); die(); 
            $lista_prod = new stdClass();
            $lista_prod = '0';
		    if(!empty($productos_habilitados)){
		        foreach ($productos_habilitados as $key => $productos) {
			        $lista_prod .= ',' . $productos->producto; 
		        }
		    }
		    //var_dump($lista_prod); die(); 
		    /* 13/07/2020, Que solo traiga detalle de los motivos, por los productos habilitados. 
		    Si Stored devuelve CONSULTAR MOTIVOS CON EL USUARIO ADMINISTRADOR */
		    //detalle_killer 
		    $detalle_killer1 = SQLConnection::backendStoreProcedure('LN_score_detalle_killer_', array($qcontrap->contraparte,$ges->desde,$lista_prod), 'selectOne');
		    
            if (isset($detalle_killer1->detalle_killer)) {
                $detalle_killer1->detalle_killer = str_replace('; ',"\n",$detalle_killer1->detalle_killer);
            }
            $detalle_killer[$ges->desde] = $detalle_killer1;
            //detalle_puntos
		
            $detalle_puntos1 = SQLConnection::backendStoreProcedure('LN_score_detalle_puntos_', array($qcontrap->contraparte,$ges->desde,$lista_prod), 'selectOne');
            if (isset($detalle_puntos1->detalle)) {
                $detalle_puntos1->detalle = str_replace('; ',"\n",$detalle_puntos1->detalle);
            }
            $detalle_puntos[$ges->desde] = $detalle_puntos1;

            $detalle_trazabilidad1 = SQLConnection::backendStoreProcedure('LN_trazabilidad_', array($qcontrap->contraparte,$ges->desde), 'selectOne');
            if (isset($detalle_trazabilidad1->detalle)) {
                $detalle_trazabilidad1->detalle = str_replace('; ',"\n",$detalle_trazabilidad1->detalle);
            }
            $detalle_trazabilidad[$ges->desde] = $detalle_trazabilidad1;
                
            $detalle_comentarios1 = SQLConnection::backendStoreProcedure('LN_contraparte_comentarios_', array($qcontrap->contraparte,$ges->desde), 'selectOne');
			$detalle_comentarios1->detalle = str_replace('COMENTARIO INTERNO CLIENTE - ','',$detalle_comentarios1->detalle);
            if (isset($detalle_comentarios1->detalle)) {
                $detalle_comentarios1->detalle = str_replace('; ',"\n",$detalle_comentarios1->detalle);
            }
            $detalle_comentarios[$ges->desde] = $detalle_comentarios1;

            $observaciones[$ges->desde] = new stdClass();
            $observaciones[$ges->desde]->detalle = ''; 
		 
		    if (!empty($detalle_comentarios[$ges->desde]) && $detalle_comentarios[$ges->desde]->detalle !== NULL) {
			    $observaciones[$ges->desde]->detalle  .= /*'- Comentarios: '. "\n" . */$detalle_comentarios[$ges->desde]->detalle  . "\n"; 
		    }		 
	    }

        // Si no econtro depecon, busca la depecon que depende de Balance
	    if (empty($depecon)) {
	        foreach ($gestiones as $ind => $ges) {
		        $dato_depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,'DEP_ECON_BALANCE',NULL,null,null,null,null,1,null, 0,$ges->desde), 'selectOne');

                $depecon[$ges->desde] = $dato_depecon; 

                $dato_sco_depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,'SCORE_DEP_ECON_BAL',NULL,null,null,null,null,1,null,0,$ges->desde), 'selectOne');

                $scoredepecon[$ges->desde] = $dato_sco_depecon; 
            }
        }
        $padre = []; 
        $padre = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $qcontrap->id_padre, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

	    $aprobaciones = SQLConnection::backendStoreProcedure('LN_Panel_Control_SAAS', array($qcontrap->cliente, $qcontrap->contraparte), 'selectOne');

	    /* Traducciones de los nombres de documento */
        Traducciones::$blade = 'home contraparte';
        SQLConnection::obtenerTraducciones(Traducciones::$blade); 

        $hoy = new DateTime('today'); 
        $hoy = $hoy->format('Y-m-d'); 
        $hoy2 = new DateTime('today'); 
        $hoy_dmy = $hoy2->format('d/m/Y'); 
        //	var_dump($productos_habilitados); die(); 


        $campo1 = [];
        $campo2 = [];
        $campo3 = []; // En campo 3 ponemos los indicadores del producto 2080 - Dictamen VRM
        $campo3 = []; 
        $editar = self::indicadorEditables($qcontrap->contraparte,'384'); 
        $campo3 = $editar;
        if (!empty($campo3)) {
            $campo3[0]->indicador = 384;
            $campo3[0]->es_checkbox ='NO';
        }

        /* 21/04/2022: Indicadores Manual cliente de gestiones anteriores */
        $campo1_ant = [];
        $campo2_ant = [];
        $campo3_ant = []; // En campo 3 ponemos los indicadores del producto 2080 - Dictamen VRM
        $campo_ant  = [];
        foreach ($gestiones as $key => $ges) {
            if ($key==0) {
                continue; 
            }
            $indicador1 = self::indicadorEditables($qcontrap->contraparte,'384',$ges->gestion); 
            $campo3_ant[$ges->desde] = [];
            $campo3_ant[$ges->desde] = $indicador1;
        }

        /* 21/04/2022: Fin Indicadores Manual cliente de gestiones anteriores */
        
        /* indicadores que el usuario NO PUEDE VER */

        $restricciones = []; 
        $restricciones = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('indicadores_restringidos',$qcontrap->cliente,Session::get('usuario')->user_id, $qcontrap->servicio_contratado));
        /**/
        $revisado_vrm1 = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($qcontrap->contraparte,'INDICADOR',409,null,null,null,Session::get('usuario')->as_user_id), 'selectOne');
        $fecha_revisado_vrm = $revisado_vrm1->valor_fecha_dmy ?? null;

/* SCORE ARCOR */

		foreach ($gestiones as $ges) {
	        $tieneSA = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'ARCOR_FINAL',
            NULL,
            null,
            null,
            null,
            null,
            1,
            null, 
            0,
            $ges->desde), 'selectOne'); 
		    if (!empty($tieneSA)) {
			    break; 
            }
        }

        $data_arcor = [];
        $ventas = [];
        $arcor_colores = [];
		if (!empty($tieneSA)) {
			$arcor_colores =  SQLConnection::backendStoreProcedure('LN_cliente_nivel_',array($qcontrap->cliente,474), 'select'); 
	        $indicadores_score_arcor = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('indicadores_scores_arcor',NULL,$qcontrap->contraparte), 'select'); 


	        foreach ($gestiones as $ind => $ges) {

			    $dato_arcor = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion_arcor', null, null, 
				null, $id,
	            NULL, 
	            NULL,
	            null,
	            null,
	            null,
	            null,
	            1,
	            null, 
	            0,
	            $ges->desde)
	            , 'select');



	            foreach ($indicadores_score_arcor as $key => $ind) {
	  			    foreach ($dato_arcor as $key2 => $datos) {
	  				    if($datos->indicador == $ind->indicador) {
				            if     ($datos->valor_texto == 'R') { $datos->color = 'A52830';}
				            elseif ($datos->valor_texto == 'A') { $datos->color = 'FBB63D';}
				            elseif ($datos->valor_texto == 'V') { $datos->color = '52BA89';}
				            else   { $datos->color = 'c0c0c0';}
	                        $data_arcor[$ges->desde][$key] = $datos; 
	                    }
	                }
	            }

	            //detalle_puntos
		
	            $detalle_puntos1 = SQLConnection::backendStoreProcedure('LN_score_detalle_puntos_', array($qcontrap->contraparte,$ges->desde,'2101'), 'selectOne'); // 2101 Producto Score Arcor
	            if (isset($detalle_puntos1->detalle)) {
	                $detalle_puntos1->detalle = str_replace('; ',"\n",$detalle_puntos1->detalle);
	            }
	            $detalle_puntos[$ges->desde] = $detalle_puntos1;
	            
		    }
		}

/* FIN SCORE ARCOR */

$esreadonly     = '';
/* KPI ARCOR */
		$campo_kpi      = [];
		$campo_kpi1     = [];
		$campo_kpi1_ant = [];
		$campo_kpi2     = [];
		$campo_kpi2_ant = [];
		if (!empty($tieneSA)) {
			list($campo_kpi, $campo_kpi1, $campo_kpi1_ant, $campo_kpi2, $campo_kpi2_ant, $esreadonly) = self::ledIndicadoresEditables($id);
		}

/**/

/* 21/12/2022 DATOS EXTRA */ 
		foreach ($gestiones as $ges) {
	        $tieneDE = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('producto_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'DATOS_GENERALES_EXTRA',
            NULL,
            null,
            null,
            null,
            null,
            1,
            null, 
            0,
            $ges->desde), 'selectOne'); 
		    if (!empty($tieneDE)) {
			    break; 
            }
        }
		$campo_extra      = [];
		$campo_extra1     = [];
		$campo_extra1_ant = [];
		$campo_extra2     = [];
		$campo_extra2_ant = [];
		if (!empty($tieneDE)) {
			list($campo_extra, $campo_extra1, $campo_extra1_ant, $campo_extra2, $campo_extra2_ant, $esreadonly) = self::ledIndicadoresDatosExtra($id);
		}
/**/


/* 17/01/2023: CLASIFICACION EMPRESAS SOSTENIBILIDAD */
		$tieneSOS = [];
		foreach ($gestiones as $ges) {
	        $tieneSOS = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SOS_CLASIFICACION',
            NULL,
            null,
            null,
            null,
            null,
            1,
            null, 
            0,
            $ges->desde), 'selectOne'); 
		    if (!empty($tieneSOS)) {
			    break; 
            }
        }
/*
		$campo_extra      = [];
		$campo_extra1     = [];
		$campo_extra1_ant = [];
		$campo_extra2     = [];
		$campo_extra2_ant = [];
		//$esreadonly = '';
		if (!empty($tieneSOS)) {
			list($campo_extra, $campo_extra1, $campo_extra1_ant, $campo_extra2, $campo_extra2_ant, $esreadonly) = self::ledSostenibilidad($id,'datos');
		}
*/


	    if ($qcontrap->servicio_contratado == 73) {
			return view('/imperium/home')->with(compact('qcontrap', 'data', 'data_vrm', 'domic', 'familia', 'contratista_subcontratista', 'padre', 'tieneSF', 'gestiones', 'hoy'));
	    } else {
            $sddr = SQLConnection::backendStoreProcedure('LN_scores_VRM',array('SOLICITAR_DDR_PENDIENTE',$qcontrap->contraparte),'selectOne');
            $solicitar_ddr_pendiente = $sddr->solicitar_ddr_pendiente ?? 'NO';

		    if ($vrm=='si') {				
                $vista = \View::make('/led/led_home_vrm')->with(compact('data_vrm','gestiones','restricciones','solicitar_ddr_pendiente'))->render();
                return $vista;
		    }


		    if ($scorefidelitas=='si') {
                $vista = \View::make('/led/led_score_fidelitas')->with(compact('qcontrap', 'data', 'domic', 'data_vrm', 'depecon','scoredepecon','scoreapocrifas','scorealertas','coloralertas', 'detalle_killer','detalle_puntos','familia','contratista_subcontratista','padre','tieneSF','tieneAF','aprobaciones','gestiones','hoy','productos_habilitados','campo1','campo2','campo3','campo1_ant','campo2_ant','campo3_ant','indicadores_score','restricciones','fecha_revisado_vrm','hoy_dmy','detalle_trazabilidad','observaciones','solicitar_ddr_pendiente'))->render();
                return $vista;
		    }

		    if ($vrm!=='si' && $scorefidelitas!=='si') {
		        return view('/led/led_home')->with(compact('qcontrap', 'data', 'domic', 'data_vrm', 'depecon','scoredepecon','scoreapocrifas','scorealertas','coloralertas', 'detalle_killer','detalle_puntos','familia','contratista_subcontratista','padre','tieneSF','tieneAF','aprobaciones','gestiones','hoy','productos_habilitados','campo1','campo2','campo3','campo1_ant','campo2_ant','campo3_ant','indicadores_score','restricciones','fecha_revisado_vrm','hoy_dmy','detalle_trazabilidad','observaciones','solicitar_ddr_pendiente','tieneSA','tieneSOS','data_arcor','campo_kpi',
		        	'campo_kpi1', 'campo_kpi1_ant', 'campo_kpi2', 'campo_kpi2_ant', 'esreadonly',
		        	'campo_extra', 'campo_extra1', 'campo_extra1_ant', 'campo_extra2', 'campo_extra2_ant',
		        	'ventas','arcor_colores'));
	  	    }
	    }
	    /* Fin 04/11/2021 */ 
    } 


  public static function updValoresRevisadoVRM() {

		$id = Request::input('contraparte');
		$revisado = Request::input('revisado') ?? 0;
		$fecha_revisado = Request::input('fecha_revisado') ?? '';
		
		$cliente = Session::get('usuario')->cliente['client_id'];

		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', '408', $revisado,null,null,Session::get('usuario')->as_user_id), 'selectOne');
		if ($revisado == 1) 
		{
			$texto = 'Revisado VRM = SI';
		}
		else
		{
			$texto = 'Revisado VRM = NO';
		}

		/*$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Actualizado por el cliente:' . $texto, $cliente, 'CAMBIO_INDICADOR_408' ,'WWW', $id,Session::get('usuario')->as_user_id),'selectOne');*/
		/* Lo hacemos dentro del SP */

		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', '409', $fecha_revisado,null,null,Session::get('usuario')->as_user_id), 'selectOne');
		if ($fecha_revisado == null)
		{
			$texto = 'Fecha Revisado VRM = vacia';
		}
		else
		{
			$texto = 'Fecha Revisado VRM = ' . $fecha_revisado;
		}

		$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Actualizado por el cliente:' . $texto, $cliente, 'CAMBIO_INDICADOR_409', 'WWW', $id,Session::get('usuario')->as_user_id),'selectOne');
		

		$ir_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',null,$id,null), 'selectOne');
		
	}


 public static function updValoresComentarios() {
		$id = Request::input('contraparte');
		$detalle = Request::input('comentarios') ?? null;
		$detalle_fidelitas = 'COMENTARIO INTERNO CLIENTE';
 		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'COMENTARIOS', '0', NULL,$detalle,$detalle_fidelitas,Session::get('usuario')->as_user_id), 'selectOne');
		$cliente = Session::get('usuario')->cliente['client_id'];
		$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se ingresa un comentario interno', $cliente, 'COMENTARIO_CLIENTE','WWW', $id,Session::get('usuario')->as_user_id),'selectOne');

		$ges = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $id, NULL, NULL, NULL, NULL), 'selectOne');
		$productos_habilitados = Session::get('productos_habilitados') ?? [];
		//var_dump($productos_habilitados); die(); 
		$lista_prod = new stdClass();
		$lista_prod = '0';
		if(!empty($productos_habilitados)){
			foreach ($productos_habilitados as $key => $productos) {
				$lista_prod .= ',' . $productos->producto; 
			}
		}
		/*
		$detalle_killer1 = SQLConnection::backendStoreProcedure('LN_score_detalle_killer_', array($id,$ges->desde,$lista_prod), 'selectOne');
			if (isset($detalle_killer1->detalle_killer)) {
			  $detalle_killer1->detalle_killer = str_replace('; ',"\n",$detalle_killer1->detalle_killer);
			}
		$detalle_killer[$ges->desde] = $detalle_killer1;
		
		$detalle_puntos1 = SQLConnection::backendStoreProcedure('LN_score_detalle_puntos_', array($id,$ges->desde,$lista_prod), 'selectOne');
			if (isset($detalle_puntos1->detalle)) {
			  $detalle_puntos1->detalle = str_replace('; ',"\n",$detalle_puntos1->detalle);
			}
		$detalle_puntos[$ges->desde] = $detalle_puntos1;

		$detalle_trazabilidad1 = SQLConnection::backendStoreProcedure('LN_trazabilidad_', array($id,$ges->desde), 'selectOne');
			if (isset($detalle_trazabilidad1->detalle)) {
			  $detalle_trazabilidad1->detalle = str_replace('; ',"\n",$detalle_trazabilidad1->detalle);
			}
		$detalle_trazabilidad[$ges->desde] = $detalle_trazabilidad1;
*/
		$detalle_comentarios1 = SQLConnection::backendStoreProcedure('LN_contraparte_comentarios_', array($id,$ges->desde), 'selectOne');
			if (isset($detalle_comentarios1->detalle)) {
			  $detalle_comentarios1->detalle = str_replace('; ',"\n",$detalle_comentarios1->detalle);
			}
		$detalle_comentarios[$ges->desde] = $detalle_comentarios1;

		$observaciones[$ges->desde] = new stdClass();
		$observaciones[$ges->desde]->detalle = ''; 
		/*if (!empty($detalle_killer[$ges->desde]) && $detalle_killer[$ges->desde]->detalle !== NULL)
		{
			$observaciones[$ges->desde]->detalle  .= '- Motivos rechazo: '. "\n" . $detalle_killer[$ges->desde]->detalle . "\n"; 
		}
		if (!empty($detalle_puntos[$ges->desde]) && $detalle_puntos[$ges->desde]->detalle !== NULL)
		{
			$observaciones[$ges->desde]->detalle  .= '- Motivos Scores: '. "\n" .  $detalle_puntos[$ges->desde]->detalle  . "\n"; 
		}*/
        if (!empty($detalle_comentarios[$ges->desde]) && $detalle_comentarios[$ges->desde]->detalle !== NULL)
		{
			$observaciones[$ges->desde]->detalle  .= /*'- Comentarios: '. "\n" . */$detalle_comentarios[$ges->desde]->detalle  . "\n"; 
		}

		/*
		if (!empty($detalle_trazabilidad[$ges->desde]) && $detalle_trazabilidad[$ges->desde]->detalle !== NULL)
		{
			$observaciones[$ges->desde]->detalle  .= '- Historial: '. "\n" . $detalle_trazabilidad[$ges->desde]->detalle  . "\n"; 
		}
*/
		$observaciones1 = $observaciones[$ges->desde]->detalle; 

        return (json_encode(['observaciones' => $observaciones1]));

 }

	public static function ledLinkContraparte($contraparte=NULL) {
		if ($contraparte == NULL)
		{
		$contraparte = Request::input('contraparte');
		}
		if(!empty($contraparte)) {
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
			return view('/led/led_link_contraparte')->with(compact(['qcontrap']));
		}
	}

	public static function ledLinkContraparteEnviar() {
		$id     = Request::input('contraparte');
		$enviar = Request::input('enviar');
		$email  = Request::input('email');
		$expira = Request::input('fecha_expira');

		$limite_carga_inicial = date_add(date_add( date_create_from_format('!d/m/Y', $expira), date_interval_create_from_date_string("1 day")), date_interval_create_from_date_string('-1 second'));

		$limite_carga_inicial = date_format($limite_carga_inicial, 'Y-m-d H:i:s');

		$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $limite_carga_inicial, NULL, NULL, NULL, NULL), 'selectOne');

		$clave = Misc::generateRandomString(6);
			
		DB::selectOne("update LN_contrapartes set
								clave = '" . $clave . "', clave_temporal = 1, 
								clave_cambio = NULL, modified = GETDATE(), modified_by = ". Session::get('usuario')->user_id .
								", clave_expira = '" . $limite_carga_inicial . "' where contraparte = " . $id);
		
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
		if ($qcontrap->servicio_contratado == '73') {
			$impe = SQLConnection::backendStoreProcedure('Imperium_cliente_contraparte_led', array('buscar_contratista_imperium', $id), 'selectOne');
			DB::selectOne("update users set password = '" . $clave . "' where user_id = " . $impe->user_id);
			$result = EmailController::enviarMail('EMAIL-IMPE','ALTA-USUARIO', 'ALTA-USUARIO-SUBJECT', $id, $expira, ($enviar==0) ? '' : trim($email),true);
		}
		else
		{
			$result = EmailControllerBackend::enviarMail('EMAIL-LED','ALTA','',$id, $expira,($enviar==0) ? '' : trim($email) , true);
		}

		if ($result == true) {
			$temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Envío de link de acceso a la contraparte para cargar documentación', $qcontrap->cliente, 'ENVIO_LINK_CONTRAPARTE', 'BACK', $id, Session::get('usuario')->as_user_id), 'selectOne');
		}
		$msg = $result ? 'El mensaje fue enviado correctamente.' : 'La dirección de e-mail es inválida.';

		return json_encode(array('mensaje' => $msg));

	}


public static function ledContrapartesEmailEnviar() {
		$total = 0;
		$error = 0;
		$correctos = []; 
		$errores = []; 
		$expira = Request::input('fecha_expira');
		$limite_carga_inicial = date_add(date_add( date_create_from_format('!d/m/Y', $expira), date_interval_create_from_date_string("1 day")), date_interval_create_from_date_string('-1 second'));
		$limite_carga_inicial = date_format($limite_carga_inicial, 'Y-m-d H:i:s');
		$enviar= 0; // mandar a la direccion de email cargada
		$email = ''; 
		/*$enviar= 1; // Para probar con mi email 
		$email = 'marita.soria@gmail.com'; */
		if(!empty(Request::input('contraparte'))) {
			foreach (Request::input('contraparte') as $k => $id) {
				$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $limite_carga_inicial, NULL, NULL, NULL, NULL), 'selectOne');

				$clave = Misc::generateRandomString(6);
			
				DB::selectOne("update LN_contrapartes set
								clave = '" . $clave . "', clave_temporal = 1, 
								clave_cambio = NULL, modified = GETDATE(), modified_by = ". Session::get('usuario')->user_id .
								", clave_expira = '" . $limite_carga_inicial . "' where contraparte = " . $id);
		
				$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
				$tipo_mail = 'ALTA-LINK';
				if ($qcontrap->servicio_contratado == '73') {
					$impe = SQLConnection::backendStoreProcedure('Imperium_cliente_contraparte_led', array('buscar_contratista_imperium', $id), 'selectOne');
					DB::selectOne("update users set password = '" . $clave . "' where user_id = " . $impe->user_id);
					$result = EmailController::enviarMail('EMAIL-IMPE','ALTA-USUARIO', 'ALTA-USUARIO-SUBJECT', $id, $expira, ($enviar==0) ? '' : trim($email),true);
				}
				else
				{
					$result = EmailControllerBackend::enviarMail('EMAIL-LED','ALTA','',$id, $expira,($enviar==0) ? '' : trim($email) , true);
				}

				if ($result == true) {
					$temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Envío de link de acceso a la contraparte para cargar documentación', $qcontrap->cliente, 'ENVIO_LINK_CONTRAPARTE', 'BACK', $id, Session::get('usuario')->as_user_id), 'selectOne');
					$correctos[$total] = new stdClass(); 
					$correctos[$total]->contraparte = trim($qcontrap->nombre_persona); 
					$correctos[$total]->mail = $qcontrap->email_contacto;
					$correctos[$total]->tipo = $tipo_mail;
					$total++;
				}
				else 
				{
					$errores[$error] = new stdClass(); 
					$errores[$error]->contraparte = trim($qcontrap->nombre_persona); 
					$errores[$error]->mail = $qcontrap->email_contacto;
					$errores[$error]->tipo = $tipo_mail;
					$error++;
				}
			}
		}
		return view('/led/led_emails_enviados')->with(compact(['total','correctos','error','errores']));

	}


   public static function updValoresScore() {
	$id = Request::input('contraparte');
	$indica = Request::input('indicador') ?? null;
	$producto = Request::input('producto') ?? null;

	$detalle = Request::input('detalle') ?? null;
	$detalle_fidelitas = Request::input('detalle_fidelitas') ?? null;
	$solicitarDDR = Request::input('solicitarDDR') ?? '';

	if ($solicitarDDR=='SI' || $solicitarDDR=='NO')
	{	
		if ($solicitarDDR=='SI') { $accion = 'ALTA';}
		if ($solicitarDDR=='NO') { $accion = 'BAJA';}

		$solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array($accion,$id,Session::get('usuario')->user_id,0,'DDR',1), 'selectOne');
		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', 396, $solicitarDDR,null,null,Session::get('usuario')->as_user_id), 'selectOne');
		$ir_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',null,$id,null), 'selectOne');
		$cliente = Session::get('usuario')->cliente['client_id'];
		$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Solicitar DDR:'.$solicitarDDR, $cliente, 'CAMBIO_INDICADOR_396','WWW', $id,Session::get('usuario')->as_user_id),'selectOne');

	}
	else 
	{
		
		if ($indica == null)
		{
			$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'SELECT_PRUEBA'), 'select'); 
		}
		else 
		{
			$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'INDICADOR',$indica,null,null,null,Session::get('usuario')->as_user_id), 'select'); 
		}
		foreach ($editables as $key => $valor) {
			$indicador = $valor->indicador;
			IF ($valor->clave_indicador == 'VRM_DDR' || $valor->clave_indicador == 'REVISADO_VRM') { continue; } // Lo hacemos separado
			$valor_indicador = $_POST[$valor->clave_indicador]; 

/*
		var_dump($id);
		var_dump($indica);
		var_dump($valor_indicador);  
		var_dump($detalle);  
		var_dump($detalle_fidelitas);  
		var_dump(Session::get('usuario')->user_id); die(); 
*/
			$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', $indicador, $valor_indicador,$detalle,$detalle_fidelitas,Session::get('usuario')->as_user_id), 'selectOne');
			$ir_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',null,$id,null), 'selectOne');
			$cliente = Session::get('usuario')->cliente['client_id'];
			/*$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Actualizado por el cliente: ' . $valor->nombre_indicador . ': ' . $valor_indicador, $cliente, 'CAMBIO_INDICADOR_'.$indicador,'WWW', $id,Session::get('usuario')->as_user_id),'selectOne');*/
			/* lo hacemos dentro del SP */

		}
		
	}

	if ($indica == '495')
 	{
		/* Dispara documento de sostenibilidad que le corresponda: 
		SOSTENIBILIDAD-G (Grandes empresas)
		SOSTENIBILIDAD-P (Pymes)
		SOSTENIBILIDAD-A (Autónomos)
		*/
 		$solicitar_sostenibilidad = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('ALTA',$id,Session::get('usuario')->user_id,0,'SOSTENIBILIDAD-'.$valor_indicador,1), 'selectOne');

		$vista_sostenibilidad = self::ledSostenibilidad($id); 
		$vista_home_vrm = self::ledHome($id,'si'); 
		return array('vista_sostenibilidad' => $vista_sostenibilidad,'vista_home_vrm' => $vista_home_vrm);
 	}

	if ($producto == '2105')
 	{
 		$ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',null,$id,null), 'selectOne');
		// Lo mando al queue, porque es manual, pero quiero que se regenere el panel

		/* Manda un mail a las Chechus, cuando se cambia el indicadores 520	- Nivel de Riesgo preliminar */
		if ($indica == '520')
		{
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

			//$to[] ='maria.soria@fidelitas.com.ar';
			$to[] ='evaluaciondeproveedores@claro.com.ar';
        	$to[] ='ClaroCompliance@claro.com.ar';

			$content = array('identificacion'=> $qcontrap->identificacion,
							 'nombre_persona'=> $qcontrap->nombre_persona
							);
			$from = 'servicio@fidelitas.com.ar';
			$bcc = 'soporteled@fidelitas.com.ar';
			$replyto = 'soporteled@fidelitas.com.ar';
			
			$asunto = 'Reporte preliminar de Debida Diligencia'; 
		
			Misc::enviarMailLED('/led/led_preliminar_dd_mail' , $from, $to, $bcc, $replyto, $content, $asunto);
		}

		$vista_debida = self::ledDebidaDiligencia($id); 
		return array('vista_debida' => $vista_debida);
 	}
 	
 	if ($indica == '324')
 	{
		$vista_reputacional = self::ledRepRisk($id); 
		$vista_home_vrm = self::ledHome($id,'si'); 
		return array('vista_reputacional' => $vista_reputacional,'vista_home_vrm' => $vista_home_vrm);
 	}
 	else
 	{
 		if ($indica !== '384')
	 	{
			$vista_wordcheck = self::ledWordcheck($id); 
			$vista_home_vrm = self::ledHome($id,'si'); 
			return array('vista_wordcheck' => $vista_wordcheck,'vista_home_vrm' => $vista_home_vrm);
	 	}
	 	else 
	 	{
			//return self::ledHome($id,'si'); 
			$vista_home_vrm = self::ledHome($id,'si'); 
			return array('vista_home_vrm' => $vista_home_vrm);
	 	}
	 }
	

}

	public static function ledSoloBrief()
	{
		$id = Request::input('contraparte');
		$prod = Request::input('producto') ?? '2107';
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, 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');
		$apikey = env('APIKEY_API_BRIEF');

		$incluye_balance =  1;
	    $mostrar_homonimos = false;
		return view('/led/led_solo_brief')->with(compact('qcontrap', 'qproducto', 'apikey', 'incluye_balance','mostrar_homonimos')); 
	}



	public static function ledInformeComercial()
	{

		$mostrar_homonimos = true;
		$incluir_homonimos_impresion = Request::input('incluir_homonimos_impresion');
		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');
		} 

		$id = Request::input('contraparte');
		$prod = Request::input('producto') ?? '2016';
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, 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');
		$apikey = env('API_KEY');

		// Evalúo si la contraparte tiene asociado el producto balances 
		$tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $id);
		// 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('/led/led_informe_comercial2')->with(compact('qcontrap', 'qproducto', 'apikey', 'incluye_balance','mostrar_homonimos'));
	}

	/* vista del informe comercial para otros países no AR */
	public static function ledInformeComercialExterior()
	{
		$id = Request::input('contraparte');
		$prod = Request::input('producto') ?? '2016';
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, 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');

		$ind = SQLConnection::backendStoreProcedure('LN_indicadores_', array('search', null, $prod, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');

		$score = [];
		if (!empty($ind)) {
			$score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, $ind->clave_indicador), 'selectOne');
		}

		$file_path = null;
		$file_url = null;
		$cdata = DB::selectOne('select contraparte, gestion from LN_gestiones where contraparte = ' . $id . ' and desde <= GETDATE() and hasta >= GETDATE() and vigente = 1');
		if (!empty($cdata)) {
			$file_path = env('PATH_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf';
			if (file_exists($file_path)) {
				$file_url = env('RUTA_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf';
			}
		}

		return view('/led/led_informe_comercial_exterior')->with(compact('qcontrap', 'qproducto', 'score', 'file_path', 'file_url'));
	}


	public static function ledRepRiskAnterior($id=null)
	{
		if(!$id){
			$id = Request::input('contraparte');
		}
		$prod = Request::input('producto') ?? '2060';
	
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, 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');
		
		$campo = []; 
		$campo = self::indicadorEditables($id,'324'); 

/*
		$ind = SQLConnection::backendStoreProcedure('LN_indicadores_', array('search', null, $prod, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
		$score = [];
		if (!empty($ind)) {
			$score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, $ind->clave_indicador), 'selectOne');
			$score_num = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_valor_numerico', null, null, null, $id, $ind->clave_indicador), 'selectOne');
		}
*/



	

		$score = [];
		$score_vrm = [];
					
		$score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'SCORE_RR'), 'selectOne');
		$score_num = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_valor_numerico', null, null, null, $id, 'SCORE_RR'), 'selectOne');
		$score_vrm = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'VRM_Score_RR'), 'selectOne');
	
		$file_path = null;
		$file_url = null;
		$cdata = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('GESTION', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		if (!empty($cdata)) {
			$file_path = env('PATH_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf';
			if (file_exists($file_path)) {
				$file_url = env('RUTA_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf';
			}
		}

		$vista = \View::make('/led/led_reprisk')->with(compact('qcontrap', 'qproducto', 'score', 'score_num','score_vrm','file_path', 'file_url','campo'))->render();
		return $vista;
		//return view('/led/led_reprisk')->with(compact('qcontrap', 'qproducto', 'score', 'score_num','score_vrm','file_path', 'file_url','campo'));
	}
	
	public static function ledRepRisk($id=null)
	{
		if(!$id){
			$id = Request::input('contraparte');
		}
		$prod = Request::input('producto') ?? '2060';
	
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, 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');
		
		$campo = []; 
		$campo = self::indicadorEditables($id,'324'); 

		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');

		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
		$score = [];
		$score_vrm = [];

		$file_path = [];
		$file_url = [];
	
	  	foreach ($gestiones as $ges)
	  	{

			$score[$ges->desde] = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,
				'SCORE_RR', 
				NULL,
				null,
				null,
				null,
				null,
				1,
				null, 
				0,
				$ges->desde)
			    , 'selectOne');

					
			$score_num[$ges->desde] = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_valor_numerico', null, null, null, $id,
					'SCORE_RR', 
					NULL,
					null,
					null,
					null,
					null,
					1,
					null, 
					0,
					$ges->desde)
				    , 'selectOne');
			/*$score_vrm[$ges->desde] = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'VRM_Score_RR', 
					NULL,
					null,
					null,
					null,
					null,	
					1,
					null, 
					0,
					$ges->desde)
				    , 'selectOne');*/

		    $score_vrm[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2060,$ges->gestion),'select');


			$file_path[$ges->desde] = null;
			$file_url[$ges->desde] = null;
	
			$file_path[$ges->desde] = env('PATH_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $id . '/' . $ges->gestion . '/' . $prod . '.pdf';
			if (file_exists($file_path[$ges->desde])) {
				$file_url[$ges->desde] = env('RUTA_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $id . '/' . $ges->gestion . '/' . $prod . '.pdf';
			}
		}

		$vista = \View::make('/led/led_reprisk_gestiones')->with(compact('qcontrap', 'qproducto', 'score', 'score_num','score_vrm','file_path', 'file_url','campo','gestiones'))->render();
		return $vista;
	}

	public static function ledDocumentos($id=null,$contratista_subcontratista=null)
	{
		if ($id==null) { $id = Request::input('contraparte'); $vez = 'inicio';} else { $vez = 'activo';} 
		if ($contratista_subcontratista==null) 
		{
		$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';
		}
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $id, null, null, 1, null));

		//$docs = SQLConnection::backendStoreProcedure('LN_docs_', array('search', NULL, $qcontrap->cliente, $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $gest->gestion, NULL), 'select');

			$files = [];
		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
	  	foreach ($gestiones as $ges)
	  	{
		//$scoredoc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte',null,null,null,$id,'SCORE_DOC'), 'selectOne');

  		$scoredoc1 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,
			'SCORE_DOC', 
			NULL,
			null,
			null,
			null,
			null,
			1,
			null, 
			0,
			$ges->desde)
		    , 'selectOne');

			$scoredoc[$ges->desde] = $scoredoc1; 
			//$cumpldoc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte',null,null,null,$id,'CUMPL_DOC'), 'selectOne');

			$cumpldoc1 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,
				'CUMPL_DOC', 
				NULL,
				null,
				null,
				null,
				null,
				1,
				null, 
				0,
				$ges->desde)
			    , 'selectOne');

			$cumpldoc[$ges->desde] = $cumpldoc1; 

			//$docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

			$docs1 = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array(
				'DOCUMENTOS_POR_GESTION', $id, 
				null, null, null, null, null, null, null, null, null, null, null, null, null,
				null, null, null, null, null, null, $ges->desde));

			$docs[$ges->desde] = $docs1; 

			$n = -1;
			foreach ($docs1 as $k => $doc) {
				if ($doc->estado_doc == 'N' || $doc->estado_doc == 'I' || $doc->estado_doc == 'R' || $doc->estado_doc == 'V') 
				{
					$n++;
					if ($doc->es_balance == 1) {
						/*$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);
					$files[$ges->desde][$n]['path'] = $file_path;
					$files[$ges->desde][$n]['url'] = $file_url;
					$files[$ges->desde][$n]['exists'] = $file_exists;
					}
			}
		}

		/* Traducciones de los nombres de documento */
		Traducciones::$blade = 'documentos';
		SQLConnection::obtenerTraducciones(Traducciones::$blade); 
		if ($vez == 'inicio')
		{
			return view('/led/led_documentos')->with(compact(['vez','qcontrap','docs', 'files', 'scoredoc', 'cumpldoc','contratista_subcontratista','gestiones']));
		}
		else 
		{
			return view('/led/led_documentos_tabla')->with(compact(['vez','qcontrap','docs', 'files', 'scoredoc', 'cumpldoc','contratista_subcontratista','gestiones']));
		}
	}

	public function ledDocumentosActivo(){  
		$doc_id      = Request::Input('doc_id');
		$aplica      = Request::Input('aplica');
		$contraparte = Request::Input('contraparte');
		$motivo      = Request::Input('motivo');
		$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';
		$doc_act = SQLConnection::backendStoreProcedure('LN_docs_activo', array($contraparte, $doc_id, $aplica, $motivo, Session::get('usuario')->user_id), 'selectOne'); 
		return self::ledDocumentos($contraparte,$contratista_subcontratista); 
	}

	public static function ledDetalleDocumento()
	{
		$id = Request::input('doc_id');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
		return view('/led/led_detalle_documento')->with(compact(['doc']));
	}

	public static function ledNovedades()
	{
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		if (!empty($qcontrap)) {
			$novedades = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('NOVEDADES', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		}

		return view('/led/led_novedades')->with(compact(['qcontrap', 'novedades']));
	}

	public static function ledHistorial(){
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		return view('/led/led_historial')->with(compact(['qcontrap']));
	}
	
	public static function ledHistorialInfo($id=0,$pdf=0){
				if ($id==0) { $id = Request::input('contraparte'); } 
        $historial = SQLConnection::backendStoreProcedure('SAAS_historial',array('0','0',$id));

        foreach($historial as $key => $value){

          	if ($pdf==0)
          	{
	            if($value->estado == 'V'){
	                $historial[$key]->estado = '<i class="fa fa-check text_color_V"  style="font-size:21px" aria-hidden="true"></i>';
	            }else if($value->estado == 'A'){
	                $historial[$key]->estado = '<i class="fa fa-exclamation text_color_A"  style="font-size:21px" aria-hidden="true"></i>';
	            }else{
	                $historial[$key]->estado = '<i class="fa fa-times text_color_R"  style="font-size:21px" aria-hidden="true"></i>';
	            }
          	}
            
          	if ($pdf==1)
          	{
	            if($value->estado == 'V'){
	                $historial[$key]->estado = '<span style="color:#52BA89;">' . $value->texto . '</span>'; 
	            }else if($value->estado == 'A'){
	                $historial[$key]->estado = '<span style="color:#FBB63D;">'. $value->texto . '</span>';
	            }else{
	                $historial[$key]->estado = '<span style="color:#A52830;">' . $value->texto . '</span>';
	            }
          	}

						$bancos_estado    = $value->bancos_estado;
          	$cheques_estado   = $value->cheques_estado;
          	$formales_estado  = $value->formales_estado;
          	$fiscales_estado  = $value->fiscales_estado;
          	$contables_estado = $value->contables_estado;
          	$legales_estado   = $value->legales_estado;

            if($value->bancos_estado == 'V'){
             $historial[$key]->bancos_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#52BA89;" /></svg>';
            }else if($value->bancos_estado == 'A'){
             $historial[$key]->bancos_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#FBB63D;" /></svg>';
            }else{
             $historial[$key]->bancos_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#A52830;" /></svg>';
            }

            if($value->cheques_estado == 'V'){
             $historial[$key]->cheques_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#52BA89;" /></svg>';
            }else if($value->cheques_estado == 'A'){
             $historial[$key]->cheques_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#FBB63D;" /></svg>';
            }else{
             $historial[$key]->cheques_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#A52830;" /></svg>';
            }

            if($value->formales_estado == 'V'){
             $historial[$key]->formales_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#52BA89;" /></svg>';
            }else if($value->formales_estado == 'A'){
             $historial[$key]->formales_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#FBB63D;" /></svg>';
            }else{
             $historial[$key]->formales_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#A52830;" /></svg>';
            }

            if($value->fiscales_estado == 'V'){
             $historial[$key]->fiscales_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#52BA89;" /></svg>';
            }else if($value->fiscales_estado == 'A'){
             $historial[$key]->fiscales_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#FBB63D;" /></svg>';
            }else{
             $historial[$key]->fiscales_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#A52830;" /></svg>';
            }
          
            if($value->contables_estado == 'V'){
             $historial[$key]->contables_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#52BA89;" /></svg>';
            }else if($value->contables_estado == 'A'){
             $historial[$key]->contables_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#FBB63D;" /></svg>';
            }else{
             $historial[$key]->contables_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#A52830;" /></svg>';
            }

            if($value->legales_estado == 'V'){
             $historial[$key]->legales_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#52BA89;" /></svg>';
            }else if($value->legales_estado == 'A'){
             $historial[$key]->legales_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#FBB63D;" /></svg>';
            }else{
             $historial[$key]->legales_estado = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#A52830;" /></svg>';
            }

            if ($pdf==1)
            {
            	$historial[$key]->bancos_estado    .=  '<br>' . $bancos_estado; 
            	$historial[$key]->cheques_estado   .=  '<br>' . $cheques_estado; 
            	$historial[$key]->formales_estado  .=  '<br>' . $formales_estado; 
            	$historial[$key]->fiscales_estado  .=  '<br>' . $fiscales_estado; 
            	$historial[$key]->contables_estado .=  '<br>' . $contables_estado; 
            	$historial[$key]->legales_estado   .=  '<br>' . $legales_estado; 
            }
          
        }
        return json_encode($historial);
    }


    public static function ledHistorialTrazabilidad(){
		$id = Request::input('contraparte');
        $trazabilidad = SQLConnection::backendStoreProcedure('obtener_trazabilidad_coface',array($id));

        foreach($trazabilidad as $key => $value){ 	

            $trazabilidad[$key]->motivo = str_replace('<br />',' -- ', $value->motivo);
            $trazabilidad[$key]->motivo = str_replace('<br>',' -- ', $value->motivo);
            $trazabilidad[$key]->motivo = str_replace('Aprobacion','Aprobacion ', $value->motivo);

        	if ($value->indicador ==  'APROBACIONFINAL' or $value->indicador ==  'EXCEPCION')
        	{

        	   if($value->valor_texto_old == 'V'){
	                $trazabilidad[$key]->valor_texto_old = '<i class="fa fa-check text_color_V"  style="font-size:21px" aria-hidden="true"></i>';
	            }else if($value->valor_texto_old == 'A'){
	                $trazabilidad[$key]->valor_texto_old = '<i class="fa fa-exclamation text_color_A"  style="font-size:21px" aria-hidden="true"></i>';
	            }else if($value->valor_texto_old == 'R'){
	                $trazabilidad[$key]->valor_texto_old = '<i class="fa fa-times text_color_R"  style="font-size:21px" aria-hidden="true"></i>';
	            }

	            if($value->valor_texto_new == 'V'){
	                $trazabilidad[$key]->valor_texto_new = '<i class="fa fa-check text_color_V"  style="font-size:21px" aria-hidden="true"></i>';
	            }else if($value->valor_texto_new == 'A'){
	                $trazabilidad[$key]->valor_texto_new = '<i class="fa fa-exclamation text_color_A"  style="font-size:21px" aria-hidden="true"></i>';
	            }else if($value->valor_texto_new == 'R'){
	                $trazabilidad[$key]->valor_texto_new = '<i class="fa fa-times text_color_R"  style="font-size:21px" aria-hidden="true"></i>';
	            }
        	}
        	else
        	{ 
	            if($value->valor_texto_old == 'V'){
	                $trazabilidad[$key]->valor_texto_old = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#52BA89;" /></svg>';;
	            }else if($value->valor_texto_old == 'A'){
	                $trazabilidad[$key]->valor_texto_old = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#FBB63D;" /></svg>';
	            }else if($value->valor_texto_old == 'R'){
	                $trazabilidad[$key]->valor_texto_old = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#A52830;" /></svg>';
	            }

	            if($value->valor_texto_new == 'V'){
	                $trazabilidad[$key]->valor_texto_new = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#52BA89;" /></svg>';
	            }else if($value->valor_texto_new == 'A'){
	                $trazabilidad[$key]->valor_texto_new = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#FBB63D;" /></svg>';
	            }else if($value->valor_texto_new == 'R'){
	                $trazabilidad[$key]->valor_texto_new = '<svg width="10" height="10"><rect width="10" height="10" style="fill:#A52830;" /></svg>';
	            }  
        	}
        }
        return json_encode($trazabilidad);
    }




	public static function ledNovedadesDetalle()
	{
		$cuit				   = Request::input('cuit');
		$seccion_mantenimiento  = Request::input('seccion_mantenimiento');
		$tipo_novedad		   = Request::input('tipo_novedad');
		$tabla				  = Request::input('tabla');
		$nombre				 = Request::input('nombre');
		$fecha				= Request::input('fecha');
		$resultados			 = SQLConnection::obtenerNovedadesHTML($cuit, $seccion_mantenimiento, $tabla, $fecha);

		$func = $tabla.'TR';
		$hdr = self::$func();
		$rows = '';
		foreach ($resultados as $resultado) {
			$rows .= self::batchHtml($resultado->html);
		}
		return view('/led/led_novedades_detalle')->with(compact(['hdr', 'rows']));
	}

	public static function ledHomologacion() {
	$id = Request::input('contraparte');
	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null));

	$ctrletico = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_ETICO'), 'selectOne');
	$ctrlcalidad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_CALIDAD'), 'selectOne');
	$ctrlcomercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_COMERCIAL'), 'selectOne');

	$cruce_socios = SQLConnection::backendStoreProcedure('LN_control_etica', array($id), 'select');

	$cruce_calidad = SQLConnection::backendStoreProcedure('LN_control_calidad', array($id), 'select');

	$homolog = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'HOMOLOG'), 'selectOne');

	$exc_activa = SQLConnection::backendStoreProcedure('LN_excepciones_', array('activa', $id), 'selectOne');
	$excepciones = SQLConnection::backendStoreProcedure('LN_excepciones_', array('search', $id), 'select');
	$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';
	//$contratista_subcontratista = Request::input('contratista_subcontratista'); 

	return view('/led/led_homologacion')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial', 'homolog', 'cruce_socios','cruce_calidad', 'exc_activa', 'excepciones','contratista_subcontratista']));
  }


	public static function ledExcepcionIngreso()
	{
		$id = Request::input('contraparte');
		$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';

		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$ctrletico = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_ETICO'), 'selectOne');
		$ctrlcalidad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_CALIDAD'), 'selectOne');
		$ctrlcomercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_COMERCIAL'), 'selectOne');

		return view('/led/led_excepcion_ingreso')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial','contratista_subcontratista']));
	}


  public static function ledExcepcionInsert() {
	$id =					   Request::input('contraparte');
	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

	$texto_excepcion =			('' != Request::input('texto_excepcion') ) ? Request::input('texto_excepcion') : null;
	$ingresar_vigencia  =			 !empty(Request::input('ingresar_vigencia')) ? 1 : 0;
	$vigencia =				 ('' != Request::input('vigencia') ) ? Request::input('vigencia') : null;
	$tipo_excepcion =			 Request::input('tipo_excepcion');

	$fecha_vigencia = null;
	if ($ingresar_vigencia > 0 AND $vigencia != null) {
	  $fecha_vigencia = date_create_from_format('!d/m/Y', $vigencia);
	}

	$exc = SQLConnection::backendStoreProcedure('LN_excepciones_', array('nueva', $id, $fecha_vigencia, $texto_excepcion, Session::get('usuario')->user_id, NULL, $tipo_excepcion), 'selectOne');
	//$ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null,$id,null), 'selectOne');
	self::actualizarHomologacionSubcontratista($id);

	//return view('/led/led_excepcion_return')->with(compact(['qcontrap'])); 
  }


	public static function ledExcepcionDesactivar() { 
	$id = Request::input('contraparte');
	$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';

	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

	$ctrletico = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_ETICO'), 'selectOne');
	$ctrlcalidad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_CALIDAD'), 'selectOne');
	$ctrlcomercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_COMERCIAL'), 'selectOne');
	$ctrlhomolog = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'HOMOLOG'), 'selectOne');

	$excepcion = SQLConnection::backendStoreProcedure('LN_excepciones_', array('activa', $id), 'selectOne');
		
	return view('/led/led_excepcion_desactivar')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial', 'ctrlhomolog', 'excepcion','contratista_subcontratista']));

  }


	public static function ledExcepcionUpdate()
	{
		$id =					   Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$texto_excepcion =			('' != Request::input('texto_excepcion')) ? Request::input('texto_excepcion') : null;

		$exc = SQLConnection::backendStoreProcedure('LN_excepciones_', array('desactivar', $id, null, $texto_excepcion, Session::get('usuario')->user_id), 'selectOne');
		//$ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null,$id,null), 'selectOne');
		self::actualizarHomologacionSubcontratista($id);

		//return view('/led/led_excepcion_return')->with(compact(['qcontrap']));
	}

	public static function ledExcepcionEditar()
	{
		$id = Request::input('contraparte');
		$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';

		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$ctrletico = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_ETICO'), 'selectOne');
		$ctrlcalidad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_CALIDAD'), 'selectOne');
		$ctrlcomercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_COMERCIAL'), 'selectOne');
		$ctrlhomolog = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'HOMOLOG'), 'selectOne');

		$excepcion = SQLConnection::backendStoreProcedure('LN_excepciones_', array('activa', $id), 'selectOne');

		return view('/led/led_excepcion_editar')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial', 'ctrlhomolog', 'excepcion','contratista_subcontratista']));
	}

	public static function ledExcepcionActualizar()
	{
		$id = Request::input('contraparte');
		$exc = Request::input('excepcion');
		
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$texto_excepcion =			('' != Request::input('texto_excepcion')) ? Request::input('texto_excepcion') : null;
		$ingresar_vigencia  =			 !empty(Request::input('ingresar_vigencia')) ? 1 : 0;
		$vigencia =				 ('' != Request::input('vigencia')) ? Request::input('vigencia') : null;
		$tipo_excepcion =			 Request::input('tipo_excepcion');

		$fecha_vigencia = null;
		if ($ingresar_vigencia > 0 and $vigencia != null) {
			$fecha_vigencia = date_create_from_format('!d/m/Y', $vigencia);
		}

		$tmp = SQLConnection::backendStoreProcedure('LN_excepciones_', array('actualizar', $id, $fecha_vigencia, $texto_excepcion, Session::get('usuario')->user_id, $exc, $tipo_excepcion), 'selectOne');
		//$ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null,$id,null), 'selectOne');
		self::actualizarHomologacionSubcontratista($id);

		//return view('/led/led_excepcion_return')->with(compact(['qcontrap']));
	}


	private static function detalleTabla($tabla, $resultados)
	{
	}

	private static function cendeuTR()
	{
		$resp ='<tr>
	  <th>Banco</th>
	  <th>Periodo</th>
	  <th>Situacion</th>
	  <th>Monto (en miles)</th>
	  </tr>';
		return $resp;
	}

	private static function cendeu_tempTR()
	{
		$resp ='<tr>
	  <th>Banco</th>
	  <th>Periodo</th>
	  <th>Situacion</th>
	  <th>Monto (en miles)</th>
	  </tr>';
		return $resp;
	}
	private static function cendeu_cancelaTR()
	{
		$resp ='<tr>
	  <th>Fecha</th>
	  <th>Evento</th>
	  <th>Banco</th>
	  <th>Desde</th>
	  <th>Hasta</th>
	  </tr>';
		return $resp;
	}
	private static function sircrebTR()
	{
		$resp ='<tr>
	  <th>Fecha</th>
	  <th>Desde</th>
	  <th>Hasta</th>
	  </tr>';
		return $resp;
	}
	private static function arbaTR()
	{
		$resp ='<tr>
	  <th>Impuesto</th>
	  <th>Objeto</th>
	  <th>Nro Interno</th>
	  <th>Fecha Inicio Juicio</th>
	  <th>Importe Deuda</th>
	  <th>Fecha Cancelacion</th>
	  <th>Fecha Plan de Pagos</th>
	  <th>Cancelacion Juicio</th>
	  <th>Estado Medida Cautelar</th>
	  <th>Estado de Plan de Pagos</th>
	  </tr>';
		return $resp;
	}

	private static function balances_contablesTR()
	{
		$resp ='<tr>
	  <th></th>
	  <th>fecha</th>
	  </tr>';
		return $resp;
	}
	  
	private static function juiciosTR()
	{
		$resp ='<tr>
	  <th>Fecha</th>
	  <th>Causa</th>
	  <th>CUIT Actor</th>
	  <th>Nombre Actor</th>
	  </tr>';
		return $resp;
	}

	private static function chequesbcraTR()
	{
		$resp ='<tr>
	  <th>Causal</th>
	  <th>CUIT Firmante</th>
	  <th>CUIT Relacionado</th>
	  <th>Nro Cheque</th>
	  <th>Importe</th>
	  <th>Fecha de Rechazo</th>
	  <th>Fecha de Pago de Multa</th>
	  <th>Fecha de Levantamiento</th>
	  </tr>';
		return $resp;
	}


	private static function batchHtml($html)
	{
		$resp ='
	  <tr>'.$html.'</tr>';
		return $resp;
	}

	/**********************************************/


	/* Solapa de subcontratistas de una contraparte */
	public static function ledSubcontratistas()
	{
		$id = Request::input('contraparte');
		$contrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$cliente = $contrap->cliente;
		$subc = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('subcontratistas_panel', $id, $cliente), 'select');



		$productos_grilla = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('productos_grilla', null, $cliente), 'select');
		$productos = [];
		foreach ($productos_grilla as $key => $pdata) {
			$productos[$pdata->producto_id]['etiqueta'] = $pdata->etiqueta;
			$productos[$pdata->producto_id]['producto_id'] = $pdata->producto_id;
			$productos[$pdata->producto_id]['class_icon'] = $pdata->class_icon;
		}

		$prodind = [];
		$indic = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('PRODUCTOS_INDICADORES', null, $cliente), 'select');
		foreach ($indic as $key => $idata) {
			$prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;

			$op = null;
			if (null != $idata->opciones) {
				$t1 = explode('^', $idata->opciones);
				$text = explode('|', $t1[0]);
				$values = explode('|', $t1[1]);
				$op = array('text' => $text, 'values' => $values);
			}
			$prodind[$idata->producto_id][$idata->clave_indicador]['opciones'] = $op;
		}

		$valores = [];
		$led = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('valores_grilla', $id, $cliente), 'select');
		foreach ($led as $datos) {
			/*$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);*/
			$valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);
		}

		return view('/led/led_subcontratistas')->with(compact(['id', 'contrap', 'subc', 'productos', 'prodind', 'valores']));
	}

	/* Vista general de contrapartes/subcontratistas que dependen del cliente */
	public static function ledPanelSubcontratistas()
	{
		$cliente = Session::get('usuario')->cliente['client_id'];
		$subc = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('subcontratistas_panel', null, $cliente), 'select');

		$productos_grilla = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('productos_grilla', null, $cliente), 'select');
		$productos = [];
		foreach ($productos_grilla as $key => $pdata) {
			$productos[$pdata->producto_id]['etiqueta'] = $pdata->etiqueta;
			$productos[$pdata->producto_id]['producto_id'] = $pdata->producto_id;
			$productos[$pdata->producto_id]['class_icon'] = $pdata->class_icon;
		}

		$prodind = [];
		$indic = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('PRODUCTOS_INDICADORES', null, $cliente), 'select');
		foreach ($indic as $key => $idata) {
			$prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;

			$op = null;
			if (null != $idata->opciones) {
				$t1 = explode('^', $idata->opciones);
				$text = explode('|', $t1[0]);
				$values = explode('|', $t1[1]);
				$op = array('text' => $text, 'values' => $values);
			}
			$prodind[$idata->producto_id][$idata->clave_indicador]['opciones'] = $op;
		}

		$valores = [];
		$led = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('valores_grilla', null, $cliente), 'select');
		foreach ($led as $datos) {
			/*$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);*/
			$valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);
		}

		$navtext = "Panel de subcontratistas";

		return view('/led/led_panel_subcontratistas')->with(compact(['subc', 'productos', 'prodind', 'valores', 'navtext']));
	}


	/* Vista del panel de control de ingreso, lista todas las contrapartes y subcontratistas que tengan productos
		de control de ingreso */
	public static function ledPanelControlIngreso()
	{
		$cliente = Session::get('usuario')->cliente['client_id'];

		$contrapartes = SQLConnection::backendStoreProcedure('LN_control_ingreso', array('contrapartes', $cliente), 'select');

		$productos_grilla = SQLConnection::backendStoreProcedure('LN_control_ingreso', array('productos_panel', $cliente), 'select');

		$productos = [];
		foreach ($productos_grilla as $key => $pdata) {
			$productos[$pdata->producto_id]['etiqueta'] = $pdata->etiqueta;
			$productos[$pdata->producto_id]['producto_id'] = $pdata->producto_id;
			$productos[$pdata->producto_id]['class_icon'] = $pdata->class_icon;
		}


		$prodind = [];
		$indic = SQLConnection::backendStoreProcedure('LN_control_ingreso', array('productos_indicadores', $cliente), 'select');
		foreach ($indic as $key => $idata) {
			$prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;
			$prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;

			$op = null;
			if (null != $idata->opciones) {
				$t1 = explode('^', $idata->opciones);
				$text = explode('|', $t1[0]);
				$values = explode('|', $t1[1]);
				$op = array('text' => $text, 'values' => $values);
			}
			$prodind[$idata->producto_id][$idata->clave_indicador]['opciones'] = $op;
		}


		$valores = [];
		$led = SQLConnection::backendStoreProcedure('LN_control_ingreso', array('valores_grilla', $cliente), 'select');
		foreach ($led as $datos) {
			/*$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);*/
			$valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);
		}

		$navtext = "Control de ingreso"; 

		return view('/led/led_panel_control_ingreso')->with(compact(['cliente', 'contrapartes', 'productos', 'prodind', 'valores', 'navtext']));
	}




	public static function ledDossier()
	{
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$dossier = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('consultar', $id, Session::get('usuario')->user_id), 'selectOne');

		return view('/led/led_dossier')->with(compact(['qcontrap', 'dossier']));
	}


	public static function ledDossierSolicitar()
	{
		$id = Request::input('contraparte');
		$observaciones = Request::input('observaciones');
		$temp = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('solicitar', $id, Session::get('usuario')->user_id), 'selectOne');
		$dossier = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('consultar', $id, Session::get('usuario')->user_id), 'selectOne');

		/* send mail */
		$content = array('nombre_cliente' => $dossier->nombre_cliente,
									'nombre_persona' => $dossier->nombre_persona,
									'abreviatura' => $dossier->abreviatura,
									'numero' => $dossier->numero,
									'country_code' => $dossier->country_code,
									'country_name' => $dossier->country_name,
									'fecha_solicitud' => $dossier->fecha_solicitud,
									'solicitado_por_usuario' => $dossier->solicitado_por_usuario,
									'observaciones' => $observaciones);



		$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : env('LED_COMERCIAL_EMAIL_ADDR');
		Misc::enviarMail('/led/led_solicitar_dossier_email', $to, $content, "Fidelitas - Solicitud de Dossier LED");

		return view('/led/led_dossier')->with(compact(['qcontrap', 'dossier']));
	}


	public static function ledDossierCancelar()
	{
		$id = Request::input('contraparte');
		$temp = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('cancelar', $id, Session::get('usuario')->user_id), 'selectOne');
		$dossier = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('consultar', $id, Session::get('usuario')->user_id), 'selectOne');


		/* send mail */
		$content = array('nombre_cliente' => $dossier->nombre_cliente,
									'nombre_persona' => $dossier->nombre_persona,
									'abreviatura' => $dossier->abreviatura,
									'numero' => $dossier->numero,
									'country_code' => $dossier->country_code,
									'country_name' => $dossier->country_name,
									'fecha_solicitud' => $dossier->fecha_solicitud,
									'fecha_cancelacion' => $dossier->fecha_cancelacion,
									'solicitado_por_usuario' => $dossier->solicitado_por_usuario,
									'cancelado_por_usuario' => $dossier->cancelado_por_usuario);


		$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : env('LED_COMERCIAL_EMAIL_ADDR');
		Misc::enviarMail('/led/led_cancelar_dossier_email', $to, $content, "Fidelitas - Cancelación de Dossier LED");

		return view('/led/led_dossier')->with(compact(['qcontrap', 'dossier']));
	}

	public static function ledFidecheckAnterior()
	{
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$socios = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'S'), 'select');
		$relac = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'R'), 'select');
		$direct = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'D'), 'select');
		$propio = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'P'), 'selectOne');

		foreach ($socios as $key => $value) {
			$socios[$key]->detalle = str_replace(chr(10), '<br>', $value->detalle);
		}
		foreach ($relac as $key => $value) {
			$relac[$key]->detalle  = str_replace(chr(10), '<br>', $value->detalle);
		}
		foreach ($direct as $key => $value) {
			$direct[$key]->detalle  = str_replace(chr(10), '<br>', $value->detalle);
		}
		if(isset($propio->detalle)){
			$propio->detalle=str_replace(chr(10), '<br>', $propio->detalle);
		}

		
		return view('/led/led_fidecheck')->with(compact(['qcontrap', 'socios', 'relac', 'direct','propio']));

	}


	public static function ledFidecheck()
	{
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');

		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
	  	foreach ($gestiones as $ges)
	  	{
			$socios[$ges->desde] = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'S',null,null,null,null,null,null,null,$ges->gestion), 'select');
			$relac[$ges->desde] = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'R',null,null,null,null,null,null,null,$ges->gestion), 'select');
			$direct[$ges->desde] = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'D',null,null,null,null,null,null,null,$ges->gestion), 'select');
			$propio[$ges->desde] = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'P',null,null,null,null,null,null,null,$ges->gestion), 'selectOne');

			foreach ($socios[$ges->desde] as $key => $value) {
				$socios[$ges->desde][$key]->detalle = str_replace(chr(10), '<br>', $value->detalle);
			}
			foreach ($relac[$ges->desde] as $key => $value) {
				$relac[$ges->desde][$key]->detalle  = str_replace(chr(10), '<br>', $value->detalle);
			}
			foreach ($direct[$ges->desde] as $key => $value) {
				$direct[$ges->desde][$key]->detalle  = str_replace(chr(10), '<br>', $value->detalle);
			}
			if(isset($propio[$ges->desde]->detalle)){
				$propio[$ges->desde]->detalle=str_replace(chr(10), '<br>', $propio[$ges->desde]->detalle);
			}
		}

/*
		var_dump("---propio");
		var_dump($propio);
		var_dump("---direct");
		var_dump($direct);
		var_dump("---socios");
		var_dump($socios);
		die();

*/
		return view('/led/led_fidecheck_gestiones')->with(compact(['qcontrap', 'socios', 'relac', 'direct','propio','gestiones']));

	}






	public static function ledMisAportes()
	{
		$misaportes = []; 
		$id = Request::input('contraparte');
		$qcontrap = SQLConnection::backendStoreProcedure('dbo.LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
		$cuit = $qcontrap->identificacion; 
		$dias_insert = 720; // Se puede cambiar a la cantidad de dias maximos desde el último insert que se quiere tomar 
		$aportes = SQLConnection::backendStoreProcedure('mis_aportes_empresa', array($cuit,$dias_insert), false);
  		foreach ($aportes as $x => $aporte) {
		  if ($aporte->ddjj == 'PAGO') { $aporte->ddjj = 'PAGO TOTAL'; } 
			  if (!isset($misaportes[$aporte->periodo_str]['ddjj']) || 
				   $misaportes[$aporte->periodo_str]['ddjj'] < $aporte->ddjj)
			  {
			  $misaportes[$aporte->periodo_str]['ddjj'] = $aporte->ddjj;
			  }

			  if ($aporte->aportes_os == 'PAGO') { $aporte->aportes_os = 'PAGO TOTAL'; } 
			  if (!isset($misaportes[$aporte->periodo_str]['aportes_os']) || 
				   $misaportes[$aporte->periodo_str]['aportes_os'] < $aporte->aportes_os)
			  {
			  $misaportes[$aporte->periodo_str]['aportes_os'] = $aporte->aportes_os;
			  }

			  if ($aporte->aportes_ss == 'PAGO') { $aporte->aportes_ss = 'PAGO TOTAL'; } 
			  if (!isset($misaportes[$aporte->periodo_str]['aportes_ss']) || 
				   $misaportes[$aporte->periodo_str]['aportes_ss'] < $aporte->aportes_ss)
			  {
			  $misaportes[$aporte->periodo_str]['aportes_ss'] = $aporte->aportes_ss;
			  }

			  if ($aporte->contr_patronal == 'PAGO') { $aporte->contr_patronal = 'PAGO TOTAL'; } 
			  if (!isset($misaportes[$aporte->periodo_str]['contr_patronal']) || 
				   $misaportes[$aporte->periodo_str]['contr_patronal'] < $aporte->contr_patronal)
			  {
			  $misaportes[$aporte->periodo_str]['contr_patronal'] = $aporte->contr_patronal;
			  }
		  }

		  foreach ($misaportes as $x => $aporte) {
			foreach ($aporte as $z => $ap) {
			  if ($ap == 'PAGO TOTAL')
			  { $misaportes[$x][$z] = 'PAGO';}
			}
		  }  

		return view('/led/led_misaportes')->with(compact(['qcontrap', 'misaportes']));
	}


	public static function ledSlider()
	{
		return view('/led/slider');
	}

	public static function ledDossierDemo() {
        
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$dossier = SQLConnection::backendStoreProcedure('LN_indicadores_dossier',array($id));

        $logo_name = null;
        $pdfdossier = null;
        $score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'SCORE_DOSSIER'), 'selectOne');
        $nivelr = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'NIVEL_RIESGO'), 'selectOne');
        $depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'DEP_ECON'), 'selectOne');
		if (!empty($dossier)) {
			$file_exists = false;
			if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
				$logo_name = $id . '.png';
			}
			if (null == $logo_name) {
				if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
					$logo_name = $id . '.jpg';
				}
			}
			if (null == $logo_name) {
				if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
					$logo_name = $id . '.gif';
				}
			}
            
			$once = true;
			foreach ($dossier as $key => $value) {
				if ($once == true) {
					$value->resenia = nl2br($value->resenia);
					$value->analisis = nl2br($value->analisis);
					$once = false;
				}
			}
            
			if (file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $id . '.pdf')) {
				$pdfdossier = $id . '.pdf';
			}
		}

        $familia = '';
        if (!is_null($score)){
            $familia = $score->idfamilia;
        } elseif (!is_null($nivelr)) {
            $familia = $nivelr->idfamilia;
        } else {
			$familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $id, null, null, null, 1, null), 'selectOne');
            $familia = $familias->familia;
        }
		$user_id = Session::get('usuario')->user_id;
		//----
		if(!empty($dossier)){
			$dossier = $dossier[0];	
		}
		//----
		//// CHANCHADA CAMBIAR --- VISTA DOSSIER REDUCIDA PARA PAE DEMO Y VALID
		// Sanofi 1562620024
		if (Session::get('usuario')->cliente['client_id'] == 1562620024)
		{
			return view('/led/led_dossier_analisis')->with(compact(['qcontrap', 'logo_name', 'dossier', 'score', 'nivelr', 'depecon', 'pdfdossier']));
		}
		elseif ($user_id == '583706793' OR Session::get('usuario')->cliente['client_id'] == 3920694 OR Session::get('usuario')->cliente['client_id'] == 2046807993 OR Session::get('usuario')->cliente['client_id'] == 7855254 OR Session::get('usuario')->cliente['client_id'] == 6063454 OR Session::get('usuario')->cliente['client_id'] == 1530289645 OR Session::get('usuario')->cliente['client_id'] == 7075221) {
			if (empty($dossier)){
				return view('/led/led_dossier_demo_pae')->with(compact(['qcontrap' ,'dossier']));	
			}
			return view('/led/led_dossier_demo_pae')->with(compact(['qcontrap', 'logo_name', 'dossier', 'score', 'nivelr', 'depecon', 'pdfdossier']));
        }elseif(Session::get('usuario')->cliente['client_id'] == 431136419 && $familia == '577'){
            return view('/led/led_dossier_demo_ypf_familia')->with(compact(['qcontrap','dossier', 'score', 'nivelr', 'depecon', 'pdfdossier']));
        }else{
		    return view('/led/led_dossier_demo')->with(compact(['qcontrap', 'logo_name', 'dossier', 'score', 'nivelr', 'depecon', 'pdfdossier']));
		}
	}

	public static function ledDeudaPrevisional(){
		$id = Request::input('contraparte');
		$datos =  $demandados = SQLConnection::backendStoreProcedure('deuda_previsional_', array(null, $id));
		return view('/led/led_deuda_previsional')->with(compact(['datos']));
	}

	public static function ledDependencia(){
		$cliente = Session::get('usuario')->cliente['client_id'];
		$id = Request::input('contraparte');
		$dep = DB::selectOne('EXEC LN_dependencia_economica ?', array($id));
//var_dump($dep); die(); 		
		$compras = DB::select('EXEC LN_dependencia_economica_compras ?', array($id));
		$otros_datos = []; 
		$datos = []; 
		$otros_datos = DB::select('EXEC LN_contraparte_datos_aportados_ ?', array($id));
		$i = 0; 
		foreach ($otros_datos as $value) {
				$value->titulo = strtoupper($value->titulo); 
				$datos[$value->titulo][$i] = new stdClass();
				$datos[$value->titulo][$i]->item  = $value->item;
				$datos[$value->titulo][$i]->fecha = $value->fecha;
				$datos[$value->titulo][$i]->valor = $value->valor; 
				$i += 1; 
		}
		//var_dump($datos); die(); 
		$productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
		$id_producto     = $productos->producto;

		return view('/led/led_dependencia')->with(compact(['dep','compras','datos','id_producto']));
	}

	// public static function ledComex() {
	// 	$meses = 24;
	// 	$grafico_impo_comex='';
	// 	$grafico_expo_comex='';
	// 	$grafico_pais_impo_comex='';
	// 	$grafico_rubro_impo_comex='';
	// 	$grafico_pais_expo_comex='';
	// 	$grafico_rubro_expo_comex='';
	// 	$cuit_consultado='';
	//     $imagen_fidelitas   = Misc::obtenerImagenFidelitas();
	// 	$cuit               = Request::input("cuit");
	// 	$periodo            = '';
	// 	$periodos_null      = '';
	// 	$periodo_expo       = '';
	// 	$consumo            = '';
	// 	$temporal           = '';
	// 	$deposito           = '';
	// 	$zonafranca         = '';
	// 	$total              = '';
	// 	$comex_pais_impo    = [];
	// 	$comex_pais_expo    = [];
	// 	$comex_grafico_impo = [];
	// 	$otros_pais_impo    = 0;
	// 	$otros_pais_expo    = 0;
	// 	$periodo_procesado  = SQLConnection::obtenerUltimoPeriodoProcesado('comercio_exterior');
	// 	$comex_impo         = SQLConnection::obtenerComex($cuit);
	// 	$tipo_persona       = (substr($cuit,0,1) != '3') ? 'f' : 'j' ;

	// 	if($comex_impo){
	// 	for ($i = 0; $i <= 24; $i++) {
	// 			$periodos_null[$i] = date("Ym", strtotime($periodo_procesado." -$i months"));
	// 			$anio     = substr($periodos_null[$i], 0,4);
	// 			$mes      = substr($periodos_null[$i], 4,6);
	// 			$comex_grafico_impo[$i]             = new \stdClass;
	// 			$comex_grafico_impo[$i]->mes        = $mes;
	// 			$comex_grafico_impo[$i]->anio       = $anio;
	// 			$comex_grafico_impo[$i]->consumo    = 0;
	// 			$comex_grafico_impo[$i]->temporal   = 0;
	// 			$comex_grafico_impo[$i]->procesado  = 0;
	// 			$comex_grafico_impo[$i]->date       = 0;
	// 			$comex_grafico_impo[$i]->Date       = 0;
	// 			$comex_grafico_impo[$i]->deposito   = 0;
	// 			$comex_grafico_impo[$i]->zonafranca = 0;
	// 			$comex_grafico_impo[$i]->total      = 0;
	// 	}
	// 	$number =0;
	// 	$total_consumo     = [];
	// 	$total_temporal    = [];  
	// 	$total_deposito    = [];  
	// 	$total_zona_franca = [];  
	// 	$total_totales     = [];  
	// 	foreach($comex_impo as $key=>$impo){
	// 		//totales que se muestran en 'tabla_comex'
	// 		$total_consumo[$key]    = $impo->consumo;
	// 		$total_temporal[$key]   = $impo->temporal;
	// 		$total_deposito[$key]   = $impo->deposito;
	// 		$total_zonafranca[$key] = $impo->zonafranca;
	// 		$total_totales[$key]    = $impo->total;
	// 		foreach($comex_grafico_impo as $key => $graf){
	// 		if($impo->anio==$graf->anio && $impo->mes == $graf->mes){
	// 			//if($key == 0){

	// 			$number = $key;
	// 			//}
	// 			if($graf->total != 0){
	// 			$number++;
	// 			$comex_grafico_impo[$number] = $impo;

	// 			}else{
	// 			$comex_grafico_impo[$number] = $impo;
	// 			$number++;
	// 			}
	// 		}
	// 		//sort($comex_grafico_impo['ordenar']);
	// 		}
	// 	}
	// 	//totales que se muestran en 'tabla_comex'
	// 	$total_consumo    = array_sum($total_consumo);
	// 	$total_temporal   = array_sum($total_temporal);
	// 	$total_deposito   = array_sum($total_deposito);
	// 	$total_zonafranca = array_sum($total_zonafranca);
	// 	$total_totales    = array_sum($total_totales);
	// 	}
	// 	$comex_expo         = SQLConnection::obtenerGraficoExportaciones($cuit);
	// 	$periodo_procesado  = SQLConnection::obtenerUltimoPeriodoProcesado('comex_pais_rubro');
	// 	$comex_grafico_exportaciones            = [];
	// 	$comex_grafico_exportaciones[]          = new \stdClass;
		
	// 	if($comex_expo){
	// 	for ($i = 0; $i <= 24; $i++) {
	// 			$periodos_null[$i] = date("Ym", strtotime($periodo_procesado." -$i months"));
	// 			$comex_grafico_exportaciones[$i]                = new \stdClass;
	// 			$comex_grafico_exportaciones[$i]->valor_mensual = 0;
	// 			$comex_grafico_exportaciones[$i]->periodo       = $periodos_null[$i];
	// 	}

	// 	foreach($comex_expo as $expo){
	// 		foreach($comex_grafico_exportaciones as $key => $graf){
	// 		if($expo->periodo==$graf->periodo){
	// 			$comex_grafico_exportaciones[$key] = $expo;
	// 		}
	// 		}
	// 	}

	// 	foreach($comex_grafico_exportaciones as $key => $expo){
	// 		$comex_grafico_exportaciones[$key]->anio = substr($expo->periodo, 0, 4);
	// 		$comex_grafico_exportaciones[$key]->mes = substr($expo->periodo, 4, 6) - 1;
	// 	}
	// 	}
	// 	$comex_paises     = SQLConnection::obtenerComexPais($cuit);
	// 	$comex_rubros     = SQLConnection::obtenerComexRubros($cuit);
	// 	$comex_totales    = SQLConnection::obtenerComexTotales($cuit,12);
	// 	$ni               = 0;
	// 	$ne               = 0;
	// 	$total_pais_impo  = 0;
	// 	$total_pais_expo  = 0;
	// 	//Importacion/Exportacion PAISES
	// 	foreach ($comex_paises as $key => $comex_pais){
		
	// 	if($comex_pais->tipo_operacion == 'IMPO'){
	// 		if($ni <5){
	// 		$ni++;
	// 		$comex_pais_impo[] = $comex_pais;
	// 		$comex_pais->nombre = mb_strtoupper($comex_pais->nombre);
	// 		}else{
	// 		$otros_pais_impo += $comex_pais->fob;
	// 		}
	// 		$total_pais_impo += $comex_pais->fob;
	// 	}

	// 	if($comex_pais->tipo_operacion == 'EXPO'){
	// 		if($ne <5){
	// 		$ne++;
	// 		$comex_pais_expo[] = $comex_pais;
	// 		$comex_pais->nombre = mb_strtoupper($comex_pais->nombre);
	// 		}else{
	// 		$otros_pais_expo += $comex_pais->fob;
	// 		}
	// 		$total_pais_expo += $comex_pais->fob;
	// 	}

	// 	}
	// 	if($otros_pais_expo > 0){
	// 	$object = new \stdClass();
	// 	$object->tipo_operacion = 'EXPO';
	// 	$object->nombre   = 'Otros';
	// 	$object->fob    = (string)$otros_pais_expo;
	// 	$comex_pais_expo[] = $object;
	// 	}

	// 	$object = new \stdClass();
	// 	$object->tipo_operacion = 'EXPO';
	// 	$object->nombre   = 'Totales';
	// 	$object->fob    = (string)$total_pais_expo;
	// 	if($total_pais_expo > 0){
	// 	$comex_pais_expo[] = $object;
	// 	}

	// 	if($otros_pais_impo > 0){
	// 	$object = new \stdClass();
	// 	$object->tipo_operacion = 'IMPO';
	// 	$object->nombre   = 'Otros';
	// 	$object->fob    = (string)$otros_pais_impo;
	// 	$comex_pais_impo[] = $object;
	// 	}

	// 	$object = new \stdClass();
	// 	$object->tipo_operacion = 'IMPO';
	// 	$object->nombre   = 'Totales';
	// 	$object->fob    = (string)$total_pais_impo;
	// 	if($total_pais_impo > 0){
	// 	$comex_pais_impo[] = $object;
	// 	}
	// 		//Importacion/Exportacion RUBROS
	// 	$comex_rubro_impo = [];
	// 	$comex_rubro_expo = [];
	// 	$ni_r             = 0;
	// 	$ne_r             = 0;
	// 	$total_rubro_impo = 0;
	// 	$total_rubro_expo = 0;
	// 	$otros_rubro_impo = 0;
	// 	$otros_rubro_expo = 0;

	// 	foreach ($comex_rubros as $key => $comex_rubro){
		
	// 	if($comex_rubro->tipo_operacion == 'IMPO'){
	// 	if($ni_r <5){
	// 		$ni_r++;
	// 		$comex_rubro_impo[] = $comex_rubro;
	// 	}else{
	// 		$otros_rubro_impo += $comex_rubro->fob;
	// 	}
	// 		$total_rubro_impo += $comex_rubro->fob;
	// 	}

	// 	if($comex_rubro->tipo_operacion == 'EXPO'){
	// 	if($ne_r <5){
	// 		$ne_r++;
	// 		$comex_rubro_expo[] = $comex_rubro;
	// 	}else{
	// 		$otros_rubro_expo += $comex_rubro->fob;
	// 	}
	// 		$total_rubro_expo += $comex_rubro->fob;
	// 	}
	// 	}
		
	// 	if($otros_rubro_expo > 0){
	// 	$obj                 = new \stdClass();
	// 	$obj->tipo_operacion = 'EXPO';
	// 	$obj->descripcion    = 'Otros';
	// 	$obj->fob            = (string)$otros_rubro_expo;
	// 	$comex_rubro_expo[]  = $obj;
	// 	}
	// 	$obj                 = new \stdClass();
	// 	$obj->tipo_operacion = 'EXPO';
	// 	$obj->descripcion    = 'Totales';
	// 	$obj->fob            = (string)$total_rubro_expo;
	// 	if($total_rubro_expo > 0){
	// 	$comex_rubro_expo[] = $obj;
	// 	}
	// 	if($otros_rubro_impo > 0){
	// 	$obj                  = new \stdClass();
	// 	$obj->tipo_operacion  = 'IMPO';
	// 	$obj->descripcion     = 'Otros';
	// 	$obj->fob             = (string)$otros_rubro_impo;
	// 	$comex_rubro_impo[]   = $obj;
	// 	}

	// 	$obj = new \stdClass();
	// 	$obj->tipo_operacion  = 'IMPO';
	// 	$obj->descripcion     = 'Totales';
	// 	$obj->fob             = (string)$total_rubro_impo;
	// 	if($total_rubro_impo > 0){
	// 	$comex_rubro_impo[] = $obj;
	// 	}
	// 	$esled = 'true';
	// 	$json = true;
	// 	$vista =  \View::make('informes/comex')->with(compact('total_pais_impo','total_pais_expo','periodo','consumo','temporal','deposito','zonafranca','total','comex_totales','json','grafico_impo_comex','grafico_expo_comex','grafico_pais_impo_comex','grafico_rubro_impo_comex','grafico_pais_expo_comex','grafico_rubro_expo_comex','comex_pais_impo','comex_pais_expo','comex_rubro_impo','comex_rubro_expo','total_rubro_impo','total_rubro_expo','comex_impo','comex_expo','total_consumo','total_temporal','total_deposito','total_zonafranca','total_totales','meses','esled'))->render();		
	// 	if(!$json){
	// 	return $vista;
	// 	}
	// 	$comex_json = json_encode($comex_impo);
	// 	return \Response::json(
	// 	array(
	// 		'view' =>$vista,
	// 		'info'=>compact('comex_impo','comex_expo','maximo','sort_pais_impo','sort_pais_expo','sort_rubros_impo','sort_rubros_expo','comex_grafico_exportaciones','comex_pais_expo','comex_pais_impo','comex_rubro_impo','comex_rubro_expo','tipo_persona','total_consumo','total_temporal','total_deposito','total_zonafranca','total_totales')
	// 	)
	// 	);
  	// }

	public static function ledJudicial() {
	  $id = Request::input('contraparte');
	  $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
	  $pedidos_quiebra = []; 
	  $concursos_quiebras = []; 
	  $otros_juicios_comerciales = []; 

	  if (null != $qcontrap->identificacion and $qcontrap->country_code == 'AR') {
		 $demandados = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'D', $qcontrap->identificacion, 60, 1));
		 if($demandados){
			foreach($demandados as $demandado){
//var_dump($demandados);
//print_r($demandado->grupo);
//print_r("<br>");
//print_r($demandado->id_tipo	_causa);
//print_r("<br>");



			 /* if($demandado->grupo  == 'OJC'  and
				  (
				   $demandado->id_tipo_causa == 'JCA' or  // JUICIO DE APREMIO
				   $demandado->id_tipo_causa == 'JE'  or  // JUICIO EJECUTIVO
				   $demandado->id_tipo_causa == 'EH'  or  // JUICIO EJECUTIVO POR HONORARIOS
				   $demandado->id_tipo_causa == 'JO'  or  // JUICIO ORDINARIO
				   $demandado->id_tipo_causa == 'JPC' or  // JUICIO POR COBRO DE PESOS
				   $demandado->id_tipo_causa == 'JP'  or  // JUICIO PRENDARIO
				   $demandado->id_tipo_causa == 'JS'  or  // JUICIO SUMARIO
				   $demandado->id_tipo_causa == 'JSM' or  // JUICIO SUMARISIMO
				   $demandado->id_tipo_causa == 'SPR' or  // SECUESTRO PRENDARIO
				   $demandado->id_tipo_causa == 'STO' or  // SUSP.TRANSIT. P/OPERAR
				   $demandado->id_tipo_causa == 'EJF' or  // EJECUCION FISCAL
				   $demandado->id_tipo_causa == 'EJH' or  // EJECUCION HIPOTECARIA
				   $demandado->id_tipo_causa == 'EJP' or  // EJECUCION PRENDARIA
				   $demandado->id_tipo_causa == 'IDF')	// INHAB.P/DESEMP.FUNC.ENTID.FIN.(ART.41/5 LEY 21526)
			  )*/
			if($demandado->grupo  == 'OJC')	
			{$otros_juicios_comerciales[]  = $demandado;
			  }elseif($demandado->grupo  == 'CYQ'){
				$concursos_quiebras[] = $demandado;
			  }elseif($demandado->grupo  == 'PQ'){
				$pedidos_quiebra[] = $demandado;
			  }
			}
		}
	  }
	  return view('led/led_judicial')->with(compact(['qcontrap', 'pedidos_quiebra','concursos_quiebras','otros_juicios_comerciales'])); 
	}

	public static function ledAlertasBCRA(){
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		if (null != $qcontrap->identificacion and $qcontrap->country_code == 'AR') {
			$cuit = $qcontrap->identificacion;
			$persona_fisica   = (substr($cuit, 0, 1) != '3') ? true : false ;
   
			$id_persona = $qcontrap->id_padron;
			$cantidad = 500;

			$cheques_ordenados		  = [];
			$periodos_ordenados		 = [];
			$bancos_ordenados		   = [];
			$bancos_ordenados_separados = [];
			$cheques_vinculaciones_todas= [];

			$fecha = time();

			/*$cheques	  = SQLConnection::backendStoreProcedure('obtener_cheques', array($cuit,$id_persona,$cantidad));*/
			$dias = 360;
			$cheques	  = SQLConnection::backendStoreProcedure('LN_alertas_obtener_cheques', array($cuit,$dias,2147483647,$id));
			if (sizeof($cheques) > 0) { $dias = $cheques[0]->dias; }

			//---- INICIO

			$cuadro_cheques         = [];
			$cuadro_cheques         = SQLConnection::backendStoreProcedure('obtener_cuadro_cheques2', array($cuit));
			$cuadro_cheques_totales = [];
			$total_cheques 					= [];
			$total_cheques['1propio']['cantidad']   = 0;
			$total_cheques['2empresa']['cantidad']  = 0;
			$total_cheques['1propio']['monto']   = 0;
			$total_cheques['2empresa']['monto']  = 0;
			

			if(!isset($cuadro_cheques_totales['1propio']['LEVANTADOS']['SIN FONDOS'])){
				$cuadro_cheques_totales['1propio']['LEVANTADOS']['SIN FONDOS'] = new \stdClass();
				$cuadro_cheques_totales['1propio']['LEVANTADOS']['SIN FONDOS']->cantidad  = 0;
				$cuadro_cheques_totales['1propio']['LEVANTADOS']['SIN FONDOS']->monto     = 0;
			}
			if(!isset($cuadro_cheques_totales['1propio']['LEVANTADOS']['DEFECTOS FORMALES'])){
				$cuadro_cheques_totales['1propio']['LEVANTADOS']['DEFECTOS FORMALES'] = new \stdClass();
				$cuadro_cheques_totales['1propio']['LEVANTADOS']['DEFECTOS FORMALES']->cantidad = 0;
				$cuadro_cheques_totales['1propio']['LEVANTADOS']['DEFECTOS FORMALES']->monto    = 0;
			}
		
			if(!isset($cuadro_cheques_totales['1propio']['SIN LEVANTAR']['SIN FONDOS'])){
				$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['SIN FONDOS'] = new \stdClass();
				$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['SIN FONDOS']->cantidad = 0;
				$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['SIN FONDOS']->monto    = 0;
			}
		
			if(!isset($cuadro_cheques_totales['1propio']['SIN LEVANTAR']['DEFECTOS FORMALES'])){
				$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['DEFECTOS FORMALES'] = new \stdClass();
				$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['DEFECTOS FORMALES']->cantidad = 0;
				$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['DEFECTOS FORMALES']->monto    = 0;
			}
		
			if(!isset($cuadro_cheques_totales['1propio']['CHEQUES']['SIN FONDOS'])){
				$cuadro_cheques_totales['1propio']['CHEQUES']['SIN FONDOS'] = new \stdClass();
				$cuadro_cheques_totales['1propio']['CHEQUES']['SIN FONDOS']->cantidad = 0;
				$cuadro_cheques_totales['1propio']['CHEQUES']['SIN FONDOS']->monto    = 0;
			}
			
			if(!isset($cuadro_cheques_totales['1propio']['CHEQUES']['DEFECTOS FORMALES'])){
				$cuadro_cheques_totales['1propio']['CHEQUES']['DEFECTOS FORMALES'] = new \stdClass();
				$cuadro_cheques_totales['1propio']['CHEQUES']['DEFECTOS FORMALES']->cantidad = 0;
				$cuadro_cheques_totales['1propio']['CHEQUES']['DEFECTOS FORMALES']->monto    = 0;
			}

			foreach ($cuadro_cheques as $key => $value) {
			if(!isset($cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->cantidad)){
				$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal] = new \stdClass();
				$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->cantidad = 0;
				$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->monto    = 0;
			}
			$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->cantidad = $value->cantidad;
			$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->monto = $value->monto;
			if($value->cheques_o_levantados == 'CHEQUES'){
				$total_cheques[$value->tipo]['cantidad'] = $total_cheques[$value->tipo]['cantidad'] + $value->cantidad;
				$total_cheques[$value->tipo]['monto'] = $total_cheques[$value->tipo]['monto'] + $value->monto;
			}
			}

			if(isset($cuadro_cheques_totales['2empresa'])){
				krsort($cuadro_cheques_totales['2empresa']['CHEQUES']);
			}


			//--- FIN
			/*$cheques_vinculaciones_todas = SQLConnection::backendStoreProcedure('obtener_cheques_vinculaciones_todas', array($cuit,$id_persona,$cantidad));*/
			//$cheques_vinculaciones_todas = SQLConnection::backendStoreProcedure('LN_alertas_obtener_vinculaciones', array($cuit,360));
			$financiero			 = SQLConnection::obtenerFinancieroBrief($cuit);
			//Gráfico de Situaciones
			$situaciones  = SQLConnection::obtenerSituacionesBancos($cuit);
			$periodo_maximo			 = SQLConnection::obtenerPeriodoMaximo($cuit);

			$sit_mayor_cero = false;
			if ($situaciones) {
				foreach ($situaciones as $situacion) {
					foreach ($situacion as $key => $value) {
						if ($key == 'periodo') {
							$situacion->$key = str_replace('-', ',', $value);
						}
						if ($value == null) {
							$situacion->$key = 0;
						} elseif ($key != 'periodo') {
							$sit_mayor_cero = true;
						}
					}
				}
			}

			if (!$sit_mayor_cero) {
				$situaciones = null;
			}

			for ($i = 0; $i <= 23; $i++) {
				$periodos_graficos[$i] = date("Ym", strtotime($periodo_maximo." -$i months"));
			}

			
			//Gráfico de garantías
			$garantias	= SQLConnection::backendStoreProcedure('obtener_garantias_bancos', array($cuit));
			$garantias	= MainController::procesarGraficoGarantias($garantias,$periodos_graficos);
			if($garantias) {
				foreach ($garantias as $key => $garantia) {
					foreach ($garantia as $key2 => $value) {
						if($key2 == 'periodo'){
							$garantias[$key][$key2] = str_replace('-', ',', $value);
						}
					}
				}
			}

			//tabla de bancos
			for ($i = 0; $i <= 23; $i++) {
				if ($i%8==0) {
					$periodo[$i] = date("Ym", strtotime($periodo_maximo." -$i months"));
				} else {
					$periodo[$i] = date("Ym", strtotime($periodo_maximo." -$i months"));
				}
			}
			krsort($periodo);

			$periodo = array_values($periodo);
			$obtenerBancos = SQLConnection::obtenerBancos($cuit);
			if ($obtenerBancos) {
				foreach ($obtenerBancos as $key_banco =>$banco) {
					foreach ($periodo as $key_mes => $mes) {
						if ($mes == $banco->fec_inf) {
							if (!isset($bancos_ordenados['TOTAL_PERIODO'][$mes]['TOTAL_PERIODO'])) {
								$bancos_ordenados['TOTAL_PERIODO'][$mes]['TOTAL_PERIODO']  = 0;
							}
							$bancos_ordenados[$banco->nombre][$mes]['situacion']  = ($obtenerBancos[$key_banco]->situacion) ? $obtenerBancos[$key_banco]->situacion : '';
							if (($obtenerBancos[$key_banco]->situacion && $obtenerBancos[$key_banco]->situacion > 1)) {
								$bancos_ordenados[$banco->nombre][$mes]['desplegar']  = 1;
							}
							$bancos_ordenados[$banco->nombre][$mes]['total']	  = ($obtenerBancos[$key_banco]->total) ? $obtenerBancos[$key_banco]->total : '';
							$bancos_ordenados['TOTAL_PERIODO'][$mes]['TOTAL_PERIODO']   += ($obtenerBancos[$key_banco]->total) ? $obtenerBancos[$key_banco]->total : 0;
						}
					}
				}
				
				foreach ($bancos_ordenados as $key_bo => $bancos) {
					foreach ($periodo as $key_mes => $mes) {
						if (!array_key_exists($mes, $bancos)) {
							$bancos_ordenados[$key_bo][$mes]['situacion'] = '';
							$bancos_ordenados[$key_bo][$mes]['total'] = '';
							$bancos_ordenados[$key_bo][$mes]['TOTAL_PERIODO'] = '';
						}
					}
				}

				foreach ($bancos_ordenados as $key_bo => $bancos) {
					ksort($bancos_ordenados[$key_bo]);
				}

				foreach ($bancos_ordenados as $key_bo => $bancos) {
					$i =0;
					$n =0;
					foreach ($bancos as $key_b  => $banco) {
						if ($n%8==0) {
							$i++;
						}
						$bancos_ordenados_separados[$key_bo][$i][$key_b] = $banco;
						$n++;
					}
				}

				$i =0;
				foreach ($periodo as $key_mes => $mes) {
					if ($key_mes%8==0) {
						$i++;
					}
					$periodos_ordenados[$i][$key_mes] = $mes;
				}
			}

			$periodo = $periodos_ordenados;
			$bancos_ordenados_separados = array_reverse($bancos_ordenados_separados);

			$obtener_bancos = $bancos_ordenados_separados;

			if ($cheques || $cheques_vinculaciones_todas) {
				foreach ($cheques as $key => $cheque) {
					$cheques_ordenados[$cheque->tipo][] = $cheque;
				}

				if ($cheques_vinculaciones_todas) {
					foreach ($cheques_vinculaciones_todas as $key => $vinculacion_anterior) {
						$vinculacion_encontrada = false;
						if (isset($cheques_ordenados['vinculaciones'])) {
							foreach ($cheques_ordenados['vinculaciones'] as $key => $vinculacion) {
								if ($vinculacion_anterior->cuit_firmante == $vinculacion->cuit_firmante) {
									$vinculacion_encontrada = true;
								}
							}
						}
						if ($vinculacion_encontrada === false) {
							$vinculacion_anterior->cantidad = 0;
							$cheques_ordenados['vinculaciones'][] = $vinculacion_anterior;
						}
					}
				}

				$cheques_ordenados['cantidad_propios'] = 0;
				$cheques_ordenados['cantidad_propios'] += isset($cheques_ordenados['propio'][0]->total_cheques) ?$cheques_ordenados['propio'][0]->total_cheques : 0;
				$cheques_ordenados['cantidad_propios'] += isset($cheques_ordenados['a_nombre_de_empresa'][0]->total_cheques) ?$cheques_ordenados['a_nombre_de_empresa'][0]->total_cheques : 0;
				//  $cheques_ordenados['cantidad_propios'] += isset($cheques_ordenados['no_informa']) ? sizeof($cheques_ordenados['no_informa']) : 0;
				$cheques_ordenados['cantidad_empresas'] = isset($cheques_ordenados['empresa']) ? sizeof($cheques_ordenados['empresa']) : 0;
				$cheques_ordenados['cantidad_vinculaciones'] = isset($cheques_ordenados['vinculaciones']) ? sizeof($cheques_ordenados['vinculaciones']) : 0;
			}
			$grafico_cheques  = SQLConnection::graficoCardChequesRechazados($cuit);
			$cancelaciones	= SQLConnection::obtenerCancelacion($cuit);
			$grafico_cheques  = self::$MainController->generarGraficoCheques($grafico_cheques,24);

			$persona_fisica   = (substr($cuit, 0, 1) != '3') ? true : false ;
			$cheques  = $cheques_ordenados;
			//--
			$env = Misc::obtenerColoresEnv();
			//--

			$vinculados_segun_bcra	  = SQLConnection::backendStoreProcedure('obtener_vinculados_segun_BCRA', array($cuit));
			$card_status_bancario	  = SQLConnection::backendStoreProcedure('obtener_status_bancario', array($cuit),'selectOne');
			$mensaje = " Sin Fondos, Sin Levantar y/o Cheques Rechazados por Defectos Formales, en los últimos " . $dias . " días";
			
			$obtener_morosos = 	SQLConnection::backendStoreProcedure('obtener_morosos', array($cuit));
			//----
			$mostrar_cheques_completos = true;
			//----
			$grafico_cheques_bancos = '';
			return view('/led/led_alertas')->with(compact(['card_status_bancario','qcontrap', 'cuit', 'cheques', 'mensaje', 'persona_fisica', 'vinculados_segun_bcra', 'periodo', 'obtener_bancos','obtener_morosos', 'cancelaciones','id_persona','env','financiero','situaciones','garantias','grafico_cheques','grafico_cheques_bancos','total_cheques','cuadro_cheques_totales','mostrar_cheques_completos']));
		}
	}


	/******************************************************************/

	public static function ledBusinessReport()
	{
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$businessreport = DB::selectOne("select LN_contrapartes.contraparte, LN_gestiones.gestion,LN_contrapartes.inicio_actividades, LN_contrapartes.empleados, LN_contrapartes.resenia,
					  LN_demo.status_formales, LN_demo.status_relaciones, LN_demo.status_comerciales, LN_demo.status_fiscales, LN_demo.status_legales, 
					  LN_demo.status_bancos, LN_demo.status_comex, LN_demo.status_contables, LN_demo.status_prensa, LN_demo.status_peps, 
					  LN_demo.analisis, LN_demo.pep_html, LN_demo.visible, LN_demo.producto,
					  substring(convert(varchar(10),LN_contrapartes.inicio_actividades,103),4,7) as mes_inicio
				  from LN_contrapartes 
				  inner join LN_demo on LN_contrapartes.contraparte = LN_demo.contraparte
				  inner join LN_gestiones on (LN_contrapartes.contraparte = LN_gestiones.contraparte
									  and LN_demo.gestion = LN_gestiones.gestion)
				  inner join LN_productos on LN_demo.producto = LN_productos.producto
				  where LN_demo.contraparte =  " . $id . " and LN_gestiones.desde <= GETDATE()
				  and LN_gestiones.hasta >= GETDATE()
				  and LN_productos.producto_id = 'businessreport' ", array());

		if (!empty($businessreport)) {
			$logo_name = null;
			$file_exists = false;
			if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
				$logo_name = $id . '.png';
			}
			if (null == $logo_name) {
				if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
					$logo_name = $id . '.jpg';
				}
			}
			if (null == $logo_name) {
				if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
					$logo_name = $id . '.gif';
				}
			}

			$score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'SCORE_BR'), 'selectOne');

			$once = true;
			foreach ($businessreport as $key => $value) {
				if ($once == true) {
					$businessreport->resenia = nl2br($businessreport->resenia);
					$businessreport->analisis = nl2br($businessreport->analisis);
					$once = false;
				}
			}


			$pdfbusinessrpt = null;
			if (file_exists(env('PATH_DOCUMENTOS') . '/businessreport/' . $id . '.pdf')) {
				$pdfbusinessrpt = $id . '.pdf';
			}
		}

		return view('/led/led_business_report')->with(compact(['qcontrap', 'logo_name', 'businessreport', 'score', 'pdfbusinessrpt']));
	}

	/******************************************************************/

	public static function ledRecomendadorCredito()
	{
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$cuit = $qcontrap->identificacion;

		$logo_name = null;
		
		$file_exists = false;
		if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
			$logo_name = $id . '.png';
		}
		if (null == $logo_name) {
			if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
				$logo_name = $id . '.jpg';
			}
		}
		if (null == $logo_name) {
			if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
				$logo_name = $id . '.gif';
			}
		}


		$periodo_maximo = SQLConnection::obtenerPeriodoMaximo($cuit);
		$situaciones = SQLConnection::obtenerSituacionesBancos($cuit);

		$sit_mayor_cero = false;
		if ($situaciones) {
			foreach ($situaciones as $situacion) {
				foreach ($situacion as $key => $value) {
					if ($key == 'periodo') {
						$situacion->$key = str_replace('-', ',', $value);
					}
					if ($value == null) {
						$situacion->$key = 0;
					} elseif ($key != 'periodo') {
						$sit_mayor_cero = true;
					}
				}
			}
		}

		if (!$sit_mayor_cero) {
			$situaciones = null;
		}

		//$situaciones = json_encode($situaciones); pato 21-05-19 para tratarlo igual que en el IC
		$grafico_situaciones = '';

		$env = Misc::obtenerColoresEnv();

		$pdfrc = null;
		if (file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente . '/' . $id . '.pdf')) {
			$pdfrc = $id . '.pdf';
		}

		$limite_credito = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $qcontrap->contraparte), 'selectOne');

		/* Información de cendeu ultimo trimestre */
		$cendeu_trimestral = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('cendeu_trimestral', $qcontrap->contraparte), 'select');
		$totalcendeu = 0;
		foreach ($cendeu_trimestral as $k => $banco) {
			$totalcendeu = $totalcendeu + $banco->total;
		}

		/* Información de últimos balances */

		$dbalances = SQLConnection::backendStoreProcedure('LN_balances', array('balances_contraparte', $qcontrap->contraparte), 'select');

		$balances = [];
		$datos_balances = [];

		foreach ($dbalances as $k => $balance) {
			$j = (sizeof($dbalances) - $k - 1);

			$datos_balances[$j] = SQLConnection::backendStoreProcedure('LN_balances', array('datos_contables', null, $balance->id_balance), 'selectOne');

			$balances[$j] = $balance->cierre_ejercicio;
		}

		ksort($balances);
		ksort($datos_balances);


		//Gráfico de garantías
		$periodo_maximo = SQLConnection::obtenerPeriodoMaximo($cuit);
		for ($i = 0; $i <= 23; $i++) {
			$periodos_graficos[$i] = date("Ym", strtotime($periodo_maximo." -$i months"));
		}

		$garantias = SQLConnection::backendStoreProcedure('obtener_garantias_bancos', array($cuit));
		$garantias = MainController::procesarGraficoGarantias($garantias, $periodos_graficos);
		if ($garantias) {
			foreach ($garantias as $key => $garantia) {
				foreach ($garantia as $key2 => $value) {
					if ($key2 == 'periodo') {
						$garantias[$key][$key2] = str_replace('-', ',', $value);
					}
				}
			}
		}
		$grafico_garantias = '';

		/* Consulta de los indicadores del producto que se muestran en la solapa del Recomendador de Crédito */
		$ind1 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_RECOMENDADO'), 'selectOne');
		$ind2 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_RECOMENDADO_FECHA'), 'selectOne');
		$ind3 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_APROBADO'), 'selectOne');
		$ind4 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_APROBADO_FECHA'), 'selectOne');
		$ind5 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_SCORE_BALANCE'), 'selectOne');
		$ind6 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_TEND_BALANCE'), 'selectOne');
		$ind7 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_ESCENARIOS_FUTUROS'), 'selectOne');
		$ind8 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_ESCENARIOS_TENDENCIA'), 'selectOne');
		$ind9 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_SITUACION_SOCIOS'), 'selectOne');
		$ind0 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_SITUACION_TENDENCIA'), 'selectOne');
		$inda = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_APROBADO_USD'), 'selectOne');
		$indb = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_APROBADO_USD_FECHA'), 'selectOne');
		$indc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_VENTAS'), 'selectOne');
		$indd = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_VENTAS_FECHA'), 'selectOne');
		$inde = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_DIAS_VENTAS'), 'selectOne');
		$indf = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_VENTAS_PPB'), 'selectOne');
		$indg = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_DIAS_VENTAS_PPB'), 'selectOne');

		$archivos = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('search', $id), 'select');

		$notas = SQLConnection::backendStoreProcedure('LN_limite_credito_notas_', array('search', $id), 'select');

		$vista = \View::make('/led/led_recomendador_credito')->with(compact(['qcontrap' , 'file_exists' , 'logo_name' , 'limite_credito', 'cendeu_trimestral', 'totalcendeu', 'balances', 'datos_balances', 'grafico_situaciones', 'grafico_garantias', 'pdfrc' , 'archivos' , 'notas',
																													'ind1', 'ind2', 'ind3', 'ind4', 'ind5', 'ind6', 'ind7', 'ind8', 'ind9', 'ind0', 'inda', 'indb', 'indc' , 'indd' , 'inde' , 'indf', 'indg' ]))->render();
		/*print_r('TOTAL CENDEU   ');
		var_dump($total_cendeu);
		print_r('VENTAS   ');
		var_dump($indc);
		die;*/

		return \Response::json(
			array(
				'view' => $vista,
				'info'=>compact('situaciones', 'garantias', 'env')
			),
			200,
			[],
			JSON_NUMERIC_CHECK
		);
	}

	public static function ledRecomendadorCreditoIngresarNota()
	{
		$contraparte = Request::input('contraparte');
		$texto_nota = Request::input('texto_nota');
		$user_id = Request::input('user_id');

		$nueva = SQLConnection::backendStoreProcedure('LN_limite_credito_notas_', array('ingresar_nota', $contraparte, $texto_nota, $user_id), 'select');

		/*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
		$notas = SQLConnection::backendStoreProcedure('LN_limite_credito_notas_', array('search', $contraparte), 'select');*/

		return json_encode($nueva);
	}


	public static function ledRecomendadorCreditoSubirArchivo()
	{
		$contraparte = Request::input('contraparte');
		$titulo_archivo = Request::input('titulo_archivo');
		$user_id = Session::get('usuario')->user_id;

		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$ruta_archivo = '';

		if (!empty($_FILES['archivo']) && $_FILES['archivo']['name'] !== '') {
			$userfile_name = $_FILES['archivo']['name'];
			$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);

			$ftype = strtolower($userfile_extn);
			if ($ftype == 'png' or $ftype == 'jpg' or $ftype == 'gif' or $ftype == 'pdf') {
				if (basename($_FILES['archivo']['name']) !='') {
					if (!file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente)) {
						mkdir(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente, 0777, true);
					}
					if (!file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente . '/' . $contraparte)) {
						mkdir(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente . '/' . $contraparte, 0777, true);
					}

					$ruta_archivo = '/limite-credito/' . $qcontrap->cliente . '/' . $contraparte . '/' . $userfile_name;

					$path = env('PATH_DOCUMENTOS') . $ruta_archivo;
					$ftype = strtolower(pathinfo($path, PATHINFO_EXTENSION));
					move_uploaded_file($_FILES['archivo']['tmp_name'], $path);

					$nuevo = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('insert', $contraparte, $titulo_archivo, $ruta_archivo, $user_id), 'select');

					return json_encode($nuevo);
				}
			}
		}
	}


	public static function ledRecomendadorCreditoAbrirArchivo()
	{
		$contraparte = Request::input('contraparte');
		$archivo = Request::input('archivo');
		$info = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('select', $contraparte, null, null, null, $archivo), 'selectOne');

		if (!empty($info)) {
			$info->ruta_archivo = env('RUTA_DOCUMENTOS') . $info->ruta_archivo;
		}

		return json_encode($info);
	}

	public static function ledRecomendadorCreditoEditarArchivo()
	{
		$contraparte = Request::input('contraparte');
		$archivo = Request::input('archivo');
		$info = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('select', $contraparte, null, null, null, $archivo), 'selectOne');

		return view('/led/led_recomendador_credito_editar_archivo') ->with(compact(['contraparte', 'info']));
	}

	public static function ledRecomendadorCreditoActualizarArchivo()
	{
		$contraparte = Request::input('contraparte');
		$archivo = Request::input('archivo');
		$titulo_archivo = Request::input('titulo_archivo');

		$temp = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('update', $contraparte, $titulo_archivo, null, null, $archivo), 'selectOne');
		$info = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('select', $contraparte, null, null, null, $archivo), 'selectOne');

		if (!empty($info)) {
			$info->ruta_archivo = env('RUTA_DOCUMENTOS') . $info->ruta_archivo;
		}
		return json_encode($info);
	}


	public static function ledRecomendadorCreditoActualizarMonto()
	{
		$id = Request::input('contraparte');
		$limite = Request::input('limite');
		$limite_usd = Request::input('limite_usd');


		$nueva_nota = null;
		$nueva_nota_usd = null;
		$limite_credito = null;

		if (!empty($limite)) {
			if ($limite > 0) {
		
				/* La actualización del crédito otorgado devuelve el contenido de la nueva nota creada automáticamente */
				$nueva_nota = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('actualizar_credito_otorgado', $id, $limite, null, Session::get('usuario')->user_id), 'selectOne');

				if (null !== $nueva_nota) {

					/* Asiento del indicador para el panel de control */
					$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('monto_aprobado', null, null, null, $id, null, null, $limite, null, null, Session::get('usuario')->user_id), 'selectOne');
				}
			}
		}

		if (!empty($limite_usd)) {
			if ($limite_usd > 0) {

				/* La actualización del crédito otorgado devuelve el contenido de la nueva nota creada automáticamente */
				$nueva_nota_usd = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('actualizar_credito_otorgado_usd', $id, $limite_usd, null, Session::get('usuario')->user_id), 'selectOne');

				if (null !== $nueva_nota_usd) {

					/* Asiento del indicador para el panel de control */
					$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('monto_aprobado_usd', null, null, null, $id, null, null, $limite_usd, null, null, Session::get('usuario')->user_id), 'selectOne');
				}
			}
		}

		$limite_credito = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $id), 'selectOne');

		return json_encode(array($nueva_nota , $nueva_nota_usd, $limite_credito));
	}

	public static function ledLimiteCredito() {
	  $id = Request::input('contraparte');
	  $datos = []; 
	  if ($id > 0) {
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
		$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');
		$multiples_montos = []; 
		if (!empty($multiple ))
		{
			$multiples_montos = SQLConnection::backendStoreProcedure('LN_limite_credito_multiple', array($id), 'select');
		}
		/*
		$otros_datos = []; 
		$otros_datos = DB::select('EXEC LN_contraparte_datos_aportados_ ?', array($id));
		$i = 0; 
		foreach ($otros_datos as $value) {
				$value->titulo = strtoupper($value->titulo); 
				$datos[$value->titulo][$i] = new stdClass();
				$datos[$value->titulo][$i]->item  = $value->item;
				$datos[$value->titulo][$i]->fecha = $value->fecha;
				$datos[$value->titulo][$i]->valor = $value->valor; 
				$i += 1; 
			}
	  */
	  }
	  return view('/led/led_limite_credito')->with(compact(['qcontrap','solicitado','otorgado','cme','otorgado_cme','multiples_montos']));
	}

	public static function ledDatosAportados() {
	  $id = Request::input('contraparte');
	  $datos = []; 
	  if ($id > 0) {
			$otros_datos = []; 
			$otros_datos = DB::select('EXEC LN_contraparte_datos_aportados_ ?', array($id));
			$i = 0; 
			foreach ($otros_datos as $value) {
					$value->titulo = strtoupper($value->titulo); 
					$datos[$value->titulo][$i] = new stdClass();
					$datos[$value->titulo][$i]->item  = $value->item;
					$datos[$value->titulo][$i]->fecha = $value->fecha;
					$datos[$value->titulo][$i]->valor = $value->valor; 
					$i += 1; 
			}
	  }
	  return view('/led/led_datos_aportados')->with(compact(['datos']));
	}

	public static function ledDependenciaBalance() {

	  $id = Request::input('contraparte');

	  $cliente = Session::get('usuario')->cliente['client_id'];
	  $id = Request::input('contraparte');
	  if ($id > 0) {

		$depecon = new stdClass(); 
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
		$depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'DEP_ECON_BALANCE'), 'selectOne'); 
		$fecha_bal = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'DEP_ECON_BALANCE_FECHA'), 'selectOne'); 
		$datos = SQLConnection::backendStoreProcedure('LN_dependencia_economica_balance', array($id), 'selectOne');
		$compras = SQLConnection::backendStoreProcedure('LN_dependencia_economica_compras', array($id), 'select');
	  }

	  	$monedas = DB::select('EXEC obtener_Monedas', array());
		$productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
		$id_producto     = $productos->producto;

	  return view('/led/led_dependencia_balance')->with(compact(['qcontrap', 'depecon', 'monedas','fecha_bal', 'datos', 'compras','id_producto']));
	}

	/************************************************************************************/


	public static function ledBalances()
	{
		$id = Request::input('contraparte');
		/*
			$usuario			  = Session::get('usuario');
			$cliente			  = '';

			$token_por_secciones  = Request::input('token_por_secciones');
			$token_por_secciones  = json_decode(Misc::decrypt($token_por_secciones));
			self::$sesion_externa = isset($token_por_secciones->usuario->sesion_externa) ? true : false;


			if(self::$sesion_externa){

			  $cliente = '1151080'; // '2254875';
			  $token_por_secciones->usuario->cliente = get_object_vars($token_por_secciones->usuario->cliente);
			  $token_por_secciones->usuario->cliente['client_id'] = $token_por_secciones->usuario->client_id;
			  $token_por_secciones->user_id = 131214525; // 15342812;
			  // agregado por marita 23/10/2018 (no andaba para usuarios externos)
			  $token_por_secciones->user_id = 131214525; // 15342812;
			  $usuario					= $token_por_secciones->usuario;
			  $usuario->cliente['client_id'] = $cliente;
			  $usuario->user_id = 131214525; // 15342812;
			  if (!isset($usuario->cliente[ENV('ID_INFORME_COMERCIAL')]) &&
				  isset($usuario->cliente['_empty_'])){
				  $usuario->cliente[ENV('ID_INFORME_COMERCIAL')] = $usuario->cliente['_empty_'] ;
			  }
			  Session::put('usuario',$usuario);
			  Session::put('externo',true);
			  Session::save();

			}else if($token_id_usuario){
			  $datos_cliente  = SQLConnection::obtenerCliente($token_id_usuario->user_id);
			  $secciones	  = LoginController::obtenerSeccionesHabilitadas($token_id_usuario->user_id);
			  $secciones	  = array_change_key_case($secciones, CASE_LOWER);
			  $cliente_ordenado = [];
			  foreach($datos_cliente as $cliente){
				$cliente_ordenado[$cliente->id_producto] = $cliente;
			  }

			  $token_id_usuario->usuario->cliente = get_object_vars($token_id_usuario->usuario->cliente);
			  $token_id_usuario->usuario->cliente[ENV('ID_INFORME_COMERCIAL')]->secciones = $secciones;
			  $cliente					= $token_id_usuario->usuario->cliente[ENV('ID_INFORME_COMERCIAL')]->client_id;
			  $secciones_en_mantenimiento = [];
			  $usuario					= $token_id_usuario->usuario;
			  $usuario->cliente['client_id'] = $cliente;
			  Session::put('usuario',$usuario);
			  Session::put('externo',true);
			  Session::save();
			}else{
			  $cliente			= $usuario->cliente['client_id'];
			  $comentarios		= SQLConnection::obtenerComentario($cuit,$cliente);
			}
		*/
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$analisis = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'ANALISIS_BAL'), 'selectOne');

		/*$id_balances = SQLConnection::backendStoreProcedure('LN_contrapartes_id_balances', array($id), 'select');

		$ids_bal = '0';
		foreach ($id_balances as $key => $id_balance) {
		  $ids_bal .= ',' . $id_balance->id_balance;
		}*/


		/* Acá se debe hacer el chequeo de la existencia de balances publicados vinculados documentos LED */
		$tiene_score_balance = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_BAL'), 'selectOne');


		/* Cruce de información de balances LED de la contrparte con los balances_contables
				Un balance es provisto por fidelitas cuando está publicado y el doc correspondiente en LED no está Verificado
		*/
		$ids_bal = '0';
		$faltantes = '';
		$cantidad_faltantes = 0;
		$info_balances = SQLConnection::backendStoreProcedure('LN_balances', array('balances_contraparte', $id), 'select');
		$hay_provistos_fidelitas = false;
		foreach ($info_balances as $key => $data_balance) {
			if ($data_balance->estado == 'PUBLICADO') {
				$ids_bal .= ',' . $data_balance->id_balance;
				$hay_provistos_fidelitas = ($data_balance->estado_doc != 'V') ? true : $hay_provistos_fidelitas;

				if ($data_balance->estado_doc != 'V') {
					$faltantes = $faltantes . (('' != $faltantes) ? ', ' : '') . $data_balance->anio_ejercicio;
					$cantidad_faltantes++;
				}
			}
		}

		if (!empty($tiene_score_balance)) {
			$score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'SCORE_BAL'), 'selectOne');
			$valoracion = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'VALORACION_BAL'), 'selectOne');
			return (self::LEDobtenerContables($qcontrap->identificacion, $ids_bal, $score, $valoracion, $analisis, $tiene_score_balance, $hay_provistos_fidelitas, $faltantes, $cantidad_faltantes));
		} else {
			return (self::LEDobtenerContables($qcontrap->identificacion, $ids_bal, null, null, null, $tiene_score_balance, $hay_provistos_fidelitas, $faltantes, $cantidad_faltantes));
		}
	}

	public static function LEDobtenerContables($cuit, $ids, $score, $valoracion, $analisis, $tiene_balance=true, $hay_provistos_fidelitas=false, $faltantes='', $cantidad_faltantes=0, $json=true, $grafico_capital_de_trabajo='', $grafico_patrimonial='', $grafico_solvencia='', $grafico_liquidez_corriente='', $grafico_endeudamiento_corriente='', $grafico_performance='', $grafico_efecto_palanca='', $grafico_ventas='', $grafico_gastos_totales_sobre_ventas='', $tipo_impresion = '')
	{	
		$imagen_fidelitas			   = Misc::obtenerImagenFidelitas();
		/*$cuit						   = Request::input('cuit');*/
		$ver_todos					  = (Session::get('externo')) ?  'S' : 'N';
		$notas_contables				= SQLConnection::obtenerNotasContables($cuit, null);
		/*$comentarios_contables		  = SQLConnection::obtenerComentariosContables($cuit, null);*/
		$respuesta_activo			   = SQLConnection::backendStoreProcedure('obtener_activo_resumido', array(null,null,$ids), 'select');
		//$respuesta_activo			   = Misc::procesarBalance($respuesta_activo);
		$respuesta_pasivo			   = SQLConnection::backendStoreProcedure('obtener_pasivo_resumido', array(null,null,$ids), 'select');
		//$respuesta_pasivo			   = Misc::procesarBalance($respuesta_pasivo);
		$respuesta_estado			   = SQLConnection::backendStoreProcedure('obtener_estado_de_resultados_resumido', array(null,null,$ids), 'select');
		//$respuesta_estado			   = Misc::procesarBalance($respuesta_estado);
		$indices_de_gestion			 = SQLConnection::backendStoreProcedure('obtener_indices_de_gestion_resumido', array(null,null,$ids), 'select');
		//$indices_de_gestion			 = Misc::procesarBalance($indices_de_gestion);
		$respuesta_activo_extendido	 = SQLConnection::backendStoreProcedure('obtener_activo_contables', array(null,null,$ids), 'select');
		//$respuesta_activo_extendido	 = Misc::procesarBalance($respuesta_activo_extendido);
		$respuesta_pasivo_extendido	 = SQLConnection::backendStoreProcedure('obtener_pasivo_contables', array(null,null,$ids), 'select');
		//$respuesta_pasivo_extendido	 = Misc::procesarBalance($respuesta_pasivo_extendido);
		$respuesta_estado_extendido	 = SQLConnection::backendStoreProcedure('obtener_estado_de_resultados_contables', array(null,null,$ids), 'select');
		//$respuesta_estado_extendido	 = Misc::procesarBalance($respuesta_estado_extendido);
		$indices_de_gestion_extendido   = SQLConnection::backendStoreProcedure('obtener_indices_de_gestion', array(null,null,$ids), 'select');
		//$indices_de_gestion_extendido   = Misc::procesarBalance($indices_de_gestion_extendido);
		$contables					  = self::LEDcalcularContables($respuesta_activo, $respuesta_pasivo, $respuesta_estado, $indices_de_gestion);
		//print_r($contables); die();

		$contables_extendido			= self::LEDcalcularContables($respuesta_activo_extendido, $respuesta_pasivo_extendido, $respuesta_estado_extendido, $indices_de_gestion_extendido);
		$activo_extendido			   = $contables_extendido['activo'];
		$pasivo_extendido			   = $contables_extendido['pasivo'];
		$estado_de_resultados_extendido = $contables_extendido['estado_de_resultados'];
		$indices_extendido			  = $contables_extendido['indices_de_gestion'];
		$activo						 = $contables['activo'];
		$pasivo						 = $contables['pasivo'];
		$estado_de_resultados		   = $contables['estado_de_resultados'];
		$indices						= $contables['indices_de_gestion'];
		$grafico_contable			   = $contables['graficos'];
		$registros_contables			= self::obtenerRegistrosContables($respuesta_activo, $respuesta_estado, $indices_de_gestion, $respuesta_activo_extendido, $respuesta_pasivo_extendido, $respuesta_estado_extendido, $indices_de_gestion_extendido);
		$traducciones_graficos		  = Misc::obtenerTraduccionesGraficos();
		$registro_act				   = $registros_contables['registro_act'];
		$registro_estado				= $registros_contables['registro_estado'];
		$registro_ind_gestion		   = $registros_contables['registro_ind_gestion'];
		$registro_gestion_ext		   = $registros_contables['registro_gestion_ext'];
		$registro_act_ext			   = $registros_contables['registro_act_ext'];
		$registro_pas_ext			   = $registros_contables['registro_pas_ext'];
		$registro_estado_ext			= $registros_contables['registro_estado_ext'];
		$registro_gestion_ext		   = $registros_contables['registro_gestion_ext'];
		$tipo_persona				   = (substr($cuit, 0, 1) != '3') ? 'f' : 'j' ;


//var_dump(registro_ind_gestion); die();
		/*$hay_analisis = ( sizeof($comentarios_contables) > 0 ? ( null != $comentarios_contables[0]->comentarios ? 1 : 0 ) : 0 );*/
		$hay_analisis = !empty($analisis) ? 1 : 0;

		//  $activo = $tiene_balance ? $activo : [];

		$cliente = Session::get('usuario')->cliente['client_id'];
		//-------								
		$productobalance = SQLConnection::backendStoreProcedure('LN_contraparte_balances',array($cuit,intval($cliente)) );
		$productobalance = $productobalance[0];
		//-------
		$balances_data = SQLConnection::backendStoreProcedure('LN_balances_data', array($cuit, null, $ids), 'select');

		$nuevo_extendido = null;
		foreach ($balances_data as $key => $datos_balance) {
			$nuevo_extendido['endeudamiento_corriente'][] = $datos_balance->endeudamiento_corriente;
			$nuevo_extendido['endeudamiento_total'][] = $datos_balance->endeudamiento_total;
			$nuevo_extendido['capital_corriente_sobre_activo'][] = $datos_balance->capital_corriente_sobre_activo;
			$nuevo_extendido['rotacion_pasivo_corriente'][] = $datos_balance->rotacion_pasivo_corriente;
			$nuevo_extendido['rotacion_activos'][] = $datos_balance->rotacion_activos;
			$nuevo_extendido['meses_deuda'][] = $datos_balance->meses_deuda;
			$nuevo_extendido['dias_deuda'][] = $datos_balance->dias_deuda;
			$nuevo_extendido['margen_operativo'][] = $datos_balance->margen_operativo;
			$nuevo_extendido['ebitda'][] = $datos_balance->ebitda;
			$nuevo_extendido['ebitda_ventas'][] = $datos_balance->ebitda_ventas;
			$nuevo_extendido['etitda_intereses'][] = $datos_balance->etitda_intereses;
			$nuevo_extendido['gastos_financieros_ventas'][] = $datos_balance->gastos_financieros_ventas;
			$nuevo_extendido['gastos_comerciales_ventas'][] = $datos_balance->gastos_comerciales_ventas;
			$nuevo_extendido['gastos_administracion_ventas'][] = $datos_balance->gastos_administracion_ventas;
			$nuevo_extendido['gastos_totales_ventas'][] = $datos_balance->gastos_totales_ventas;
			$nuevo_extendido['inversiones_bienes_uso'][] = $datos_balance->inversiones_bienes_uso;
			$nuevo_extendido['vida_restante_bienes_uso'][] = $datos_balance->vida_restante_bienes_uso;
			$nuevo_extendido['ebit'][] = $datos_balance->ebit;
			$nuevo_extendido['ebit_ventas'][] = $datos_balance->ebit_ventas;
		}


$bal_man = $balances_data[0]->bal_manifestacion ?? 'M';
	if ( $bal_man !== 'M'){

		$vista = \View::make('/led/led_contables_ext')->with(compact(
			'productobalance',
			'nuevo_extendido',
			'score',
			'valoracion',
			'analisis',
			'hay_analisis',
			'hay_provistos_fidelitas',
			'faltantes',
			'cantidad_faltantes',
			'activo',
			'pasivo',
			'estado_de_resultados',
			'indices',
			'activo_extendido',
			'pasivo_extendido',
			'estado_de_resultados_extendido',
			'indices_extendido',
			'grafico_capital_de_trabajo',
			'grafico_patrimonial',
			'grafico_solvencia',
			'grafico_liquidez_corriente',
			'grafico_endeudamiento_corriente',
			'grafico_performance',
			'grafico_efecto_palanca',
			'grafico_ventas',
			'grafico_gastos_totales_sobre_ventas',
			'json',
			'registro_act',
			'registro_estado',
			'registro_ind_gestion',
			'registro_gestion_ext',
			'registro_act_ext',
			'registro_pas_ext',
			'registro_estado_ext',
			'registro_gestion_ext',
			'tipo_impresion'
		))->render();

		} else {
		// VISTA DE TRADUCCIONES
				$desde_infomre = false;

		$vista = \View::make('/informes/contables')->with(compact(
			'productobalance',
			'nuevo_extendido',
			'hay_analisis',
			'activo',
			'pasivo',
			'estado_de_resultados',
			'indices',
			'activo_extendido',
			'pasivo_extendido',
			'estado_de_resultados_extendido',
			'indices_extendido',
			'grafico_capital_de_trabajo',
			'grafico_patrimonial',
			'grafico_solvencia',
			'grafico_liquidez_corriente',
			'grafico_endeudamiento_corriente',
			'grafico_performance',
			'grafico_efecto_palanca',
			'grafico_ventas',
			'grafico_gastos_totales_sobre_ventas',
			'json',
			'registro_act',
			'registro_estado',
			'registro_ind_gestion',
			'registro_gestion_ext',
			'registro_act_ext',
			'registro_pas_ext',
			'registro_estado_ext',
			'registro_gestion_ext',
			'tipo_impresion',
			'desde_infomre',
			'ver_todos',
			'bal_man'

		))->render();
	}



		if (!$json) {
			return $vista;
		}

		//Session::put($cuit." ".date('Y-m-d').".contables",json_encode($vista));
		$grafico_exportable = false;
		/*if(isset(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')])){
		  if(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')]->client_id == 2254875){
			$grafico_exportable = true;
		  }
		}*/

		return \Response::json(
			array(
		  'view' => $vista,
		  'info'=>compact('activo', 'pasivo', 'estado_de_resultados', 'indices', 'grafico_contable', 'grafico_exportable', 'traducciones_graficos', 'tipo_persona', 'imagen_fidelitas')
		),
			200,
			[],
			JSON_NUMERIC_CHECK
		);
	}



	private static function LEDcalcularContables($respuesta_activo, $respuesta_pasivo, $respuesta_estado, $indices_de_gestion)
	{
		$activo			   = '';
		$pasivo			   = '';
		$estado_de_resultados = '';
		$indices			  = '';
		$grafico_contable	 = [];
		ksort($respuesta_activo);
		ksort($respuesta_pasivo);
		ksort($respuesta_estado);
		ksort($indices_de_gestion);

		/* Para que muestre únicamente los últimos 3 balances */

		foreach ($indices_de_gestion as $key_indice => $indice) {
			//Cuenta 'Efecto Palanca'
			$ganancia	 = $indice->ganancia;
			$activo_total = $indice->act_total;
			$resultado_efecto_palanca = $ganancia / $activo_total;
			$grafico_contable['periodo'][] = $indice->fecha_balance;
			$grafico_contable['solvencia'][$key_indice][] = $indice->ind_solvencia_pat ;
			$grafico_contable['liquidez_corriente'][$key_indice][] =  $indice->ind_liqcorr ;
			$grafico_contable['endeudamiento_corriente'][$key_indice][] =  $indice->ind_endeu;
			$grafico_contable['utilidad_neta'][$key_indice][] =  $indice->ind_utilfin ;
			$grafico_contable['efecto_palanca'][$key_indice][] = $resultado_efecto_palanca ;
			$indices = true;
		}
		


		foreach ($respuesta_activo as $key_respuesta => $balances) {
			$grafico_contable['periodo'][] = $balances->fecha_balance;
			$grafico_contable['total_activo_corriente'][$key_respuesta][] = $balances->ac_total ;
			$grafico_contable['activo'][$key_respuesta][] = $balances->act_total ;
			$activo = true;
		}


		foreach ($respuesta_pasivo as $key_respuesta => $balances) {
			$grafico_contable['periodo'][] = $balances->fecha_balance;
			$grafico_contable['total_pasivo_corriente'][$key_respuesta][] = $balances->pc_total ;
			$grafico_contable['pasivo'][$key_respuesta][] = $balances->pas_total ;
			$grafico_contable['patrimonio_neto'][$key_respuesta][] = $balances->patrimonio ;
			$respuesta_pasivo = true;
		}


		foreach ($respuesta_estado as $key_respuesta => $balances) {
			//Cuenta GASTOS TOTALES SOBRE VENTAS
			$gasto_adm	=  $balances->res_gasadm;
			$gasto_fin	=  $balances->res_gasfin;
			$gasto_comer  = $balances->res_gascom;
			$venta		= ($grafico_contable['res_vtanet'][$key_respuesta][] = $balances->res_vtanet);
			$gastos_totales_sobre_ventas = ($venta > 0)  ? ((($gasto_adm+$gasto_fin+$gasto_comer) * 100) / $venta) : 0 ;
			$grafico_contable['gastos_totales_sobre_ventas'][$key_respuesta][] =  $gastos_totales_sobre_ventas ;
			$grafico_contable['periodo'][] = $balances->fecha_balance;
			//$grafico_contable['efecto_palanca'][$key_respuesta][] = number_format( ($balances / $grafico_contable['activo'][$key_respuesta][1]),2);
			$grafico_contable['ventas'][$key_respuesta][] = $balances->res_vtanet;
			$respuesta_estado = true;
		}
		if (!$grafico_contable) {
			$grafico_contable = [];
		}
		$return['graficos']			 = $grafico_contable;
		$return['activo']			   = $activo;
		$return['pasivo']			   = $pasivo;
		$return['estado_de_resultados'] = $estado_de_resultados;
		$return['indices_de_gestion']   = $indices;
		return $return;
	}




	private static function obtenerRegistrosContables($respuesta_activo, $respuesta_estado, $indices_de_gestion, $respuesta_activo_extendido, $respuesta_pasivo_extendido, $respuesta_estado_extendido, $indices_de_gestion_extendido)
	{
		$registro_act		 = [];
		$registro_estado	  = [];
		$registro_ind_gestion = [];
		$registro_act_ext	 = [];
		$registro_pas_ext	 = [];
		$registro_estado_ext  = [];
		$registro_gestion_ext = [];
		//ACTIVO-PASIVO-PN resumido
		foreach ($respuesta_activo as $key_array => $objeto) {
			$registro_act['periodo'][] = $objeto->fecha_balance;
			$registro_act['ac_total'][] = $objeto->ac_total;
			$registro_act['anc_total'][] = $objeto->anc_total;
			$registro_act['act_total'][] = $objeto->act_total;
			$registro_act['pc_total'][] = $objeto->pc_total;
			$registro_act['pnc_total'][] = $objeto->pnc_total;
			$registro_act['pas_total'][] = $objeto->pas_total;
			$registro_act['patrimonio'][] = $objeto->patrimonio;
			$registro_act['nombre_moneda'] = $objeto->nombre_moneda;
			$registro_act['ruta_archivo'][] = $objeto->ruta_archivo;
			$registro_act['fecha_amd'][] = $objeto->fecha_order;
			$registro_act['cuit'][] = $objeto->cuit;
		}
		//ESTADO DE RESULTADO resumido
		foreach ($respuesta_estado as $key_array => $objeto) {
			$registro_estado['periodo'][] = $objeto->fecha_balance;
			$registro_estado['res_vtanet'][] = $objeto->res_vtanet;
			$registro_estado['ganancia'][] = $objeto->ganancia;
			$registro_estado['nombre_moneda'] = $objeto->nombre_moneda;
		}
		//INDICE DE GESTION resumido
		foreach ($indices_de_gestion as $key_array => $objeto) {
			$registro_ind_gestion['periodo'][] = $objeto->fecha_balance;
			$registro_ind_gestion['ind_liqcorr'][] = $objeto->ind_liqcorr;
			$registro_ind_gestion['ind_endeu'][] = $objeto->ind_endeu;
			//se cambio "ind_solvencia_pat" x "ind_solvencia"
			//se cambio "ind_solvencia" x "ind_solvencia_pat" 28-12-2017 a pedido de edu
			$registro_ind_gestion['ind_solvencia_pat'][] = $objeto->ind_solvencia_pat;
			$registro_ind_gestion['ind_captra'][] = $objeto->ind_captra;
			$registro_ind_gestion['ind_rentabilidad'][] = $objeto->ind_rentabilidad;
			$registro_ind_gestion['ind_rotact'][] = $objeto->ind_rotact;
			$registro_ind_gestion['ind_rotinv'][] = $objeto->ind_rotinv;
			$registro_ind_gestion['ind_marbru'][] = $objeto->ind_marbru;
			$registro_ind_gestion['nombre_moneda'] = $objeto->nombre_moneda;
		}

		// ACTIVO extendido
		foreach ($respuesta_activo_extendido as $key_array => $objeto) {
			$registro_act_ext['periodo'][] = $objeto->fecha_balance;
			$registro_act_ext['ac_cajban'][] = $objeto->ac_cajban;
			$registro_act_ext['ac_inver'][] = $objeto->ac_inver;
			$registro_act_ext['ac_crevta'][] = $objeto->ac_crevta;
			$registro_act_ext['ac_otrcre'][] = $objeto->ac_otrcre;
			$registro_act_ext['ac_biecam'][] = $objeto->ac_biecam;
			$registro_act_ext['ac_bietan'][] = $objeto->ac_bietan;
			$registro_act_ext['ac_otract'][] = $objeto->ac_otract;
			$registro_act_ext['ac_total'][] = $objeto->ac_total;
			$registro_act_ext['anc_crevta'][] = $objeto->anc_crevta;
			$registro_act_ext['anc_otrcre'][] = $objeto->anc_otrcre;
			$registro_act_ext['anc_inver'][] = $objeto->anc_inver;
			$registro_act_ext['anc_actint'][] = $objeto->anc_actint;
			$registro_act_ext['anc_otract'][] = $objeto->anc_otract;
			$registro_act_ext['anc_bieuso'][] = $objeto->anc_bieuso;
			$registro_act_ext['anc_bieusovo'][] = $objeto->anc_bieusovo;
			$registro_act_ext['anc_depacu'][] = $objeto->anc_depacu;
			$registro_act_ext['anc_total'][] = $objeto->anc_total;
			$registro_act_ext['act_total'][] = $objeto->act_total;
			$registro_act_ext['nombre_moneda'] = $objeto->nombre_moneda;
		}
		//PASIVOS extendidos
		foreach ($respuesta_pasivo_extendido as $key_array => $objeto) {
			$registro_pas_ext['periodo'][] = $objeto->fecha_balance;
			$registro_pas_ext['pc_ctapag'][] = $objeto->pc_ctapag;
			$registro_pas_ext['pc_presta'][] = $objeto->pc_presta;
			$registro_pas_ext['pc_remune'][] = $objeto->pc_remune;
			$registro_pas_ext['pc_carfis'][] = $objeto->pc_carfis;
			$registro_pas_ext['pc_antcli'][] = $objeto->pc_antcli;
			$registro_pas_ext['pc_otrpas'][] = $objeto->pc_otrpas;
			$registro_pas_ext['pc_total'][] = $objeto->pc_total;
			$registro_pas_ext['pnc_cuepag'][] = $objeto->pnc_cuepag;
			$registro_pas_ext['pnc_previ'][] = $objeto->pnc_previ;
			$registro_pas_ext['pnc_presta'][] = $objeto->pnc_presta;
			$registro_pas_ext['pnc_otrpas'][] = $objeto->pnc_otrpas;
			$registro_pas_ext['pnc_deufis'][] = $objeto->pnc_deufis;
			$registro_pas_ext['pnc_total'][] = $objeto->pnc_total;
			$registro_pas_ext['pas_total'][] = $objeto->pas_total;
			$registro_pas_ext['capsoc'][] = $objeto->capsoc;
			$registro_pas_ext['res_noasig'][] = $objeto->res_noasig;
			$registro_pas_ext['patrimonio'][] = $objeto->patrimonio;
			$registro_pas_ext['nombre_moneda'] = $objeto->nombre_moneda;
		}
		//ESTADO DE RESULTADO extendido
		foreach ($respuesta_estado_extendido as $key_array => $objeto) {
			$v1 = $objeto->res_vtanet;
			$v2 = $objeto->res_cosmer;
			$resultado_bruto =  $v1 - $v2;
			$registro_estado_ext['periodo'][]		 = $objeto->fecha_balance;
			$registro_estado_ext['res_vtanet'][]	  = $objeto->res_vtanet;
			$registro_estado_ext['res_compras'][]	 = $objeto->res_compras;
			$registro_estado_ext['res_cosmer'][]	  = $objeto->res_cosmer;
			$registro_estado_ext['amortiza'][]		= $objeto->amortiza;
			$registro_estado_ext['res_gascom'][]	  = $objeto->res_gascom;
			$registro_estado_ext['res_gasadm'][]	  = $objeto->res_gasadm;
			$registro_estado_ext['res_gasfin'][]	  = $objeto->res_gasfin;
			$registro_estado_ext['res_otrosegr'][]	= $objeto->res_otrosegr;
			$registro_estado_ext['res_otrosing'][]	= $objeto->res_otrosing;
			$registro_estado_ext['res_resfin'][]	  = $objeto->res_resfin;
			$registro_estado_ext['res_iva'][]		 = $objeto->res_iva;
			$registro_estado_ext['ganancia'][]		= $objeto->ganancia;
			$registro_estado_ext['resultado_bruto'][] = $resultado_bruto;
			$registro_estado_ext['nombre_moneda']	 = $objeto->nombre_moneda;
		}
		//INDICE DE GESTION extendido
		foreach ($indices_de_gestion_extendido as $key_array => $objeto) {
			$registro_gestion_ext['periodo'][] = $objeto->fecha_balance;
			$registro_gestion_ext['ind_liqcorr'][] = $objeto->ind_liqcorr;
			$registro_gestion_ext['ind_liqseca'][] = $objeto->ind_liqseca;
			$registro_gestion_ext['ind_endeu'][] = $objeto->ind_endeu;
			$registro_gestion_ext['ind_endeuact'][] = $objeto->ind_endeuact;
			//$registro_gestion_ext['ind_solvencia'][] = $objeto->ind_solvencia; se remplazo el 28/12/2017 a pedido de Edu x "ind_solvencia_pat"
			$registro_gestion_ext['ind_solvencia_pat'][] = $objeto->ind_solvencia_pat;
			$registro_gestion_ext['ind_captra'][] = $objeto->ind_captra;
			//$registro_gestion_ext['ind_cappro'][] = $objeto->ind_cappro;
			$registro_gestion_ext['ind_invbu'][] = $objeto->ind_invbu;
			//$registro_gestion_ext['ind_inmact'][] = $objeto->ind_inmact;
			//$registro_gestion_ext['ind_inmpat'][] = $objeto->ind_inmpat;
			$registro_gestion_ext['ind_retpat'][] = $objeto->ind_retpat;
			$registro_gestion_ext['ind_rotvta'][] = $objeto->ind_rotvta;
			$registro_gestion_ext['ind_marbru'][] = $objeto->ind_marbru;
			$registro_gestion_ext['ind_utilfin'][] = $objeto->ind_utilfin;
			$registro_gestion_ext['ind_rentabilidad'][] = $objeto->ind_rentabilidad;
			$registro_gestion_ext['ind_ebipas'][] = $objeto->ind_ebipas;
			$registro_gestion_ext['ind_indrot'][] = $objeto->ind_indrot;
			$registro_gestion_ext['ind_rotinv'][] = $objeto->ind_rotinv;
			$registro_gestion_ext['ind_prest_pn'][] = $objeto->ind_prest_pn;
			$registro_gestion_ext['ind_prest_vtas'][] = $objeto->ind_prest_vtas;
			$registro_gestion_ext['ind_rotact'][] = $objeto->ind_rotact;
			$registro_gestion_ext['nombre_moneda'] = $objeto->nombre_moneda;
		}
		$resp['registro_act']			   = $registro_act;
		$resp['registro_estado']			= $registro_estado;
		$resp['registro_ind_gestion']	   = $registro_ind_gestion;
		$resp['registro_gestion_ext']	   = $registro_gestion_ext;
		$resp['registro_act_ext']		   = $registro_act_ext;
		$resp['registro_pas_ext']		   = $registro_pas_ext;
		$resp['registro_estado_ext']		= $registro_estado_ext;
		return $resp;
	}


	private function mostrarPdf($file_download,$fecha,$cuit)
	{
	  header('Content-Transfer-Encoding: binary');
	  header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($file_download)) . ' GMT');
	  header('Accept-Ranges: bytes');
	  header('Content-Length: ' . filesize($file_download));
	  header('Content-Encoding: none');
	  header('Content-Type: application/pdf');
	  /*header('Content-Disposition: attachment; filename=Balance-'.$cuit.'-'.$fecha.'.pdf');*/
	  readfile($file_download);
	}

  public function ledBalancePdf()
  {
	$archivo = Request::input('archivo_pdf');
	$fecha   = Request::input('fecha_pdf');
	$cuit	= Request::input('cuit_pdf');
	if ($archivo != '')
	{
		$file_download = env('PATH_COMPARTIDO') . $archivo; 
	}
	else 
	{
		$file_download = env('PATH_COMPARTIDO') . '/balances/generico.pdf'; 
	}
	$archivo = str_replace('/balances/','',$archivo); 
	return $this->mostrarPDF($file_download,$fecha,$cuit);
  }




	public static function CURLCall($url, $params, $type="POST")
	{
		$curl = curl_init();
		curl_setopt_array($curl, array(
													CURLOPT_URL => $url,
													CURLOPT_RETURNTRANSFER => true,
													CURLOPT_ENCODING => "",
													CURLOPT_MAXREDIRS => 10,
													CURLOPT_TIMEOUT => 600,
													CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
													CURLOPT_CUSTOMREQUEST => $type,
													CURLOPT_POSTFIELDS => $params,
													CURLOPT_HTTPHEADER => array(
													"cache-control: no-cache",
													"content-type: application/x-www-form-urlencoded"
													),
		));

		$response = curl_exec($curl);
		$err	  = curl_error($curl);

		curl_close($curl);

		if ($err) {
			return json_encode(array('error'=>true));
		} else {
			return $response;
		}
	}



	/*** FUNCIONES PARA CALCULOS DE SCORE ***/


	/* Para el producto balance con suscripción de indicadores por cliente */
	public static function actualizarIndicadoresBalance($id=null)
	{
		if ($id > 0) {
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

			if (!empty($qcontrap)) {
				$cuit = $qcontrap->identificacion;

				$indicadores_balance = SQLConnection::backendStoreProcedure('LN_balances', array('obtener_indicadores', $id), 'select');

				$llamar_curl = false;

				if (!empty($indicadores_balance)) {
					foreach ($indicadores_balance as $k => $ind) {
						if ($ind->valoracion == 'A') {
							/* Se obtiene por cálculo automático */
							$llamar_curl = true;
							break;
						}
					}
				}

				if ($llamar_curl === true) {
					$apikey = env('API_KEY');
					$params = 'apikey=' . $apikey . '&cuit=' . $cuit;

					$balance = self::CURLCall(env('API_SCORE_BALANCE'), $params);

					if (!empty($balance)) {
						$datos = json_decode($balance);
						$indices = isset($datos->indices) ? $datos->indices : null;

						foreach ($indicadores_balance as $k => $ind) {
							if ($ind->valoracion == 'A' and ($ind->tipo_dato == 'I' or $ind->tipo_dato == 'F')) {
								switch ($ind->clave_indicador) {
									case 'SCORE_BAL':
										if (isset($datos->score) and $datos->score > 0) {
											$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_balance', null, null, null, $id, null, $datos->score), 'selectOne');
										}
										break;
									case 'VALORACION_BAL':
										break;
									case 'ANALISIS_BAL':
										break;


									case 'BAL_ACTIVO_CORRIENTE':
										if ($indices !== null) {
											if (isset($indices->activo_corriente_total) and $indices->activo_corriente_total != null) {
												$temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ACTIVO_CORRIENTE', $indices->activo_corriente_total, Session::get('usuario')->user_id), 'selectOne');
											}
										}
										break;
									case 'BAL_ACTIVO_NO_CORRIENTE':
										if ($indices !== null) {
											if (isset($indices->activo_no_corriente_total) and $indices->activo_no_corriente_total != null) {
												$temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ACTIVO_NO_CORRIENTE', $indices->activo_no_corriente_total, Session::get('usuario')->user_id), 'selectOne');
											}
										}
										break;
									case 'BAL_ACTIVO_TOTAL':
										if ($indices !== null) {
											if (isset($indices->activo_total) and $indices->activo_total != null) {
												$temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ACTIVO_TOTAL', $indices->activo_total, Session::get('usuario')->user_id), 'selectOne');
											}
										}
										break;
									case 'BAL_PASIVO_CORRIENTE':
										if ($indices !== null) {
											if (isset($indices->pasivo_corriente_total) and $indices->pasivo_corriente_total != null) {
												$temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PASIVO_CORRIENTE', $indices->pasivo_corriente_total, Session::get('usuario')->user_id), 'selectOne');
											}
										}
										break;
									case 'BAL_PASIVO_NO_CORRIENTE':
										if ($indices !== null) {
											if (isset($indices->pasivo_no_corriente_total) and $indices->pasivo_no_corriente_total != null) {
												$temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PASIVO_NO_CORRIENTE', $indices->pasivo_no_corriente_total, Session::get('usuario')->user_id), 'selectOne');
											}
										}
										break;
									case 'BAL_PASIVO_TOTAL':
										if ($indices !== null) {
											if (isset($indices->pasivo_total) and $indices->pasivo_total != null) {
												$temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PASIVO_TOTAL', $indices->pasivo_total, Session::get('usuario')->user_id), 'selectOne');
											}
										}
										break;
									case 'BAL_PATRIMONIO_NETO':
										if ($indices !== null) {
								            if (isset($indices->patrimonio_neto) and $indices->patrimonio_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PATRIMONIO_NETO', $indices->patrimonio_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->ventas_netas) and $indices->ventas_netas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_VENTAS', $indices->ventas_netas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_RESULTADO':
                                        if ($indices !== null) {
                                            if (isset($indices->resultado) and $indices->resultado != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_RESULTADO', $indices->resultado, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_SOLVENCIA_PATRIMONIAL':
                                        if ($indices !== null) {
                                            if (isset($indices->solvencia_patrimonial) and $indices->solvencia_patrimonial != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_SOLVENCIA_PATRIMONIAL', $indices->solvencia_patrimonial, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ENDEUDAMIENTO_TOTAL':
                                        if ($indices !== null) {
                                            if (isset($indices->endeudamiento_total) and $indices->endeudamiento_total != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ENDEUDAMIENTO_TOTAL', $indices->endeudamiento_total, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ENDEUDAMIENTO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->endeudamiento_corriente) and $indices->endeudamiento_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ENDEUDAMIENTO_CORRIENTE', $indices->endeudamiento_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_CAPITAL_TRABAJO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_de_trabajo) and $indices->capital_de_trabajo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_CAPITAL_TRABAJO', $indices->capital_de_trabajo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_CAPITAL_CORRIENTE_ACTIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_corriente_sobre_activo) and $indices->capital_corriente_sobre_activo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_CAPITAL_CORRIENTE_ACTIVO', $indices->capital_corriente_sobre_activo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_LIQUIDEZ_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->liquidez_corriente) and $indices->liquidez_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_LIQUIDEZ_CORRIENTE', $indices->liquidez_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_LIQUIDEZ_SECA':
                                        if ($indices !== null) {
                                            if (isset($indices->liquidez_seca) and $indices->liquidez_seca != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_LIQUIDEZ_SECA', $indices->liquidez_seca, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_CREDITOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_creditos) and $indices->rotacion_de_creditos != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_CREDITOS', $indices->rotacion_de_creditos, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_PASIVO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_pasivo_corriente) and $indices->rotacion_pasivo_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_PASIVO_CORRIENTE', $indices->rotacion_pasivo_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_INVENTARIOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_inventarios) and $indices->rotacion_inventarios != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_INVENTARIOS', $indices->rotacion_inventarios, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_ACTIVOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_activos) and $indices->rotacion_activos != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_ACTIVOS', $indices->rotacion_activos, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_ACTIVO_FIJO':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_activo_fijo) and $indices->rotacion_activo_fijo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_ACTIVO_FIJO', $indices->rotacion_activo_fijo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_PRESTAMOS_PATRIMONIO_NETO':
                                        if ($indices !== null) {
                                            if (isset($indices->prestamos_sobre_patrimonio_neto) and $indices->prestamos_sobre_patrimonio_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PRESTAMOS_PATRIMONIO_NETO', $indices->prestamos_sobre_patrimonio_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MESES_DEUDA':
                                        if ($indices !== null) {
                                            if (isset($indices->meses_deuda) and $indices->meses_deuda != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MESES_DEUDA', $indices->meses_deuda, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_DIAS_DEUDA':
                                        if ($indices !== null) {
                                            if (isset($indices->dias_deuda) and $indices->dias_deuda != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_DIAS_DEUDA', $indices->dias_deuda, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_BRUTO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_bruto) and $indices->margen_bruto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_BRUTO', $indices->margen_bruto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_NETO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_neto) and $indices->margen_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_NETO', $indices->margen_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_OPERATIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_operativo) and $indices->margen_operativo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_OPERATIVO', $indices->margen_operativo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_SOBRE_PATRIMONIO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_sobre_patrimonio) and $indices->margen_sobre_patrimonio != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_SOBRE_PATRIMONIO', $indices->margen_sobre_patrimonio, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_SOBRE_ACTIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_sobre_activo) and $indices->margen_sobre_activo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_SOBRE_ACTIVO', $indices->margen_sobre_activo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_EBITDA':
                                        if ($indices !== null) {
                                            if (isset($indices->ebitda) and $indices->ebitda != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_EBITDA', $indices->ebitda, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_EBITDA_PASIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->ebitda_pasivo) and $indices->ebitda_pasivo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_EBITDA_PASIVO', $indices->ebitda_pasivo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_EBITDA_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->ebitda_ventas) and $indices->ebitda_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_EBITDA_VENTAS', $indices->ebitda_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_EBITDA_INTERESES':
                                        if ($indices !== null) {
                                            if (isset($indices->etitda_intereses) and $indices->etitda_intereses != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_EBITDA_INTERESES', $indices->etitda_intereses, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_GASTOS_FINANCIEROS_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->gastos_financieros_ventas) and $indices->gastos_financieros_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_GASTOS_FINANCIEROS_VENTAS', $indices->gastos_financieros_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_GASTOS_COMERCIALES_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->gastos_comerciales_ventas) and $indices->gastos_comerciales_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_GASTOS_COMERCIALES_VENTAS', $indices->gastos_comerciales_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_GASTOS_ADMINISTRACION_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->gastos_administracion_ventas) and $indices->gastos_administracion_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_GASTOS_ADMINISTRACION_VENTAS', $indices->gastos_administracion_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_GASTOS_TOTALES_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->gastos_totales_ventas) and $indices->gastos_totales_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_GASTOS_TOTALES_VENTAS', $indices->gastos_totales_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_INVERSIONES_BIENES_USO':
                                        if ($indices !== null) {
                                            if (isset($indices->inversiones_bienes_uso) and $indices->inversiones_bienes_uso != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_INVERSIONES_BIENES_USO', $indices->inversiones_bienes_uso, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_VIDA_RESTANTE_BIENES_USO':
                                        if ($indices !== null) {
                                            if (isset($indices->vida_restante_bienes_uso) and $indices->vida_restante_bienes_uso != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_VIDA_RESTANTE_BIENES_USO', $indices->vida_restante_bienes_uso, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;



                                    case 'LIQUIDEZ_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->liquidez_corriente) and $indices->liquidez_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'LIQUIDEZ_CORRIENTE', $indices->liquidez_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'LIQUIDEZ_SECA':
                                        if ($indices !== null) {
                                            if (isset($indices->liquidez_seca) and $indices->liquidez_seca != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'LIQUIDEZ_SECA', $indices->liquidez_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ENDEUDAMIENTO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->endeudamiento_corriente) and $indices->endeudamiento_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ENDEUDAMIENTO_CORRIENTE', $indices->endeudamiento_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ENDEUDAMIENTO_ACTIVO_FIJO':
                                        if ($indices !== null) {
                                            if (isset($indices->endeudamiento_activo_fijo) and $indices->endeudamiento_activo_fijo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ENDEUDAMIENTO_ACTIVO_FIJO', $indices->endeudamiento_activo_fijo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'SOLVENCIA':
                                        if ($indices !== null) {
                                            if (isset($indices->solvencia) and $indices->solvencia != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'SOLVENCIA', $indices->solvencia, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'SOLVENCIA_PATRIMONIAL':
                                        if ($indices !== null) {
                                            if (isset($indices->solvencia_patrimonial) and $indices->solvencia_patrimonial != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'SOLVENCIA_PATRIMONIAL', $indices->solvencia_patrimonial, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'CAPITAL_TRABAJO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_de_trabajo) and $indices->capital_de_trabajo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'CAPITAL_TRABAJO', $indices->capital_de_trabajo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'CAPITAL_PROPIO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_propio) and $indices->capital_propio != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'CAPITAL_PROPIO', $indices->capital_propio, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'INVERSIONES_BIENES_USO':
                                        if ($indices !== null) {
                                            if (isset($indices->inversiones_bienes_uso) and $indices->inversiones_bienes_uso != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'INVERSIONES_BIENES_USO', $indices->inversiones_bienes_uso, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'INMOBILIZACION_ACTIVOS':
                                        if ($indices !== null) {
                                            if (isset($indices->inmovilizacion_de_activos) and $indices->inmovilizacion_de_activos != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'INMOBILIZACION_ACTIVOS', $indices->inmovilizacion_de_activos, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'INMOBILIZACION_PATRIMONIO_NETO':
                                        if ($indices !== null) {
                                            if (isset($indices->inmovilizacion_patrimonio_neto) and $indices->inmovilizacion_patrimonio_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'INMOBILIZACION_PATRIMONIO_NETO', $indices->inmovilizacion_patrimonio_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'UTILIDAD_BRUTA':
                                        if ($indices !== null) {
                                            if (isset($indices->utilidad_bruta) and $indices->utilidad_bruta != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'UTILIDAD_BRUTA', $indices->utilidad_bruta, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'UTILIDAD_NETA':
                                        if ($indices !== null) {
                                            if (isset($indices->utilidad_neta) and $indices->utilidad_neta != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'UTILIDAD_NETA', $indices->utilidad_neta, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RETORNO_PATRIMONIO':
                                        if ($indices !== null) {
                                            if (isset($indices->retorno_sobre_patrimonio) and $indices->retorno_sobre_patrimonio != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RETORNO_PATRIMONIO', $indices->retorno_sobre_patrimonio, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_ventas) and $indices->rotacion_de_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_VENTAS', $indices->rotacion_de_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_VENTAS_DIAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_ventas_dias) and $indices->rotacion_de_ventas_dias != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_VENTAS_DIAS', $indices->rotacion_de_ventas_dias, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_ACTIVO_FIJO':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_activo_fijo) and $indices->rotacion_activo_fijo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_ACTIVO_FIJO', $indices->rotacion_activo_fijo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_ACTIVO_FIJO_DIAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_activo_fijo_dias) and $indices->rotacion_activo_fijo_dias != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_ACTIVO_FIJO_DIAS', $indices->rotacion_activo_fijo_dias, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RENTABILIDAD_SOBRE_ACTIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->rentabilidad_sobre_activo) and $indices->rentabilidad_sobre_activo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RENTABILIDAD_SOBRE_ACTIVO', $indices->rentabilidad_sobre_activo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'EBITDA_PASIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->ebitda_pasivo) and $indices->ebitda_pasivo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'EBITDA_PASIVO', $indices->ebitda_pasivo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_CREDITOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_creditos) and $indices->rotacion_de_creditos != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_CREDITOS', $indices->rotacion_de_creditos, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_CREDITOS_DIAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_creditos_dias) and $indices->rotacion_de_creditos_dias != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_CREDITOS_DIAS', $indices->rotacion_de_creditos_dias, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_INVENTARIOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_inventarios) and $indices->rotacion_inventarios != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_INVENTARIOS', $indices->rotacion_inventarios, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_INVENTARIOS_DIAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_inventarios_dias) and $indices->rotacion_inventarios_dias != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_INVENTARIOS_DIAS', $indices->rotacion_inventarios_dias, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'PRESTAMOS_PATRIMONIO_NETO':
                                        if ($indices !== null) {
                                            if (isset($indices->prestamos_sobre_patrimonio_neto) and $indices->prestamos_sobre_patrimonio_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'PRESTAMOS_PATRIMONIO_NETO', $indices->prestamos_sobre_patrimonio_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'PRESTAMOS_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->prestamos_sobre_ventas) and $indices->prestamos_sobre_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'PRESTAMOS_VENTAS', $indices->prestamos_sobre_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'CAPITAL_TRABAJO_ACTIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_de_trabajo_activo) and $indices->capital_de_trabajo_activo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'CAPITAL_TRABAJO_ACTIVO', $indices->capital_de_trabajo_activo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RENTABILIDAD_BRUTA':
                                        if ($indices !== null) {
                                            if (isset($indices->rentabilidad_bruta) and $indices->rentabilidad_bruta != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RENTABILIDAD_BRUTA', $indices->rentabilidad_bruta, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'VENTAS_BALANCE':
                                        if ($indices !== null) {
                                            if (isset($indices->ventas) and $indices->ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'VENTAS_BALANCE', $indices->ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RENTABILIDAD_SOBRE_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rentabilidad_sobre_ventas) and $indices->rentabilidad_sobre_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RENTABILIDAD_SOBRE_VENTAS', $indices->rentabilidad_sobre_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RENTABILIDAD_OPERATIVA':
                                        if ($indices !== null) {
                                            if (isset($indices->rentabilidad_operativa) and $indices->rentabilidad_operativa != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RENTABILIDAD_OPERATIVA', $indices->rentabilidad_operativa, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                }
                            }
                        }
                    }
                }
            }
        }
    }


    public static function actualizarScoreBalance($id=null)
    {
        if ($id > 0) {
            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
            if (!empty($qcontrap)) {

                /*$calcula_score_balance = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_BAL'), 'selectOne');

                if(!empty($calcula_score_balance)) {*/

                /** Busco si el indicador de score de balance del producto balance que tenga asociada la contraparte es de cálculo automático **/

                $datosindicador = DB::selectOne("select LN_indicadores.indicador, LN_indicadores.producto, LN_indicadores.valoracion
                                from LN_indicadores inner join LN_familia_productos on
                                LN_indicadores.producto = LN_familia_productos.producto inner join
                                LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
                                inner join LN_productos on LN_indicadores.producto = LN_productos.producto
                                where LN_productos.producto_id = 'balances' 
                                and LN_contraparte_familias.contraparte = " . $id . " 
                                and LN_indicadores.clave_indicador = 'SCORE_BAL'
                                and LN_contraparte_familias.activo = 1 
                                and LN_familia_productos.activo = 1");

                $calcula = (!empty($datosindicador)) ? (($datosindicador->valoracion == 'A') ? true : false) : false;

                if ($calcula == true) {
                    $apikey = env('API_KEY');
                    $params = 'apikey=' . $apikey . '&cuit=' . $qcontrap->numero;

                    $balance = self::CURLCall(env('API_SCORE_BALANCE'), $params);
                    if (!empty($balance)) {
                        $bal = json_decode($balance);

                        if (isset($bal->score)) {
                            $scb = ($bal->score >= 0) ? round($bal->score, 1) : 0;

                            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_balance', null, null, null, $id, null, $scb), 'selectOne');
                            return ($scb);
                        }
                    }
                }
                    

                /*}*/
            }
        }
        return false;
    }

    public static function actualizarScoreComercialSinBalance($id=null)
    {
        if ($id > 0) {
            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
            if (!empty($qcontrap)) {

                /*$calcula_score_comercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_IC'), 'selectOne');
                if (!empty($calcula_score_comercial)) {*/

                $apikey = env('API_KEY');
                $params = 'apikey=' . $apikey . '&cuit=' . $qcontrap->numero . '&cliente=' . $qcontrap->cliente;

                $infcom =   self::CURLCall(env('API_SCORE_INFORME_SIN_BALANCE'), $params);
                if (!empty($infcom)) {
                    $inf = json_decode($infcom);
                    if (isset($inf->score) and $inf->score > 0) {
                        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_comercial', null, null, null, $id, null, round($inf->score, 1)), 'selectOne');
                        return (round($inf->score, 1));
                    }
                }

                /*}*/
            }
        }
        return false;
    }

    public static function actualizarScoreComercialConBalance($id=null)
    {
        if ($id > 0) {
            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

            if (!empty($qcontrap)) {
                $calcula_score_comercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_IC'), 'selectOne');

                if (!empty($calcula_score_comercial)) {
                    $apikey = env('API_KEY');
                    $params = 'apikey=' . $apikey . '&cuit=' . $qcontrap->numero . '&cliente=' . $qcontrap->cliente;

                    //Córdoba, cambié API_SCORE_INFORME_CON_BALANCE por API_SCORE_INFORME_COMERCIAL en el ENV.
                    $infcom =   self::CURLCall(env('API_SCORE_INFORME_COMERCIAL'), $params);

                    if (!empty($infcom)) {
                        $inf = json_decode($infcom);
                        if (isset($inf->score) and $inf->score > 0) {
                            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_comercial', null, null, null, $id, null, round($inf->score, 1)), 'selectOne');
                            return (round($inf->score, 1));
                        }
                    }
                }
            }
        }
        return false;
    }


    public static function actualizarMonitoreo($id=null)
    {
        if ($id > 0) {
            $fecha = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ultima_novedad_contraparte', null, null, null, $id), 'selectOne');
            return (!empty($fecha) ? $fecha : false);

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $calcula_ultima_novedad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'ULTIMA_NOVEDAD'), 'selectOne');
                if (!empty($calcula_ultima_novedad)) {
                    $fecha = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ultima_novedad_contraparte', null, null, null, $id), 'selectOne');
                    return (!empty($fecha) ? $fecha : false);
                }
            }*/
        }
        return false;
    }


    public static function actualizarScoreDocumentos($id=null)
    {
        if ($id > 0) {
            $docs = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_documentos', null, null, null, $id), 'selectOne');
            return (!empty($docs) ? round($docs->score, 1) : false);

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $calcula_score_documentos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_DOC'), 'selectOne');
                if (!empty($calcula_score_documentos)) {
                    $docs = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_documentos', null, null, null, $id), 'selectOne');
                    return (!empty($docs) ? round($docs->score,1) : false);
                }
            }*/
        }
        return false;
    }

    public static function actualizarCumplimientoDocumentos($id=null)
    {
        if ($id > 0) {
            $cumpl = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('cumplimiento_documentos', null, null, null, $id), 'selectOne');
            return (!empty($cumpl) ? round($cumpl->score, 1) : false);

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $calcula_cumplimiento_documentos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'CUMPL_DOC'), 'selectOne');
                if (!empty($calcula_cumplimiento_documentos)) {
                    $cumpl = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('cumplimiento_documentos', null, null, null, $id), 'selectOne');
                    return (!empty($cumpl) ? round($cumpl->score,1) : false);
                }
            }*/
        }
        return false;
    }

    public static function actualizarScoreFinal($id=null)
    {
        if ($id > 0) {
            $sf = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_final_contraparte', null, null, null, $id), 'selectOne');
            return (!empty($sf) ? round($sf->score, 1) : false);


            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $sf = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_final_contraparte', null, null, null, $id), 'selectOne');
                return (!empty($sf) ? round($sf->score,1) : false);
            }*/
        }
        return false;
    }

    public static function actualizarSubcontratistas($id=null)
    {
        if ($id > 0) {
            $cs = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('cantidad_subcontratistas', null, null, null, $id), 'selectOne');
            return (!empty($cs) ? $cs->cantidad : false);

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $cs = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('cantidad_subcontratistas', null, null, null, $id), 'selectOne');
                return (!empty($cs) ? $cs->cantidad : false);
            }*/
        }
        return false;
    }

    /* estas funciones sólo son válidas si el ID de contraparte es un subcontratista */
    public static function actualizarControlEtico($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('control_etico', null, null, null, $id), 'selectOne');
        }
        return false;
    }
    public static function actualizarControlCalidad($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('control_calidad', null, null, null, $id), 'selectOne');
        }
        return false;
    }
    public static function actualizarControlComercial($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('control_comercial', null, null, null, $id), 'selectOne');
        }
        return false;
    }
    public static function actualizarHomologacionSubcontratista($id=null)
    {
        if ($id > 0) {
            $hmlg = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('homologacion_subcontratista', null, null, null, $id), 'selectOne');

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                if ($qcontrap->subcontratista > 0) {
                    $hmlg = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('homologacion_subcontratista', null, null, null, $id), 'selectOne');
                }
            }*/
        }
        return false;
    }

    public static function actualizarDossierDemo($id=null)
    {
        return false;
    }


    /* Indicador de Fidecheck */
    public static function actualizarFidecheck($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('fidecheck', null, null, null, $id), 'selectOne');
        }
        return false;
    }

    /* Alertas BCRA - Situación bancaria y cheques rechazados */
    public static function actualizarAlertasBCRA($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('alertas_cendeu', null, null, null, $id), 'selectOne');
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('alertas_cheques', null, null, null, $id), 'selectOne');
        }
    }

    public static function actualizarDependenciaEconomica($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('dependencia_economica_calc', null, null, null, $id), 'selectOne');
        }
        return false;
    }

    public static function actualizarRentabilidadOperativa($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('dias_deuda_ventas', null, null, null, $id), 'selectOne');
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('rentabilidad_operativa_lc', null, null, null, $id), 'selectOne');
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('rentabilidad_operativa_lc_fecha', null, null, null, $id), 'selectOne');
        }
        return false;
    }



    /*** FIN FUNCIONES PARA CALCULOS DE INDICADORES ***/


    /** Para llamados por http de actualización de score de balance y valoración de balance (por CUIT) **/
    public static function callActualizarScoreBalance($cuit=null)
    {
        $cuit = (null == $cuit) ? Request::input('cuit') : $cuit;
        $c = 0;
        if (null != $cuit) {
            $contrapartes = DB::select("SELECT LN_contrapartes.contraparte
                            FROM LN_contrapartes INNER JOIN padrones
                            ON LN_contrapartes.id_padron = padrones.id_padron
                            WHERE padrones.identificacion = '" . $cuit . "'");

            $c = sizeof($contrapartes);

            foreach ($contrapartes as $thiscontr) {
                $tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $thiscontr->contraparte);

                /* Cálculo de Scores */
                if ($tiene_balance->balance > 0) {
                    $score_balance = self::actualizarScoreBalance($thiscontr->contraparte);
                    self::actualizarScoreFinal($thiscontr->contraparte);
                }
                $ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',null,$thiscontr->contraparte,null), 'selectOne');
            }
        }
        return (json_encode(['result' => true, 'CUIT' => $cuit, 'CONTRAPARTES' => $c]));
    }



    public static function callActualizarValoracionBalance($cuit=null)
    {
        if (null != $cuit) {
        }
    }








    public static function ledContrapartesBatch()
    {
        /*$cliente = Session::get('usuario')->cliente['client_id'];*/

        /* Cliente patagonia / usuario patagonia*/
        $cliente = 7333225;
        $user_id = 449870566;


        $lista = DB::select("select ln_contrapartes.* from ln_contrapartes where cliente = " . $cliente . " AND activo = 1");

        $aa = 0;

        if ($aa == 1) {
            foreach ($lista as $key => $thiscontr) {
                $gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $thiscontr->contraparte, null, null, 1, null));

                $clave = Misc::generateRandomString(6);
                $f = date('Y-m-d');
                

                /* Antes de actualizar el legajo por primera vez pongo a la contraparte en estado de carga inicial */
                $temp = DB::selectOne("update LN_contrapartes set carga_inicial = 1, limite_carga_inicial = NULL," .
                                                    "clave = '" . $clave . "', clave_temporal = 1, clave_cambio = NULL, fecha_ultimo_cierre = NULL, periodicidad_ejercicio = NULL, " .
                                                    "clave_expira = DATETIMEFROMPARTS( year(dateadd(day,15,getdate())), month(dateadd(day,15,getdate())), day(dateadd(day,15,getdate())),23,59,0,0)" .
                                                    "WHERE contraparte = " . $thiscontr->contraparte);

                /* Generación de los documentos, todos con la tolerancia de carga inicial */
                $temp = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($thiscontr->contraparte, $gest->gestion, $user_id));

                $dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $thiscontr->contraparte, null, null, null, null, null, null, null, null, null, null, null, null, $user_id));
                

                /* Evalúo si la contraparte tiene asociado el producto balances */
                $tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $thiscontr->contraparte);

                /* Cálculo de Scores */
                if ($tiene_balance->balance > 0) {
                    $score_balance = self::actualizarScoreBalance($thiscontr->contraparte);
                    $score_informe = self::actualizarScoreComercialSinBalance($thiscontr->contraparte);
                } else {
                    $score_informe = self::actualizarScoreComercialConBalance($thiscontr->contraparte);
                }
                self::actualizarScoreDocumentos($thiscontr->contraparte);
                self::actualizarCumplimientoDocumentos($thiscontr->contraparte);
                self::actualizarScoreFinal($thiscontr->contraparte);
                /* Fin cálculo de Scores */


                /* send mail */
                $content = array('nombre_cliente' => $dataprov->nombre_cliente,
                                            'nombre_persona' => $dataprov->nombre_persona,
                                            'abreviatura' => $dataprov->abreviatura,
                                            'numero' => $dataprov->numero,
                                            'nombre_contacto' => $dataprov->nombre_contacto,
                                            'email_contacto' => $dataprov->email_contacto,
                                            'country_code' => $dataprov->country_code,
                                            'country_name' => $dataprov->country_name,
                                            'clave' => $clave,
                                            'clave_expira' => $dataprov->clave_expira,
                                            'url' => env('LED_WEB_PROVEEDOR_URL') );


                $from = 'servicio@fidelitas.com.ar';
                $to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : trim($dataprov->email_contacto);
                $bcc = (env('LED_TEST_MODE') == true) ? null : 'soporteled@fidelitas.com.ar';
                $replyto = 'soporteled@fidelitas.com.ar';
                /*Misc::enviarMailLED('/led/led_contrapartes_email' , $from, $to, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Alta de contrapartes");*/
            }
        } else {
            $from = 'servicio@fidelitas.com.ar';
            $to = env('LED_TEST_EMAIL_ADDR');
            $bcc = 'soporteled@fidelitas.com.ar';
            $replyto = 'soporteled@fidelitas.com.ar';
            $content = $lista;
            Misc::enviarMailLED('/led/mail_prueba', $from, $to, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Prueba");
        }

        return redirect('/led/led-contrapartes');
    }


    public static function obtenerDataGrafico(){
      /*
      GRAFICO IC

        0 => {#903 ▼
          +"rango": "R1"
          +"etiqueta": "81-100"
          +"color": "63b68c"
          +"total": "315"
        }
        
        LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
        LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
        LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
        LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
        LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
      */
        $label           = Request::input('label');
        $valor_indicador = Request::input('value');
        $valor_min       = Request::input('min');
        $valor_max       = Request::input('max');
        $nombre_grafico  = Request::input('nombre_grafico');
        $cliente         = Session::get('usuario')->cliente['client_id'];
        $clave_indicador = '';
        $all             = Request::input();

        /*
          @p_valor_indicador                          int=NULL,
          @p_valor_min                                int=NULL,
          @p_valor_max 
        */
        switch ($nombre_grafico) {
          //GRAFICO INFORME COMERCIAL
          case 'grafico_ic':
            $clave_indicador = 'SCORE_IC';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');     
            break;
          //GRAFICO FIDECHECK  
          case 'grafico_pep':
            $clave_indicador = 'FIDECHECK';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico_fidecheck', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');     
            break;
          //GRAFICO SCORE FINAL  
          case 'grafico_sf':
            $clave_indicador = 'SCORE_FINAL';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');     
            break;
          //GRAFICO SCORE BALANCE  
          case 'grafico_sb':
            $clave_indicador = 'SCORE_BAL';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');     
            break;
          //GRAFICO SCORE DOCUMENTOS  
          case 'grafico_scoreDoc':
            /*
            'LN_contraparte_indicadores.valor_numerico' : para el cliente '2046807993'.
              NO TRAE RESULTADOS PORQUE LOS REGISTROS NO TIENEN UN VALOR NUMERICO Y NO PUEDE BUSCAR CON EL PARAMETRO DE "RANGO($label)"   
            */
            $clave_indicador = 'SCORE_DOC';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');
            break;        
          
          
        }
            
        return $res;


    }




//-----------------------------------------------------------
// Excepciones Status Final
//-----------------------------------------------------------
	public static function ledExcepcionesFinal() {
	$id = Request::input('contraparte');
	
	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null));
	$exc_activa = SQLConnection::backendStoreProcedure('LN_excepciones_final_', array('activa', $id), 'selectOne');
	$excepciones = SQLConnection::backendStoreProcedure('LN_excepciones_final_', array('search', $id), 'select');
	$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';

	return view('/led/led_excepciones_final')->with(compact(['qcontrap', 'exc_activa', 'excepciones','contratista_subcontratista']));
  }


	public static function ledExcepcionesFinalIngreso()
	{
		$id = Request::input('contraparte');
		$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		return view('/led/led_excepciones_final_ingreso')->with(compact(['qcontrap','contratista_subcontratista']));
	}


  public static function ledExcepcionesFinalInsert() {
	$id =					   Request::input('contraparte');
	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
	$texto_excepcion =			('' != Request::input('texto_excepcion') ) ? Request::input('texto_excepcion') : null;
	$ingresar_vigencia  =			 !empty(Request::input('ingresar_vigencia')) ? 1 : 0;
	$vigencia =				 ('' != Request::input('vigencia') ) ? Request::input('vigencia') : null;
	$tipo_excepcion =			 Request::input('tipo_excepcion');
	$fecha_vigencia = null;
	if ($ingresar_vigencia > 0 AND $vigencia != null) {
	  $fecha_vigencia = date_create_from_format('!d/m/Y', $vigencia);
	}
	$exc = SQLConnection::backendStoreProcedure('LN_excepciones_final_', array('nueva', $id, $fecha_vigencia, $texto_excepcion, Session::get('usuario')->user_id, NULL, $tipo_excepcion), 'selectOne');

	//$ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null,$id,null), 'selectOne');
	
	self::actualizarExcepcionFinal($id);
	
  
	// Mails 

	$id = Request::input('contraparte');
    $usuarios_mail = SQLConnection::backendStoreProcedure('SAAS_Usuarios_contraparte',array($id));
	/*
	$to = []; 
	foreach ($usuarios_mail as $i => $usu) {
		$to[] = $usu->email;
	}
	$to[] = 'dcl.argentina@coface.com';
	*/
	// 24/11/2022
	// Separo distintos arrays por cada contrato, para que los mails salgan separados
    // En un mismo mail todos los usuarios que sean de un mismo contrato, en mail separado los de otro contrato 
  	foreach ($usuarios_mail as $j => $contratos) {
 			$datos[$contratos->saas_contrato][] = $contratos;
 	}
	foreach ($datos as $contrato => $usuarios) {
	    $to = []; 
		foreach ($usuarios as $i => $usu) {
			$to[] = $usu->email;
		}
		$to[] = 'dcl.argentina@coface.com';

		$content = array('cuit_consultado'=> $qcontrap->identificacion,
											'fecha_cambio'   => $exc->fecha_cambio,
											'fecha_consulta' => $exc->fecha_consulta
											);
		//$from = 'servicio@fidelitas.com.ar';
		//$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : trim($dataprov->email_contacto);
		//$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
		//$replyto = 'soporteled@fidelitas.com.ar';
		$from    = 'no-reply@fidelitas.com.ar';
		$bcc = 'soporteled@fidelitas.com.ar';
		$replyto = '';

		$asunto = 'DCL - Ref. interna - CUIT ' . $qcontrap->identificacion; 
				if ($tipo_excepcion == 'V')
		{
			// mail de aceptacion 
			Misc::enviarMailLED('/led/led_coface_aceptacion_email' , $from, $to, $bcc, $replyto, $content, $asunto);
		}
		else 
		{
			// mail de rechazo
			  Misc::enviarMailLED('/led/led_coface_rechazo_email' , $from, $to, $bcc, $replyto, $content, $asunto);
		}
		
	}

	

	//return view('/led/led_excepcion_return')->with(compact(['qcontrap'])); 
	
  }

 public static function mailCambioAprobacion() {
 	$contraparte  = Request::input('contraparte');
 	$new = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_',array('indicadores_nuevos',NULL,$contraparte));
	$cambio_final = 'N'; 
	$fecha_desde = ''; 
	$fecha_cambio = ''; 
	foreach ($new as $k => $cambio) {
				if ($cambio->estado == 'ok' && $cambio->accion == 'APROBACIONFINAL' && 
					  $cambio->valor_texto_old == 'V' && $cambio->valor_texto_new == 'R')
				{
					$cambio_final = 'S'; 
					$fecha_desde  = $cambio->fecha_old;  
					$fecha_cambio = $cambio->fecha_new; 
					$cliente 	    = $cambio->cliente; 
					$cuit         = $cambio->cuit; 
				}
	}


	$motivos = ''; 
	if ($cambio_final == 'S')
	{
		foreach ($new as $k => $cambio) {
			if ($cambio->estado == 'ok' && $cambio->accion !== 'APROBACIONFINAL' && substr($cambio->accion,0,10) == 'APROBACION' &&
					$cambio->valor_texto_old == 'V' && $cambio->valor_texto_new == 'R' && $cambio->accion !== 'APROBACIONBLACKLIST')
				{
					$motivo = $cambio->accion; 
					$motivo = str_replace('APROBACION', 'RECHAZO SECCION ', $motivo); 
					if ($motivos !== '') { $motivos .= "; ";  }
					$motivos .= strtoupper($motivo);
				}
		}
	 	$usuarios_mail = SQLConnection::backendStoreProcedure('SAAS_Usuarios_contraparte',array($contraparte));
	 	// 24/11/2022
	 	/*
	    $to = []; 
		foreach ($usuarios_mail as $i => $usu) {
			$to[] = $usu->email;
		}
		$to[] = 'dcl.argentina@coface.com';
		*/
		// Separo distintos arrays por cada contrato, para que los mails salgan separados
	    // En un mismo mail todos los usuarios que sean de un mismo contrato, en mail separado los de otro contrato 

		foreach ($usuarios_mail as $j => $contratos) {
		 	$datos[$contratos->saas_contrato][] = $contratos;
	 	}
		foreach ($datos as $contrato => $usuarios) {
		    $to = []; 
			foreach ($usuarios as $i => $usu) {
				$to[] = $usu->email;
			}
			$to[] = 'dcl.argentina@coface.com';

			/*
			$to = []; 
			$to[] = 'maria.soria@fidelitas.com.ar'; 
			$to[] = 'marita.soria@gmail.com'; 
			*/
			$content = array('cuit_consultado'=> $cuit,
												'fecha_desde'   => $fecha_desde,
												'fecha_cambio' => $fecha_cambio,
												'motivos' => $motivos
												);
			$from    = 'no-reply@fidelitas.com.ar';
			$bcc = 'soporteled@fidelitas.com.ar';
			$replyto = '';
			$asunto = 'DCL - Ref. interna - CUIT ' . $cuit;
			var_dump($asunto); 
			Misc::enviarMailLED('/led/led_cambio_estado_email' , $from, $to, $bcc, $replyto, $content, $asunto);
		}
	  	return 'email Ok'; 
	}
  return 'No hay email para mandar'; 

 } 


 public static function mailCambioSemaforoANTERIOR() {
 	$contraparte  = Request::input('contraparte');

 	$new = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_',array('indicadores_nuevos',NULL,$contraparte));
 	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
	$renglones_mail = []; 
	$renglon = 0; 
	foreach ($new as $k => $cambio) {
		if ($cambio->estado == 'ok' && $cambio->accion == 'ARCOR_FINAL' && 
			  $cambio->valor_texto_old !== $cambio->valor_texto_new)
		{
			if ($cambio->valor_texto_new !== NULL) { 
				$cambio->texto = 'Cambio SCORE FINAL';
				$renglones_mail[$renglon] = $cambio->texto; 
				if ($cambio->valor_texto_old == 'R') { $renglones_mail[$renglon]  .= ' de ROJO'; }
				if ($cambio->valor_texto_old == 'A') { $renglones_mail[$renglon]  .= ' de AMARILLO'; }
				if ($cambio->valor_texto_old == 'V') { $renglones_mail[$renglon]  .= ' de VERDE'; }
				if ($cambio->valor_texto_new == 'R') { $renglones_mail[$renglon]  .= ' a ROJO'; }
				if ($cambio->valor_texto_new == 'A') { $renglones_mail[$renglon]  .= ' a AMARILLO'; }
				if ($cambio->valor_texto_new == 'V') { $renglones_mail[$renglon]  .= ' a VERDE'; }
			}
			$renglon += 1; 
		}
	}
	foreach ($new as $k => $cambio) {
		if ($cambio->estado == 'ok' && substr($cambio->accion,0,6) == 'ARCOR_' && $cambio->accion !== 'ARCOR_FINAL' && 
			  $cambio->valor_texto_old !== $cambio->valor_texto_new)
		{
			if ($cambio->valor_texto_new !== NULL) { 
				$renglones_mail[$renglon] = $cambio->texto; 
				if ($cambio->valor_texto_old == 'R') { $renglones_mail[$renglon]  .= ' de ROJO'; }
				if ($cambio->valor_texto_old == 'A') { $renglones_mail[$renglon]  .= ' de AMARILLO'; }
				if ($cambio->valor_texto_old == 'V') { $renglones_mail[$renglon]  .= ' de VERDE'; }
				if ($cambio->valor_texto_new == 'R') { $renglones_mail[$renglon]  .= ' a ROJO'; }
				if ($cambio->valor_texto_new == 'A') { $renglones_mail[$renglon]  .= ' a AMARILLO'; }
				if ($cambio->valor_texto_new == 'V') { $renglones_mail[$renglon]  .= ' a VERDE'; }
			}
			$renglon += 1; 
		}
	}
	
	$texto_mail = ''; 
	foreach ($renglones_mail as $key => $renglon) {
 		$texto_mail .= $renglon . '<br \><br \>';
 	}
 	
	$to = []; 
	if ($qcontrap->cliente == '1562620024') // Sanofi, manda el mail a Jorge El Idd
	{
		$to[] = 'jorge.elidd@fidelitas.com.ar'; 
	}
	else 
	{
		$to[] = $qcontrap->email_ejecutivo_cuenta ?? 'soporteled@fidelitas.com.ar'; 
	} 

	//$to[] = 'marita.soria@gmail.com'; 
	$from = 'no-reply@fidelitas.com.ar';
	$bcc = 'soporteled@fidelitas.com.ar';
	$replyto = '';

	$cli = SQLConnection::backendStoreProcedure('LED_Clientes',array('select', $qcontrap->cliente, null, null, null));
	$nombre_cliente = isset($cli[0]) ? $cli[0]->nombre_cliente : 'Cliente';

	$asunto = 'FIDELITAS - Cambio Score: ' . $qcontrap->nombre_persona . ' - ' . $qcontrap->identificacion;
	if ($qcontrap->email_ejecutivo_cuenta == null || $qcontrap->email_ejecutivo_cuenta == '') 
	{
		$asunto .= ' - ESTA CONTRAPARTE NO TIENE CARGADO LA DIRECCION DE EMAIL DEL EJECUTIVO DE CUENTA';
	}
		
	$content = array('nombre_cliente'=> $nombre_cliente, 
				     'cuit_consultado'=> $qcontrap->identificacion,
					 'nombre_consultado'  =>  $qcontrap->nombre_persona,
					 'texto' => $texto_mail
					 );
	Misc::enviarMailLED('/led/led_cambio_semaforo_email' , $from, $to, $bcc, $replyto, $content, $asunto);
	return 'email Ok'; 
	
 } 




public static function mailCambioSemaforo() {
 	$contraparte  = Request::input('contraparte');

 	$new = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_',array('indicadores_nuevos',NULL,$contraparte));
 	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
	$renglones_mail = []; 
	$renglon = 0; 
	foreach ($new as $k => $cambio) {
		if ($cambio->estado == 'ok' && $cambio->accion == 'ARCOR_FINAL' && 
			  $cambio->valor_texto_old !== $cambio->valor_texto_new)
		{
			if ($cambio->valor_texto_new !== NULL) { 
				$cambio->texto = 'Cambio SCORE FINAL';
				$renglones_mail[$renglon] = $cambio->texto; 
				if ($cambio->valor_texto_old == 'R') { $renglones_mail[$renglon]  .= ' de ROJO'; }
				if ($cambio->valor_texto_old == 'A') { $renglones_mail[$renglon]  .= ' de AMARILLO'; }
				if ($cambio->valor_texto_old == 'V') { $renglones_mail[$renglon]  .= ' de VERDE'; }
				if ($cambio->valor_texto_new == 'R') { $renglones_mail[$renglon]  .= ' a ROJO'; }
				if ($cambio->valor_texto_new == 'A') { $renglones_mail[$renglon]  .= ' a AMARILLO'; }
				if ($cambio->valor_texto_new == 'V') { $renglones_mail[$renglon]  .= ' a VERDE'; }
			}
			$renglon += 1; 
		}
	}
	foreach ($new as $k => $cambio) {
		if ($cambio->estado == 'ok' && substr($cambio->accion,0,6) == 'ARCOR_' && $cambio->accion !== 'ARCOR_FINAL' && 
			  $cambio->valor_texto_old !== $cambio->valor_texto_new)
		{
			if ($cambio->valor_texto_new !== NULL) { 
				$renglones_mail[$renglon] = $cambio->texto; 
				if ($cambio->valor_texto_old == 'R') { $renglones_mail[$renglon]  .= ' de ROJO'; }
				if ($cambio->valor_texto_old == 'A') { $renglones_mail[$renglon]  .= ' de AMARILLO'; }
				if ($cambio->valor_texto_old == 'V') { $renglones_mail[$renglon]  .= ' de VERDE'; }
				if ($cambio->valor_texto_new == 'R') { $renglones_mail[$renglon]  .= ' a ROJO'; }
				if ($cambio->valor_texto_new == 'A') { $renglones_mail[$renglon]  .= ' a AMARILLO'; }
				if ($cambio->valor_texto_new == 'V') { $renglones_mail[$renglon]  .= ' a VERDE'; }
			}
			$renglon += 1; 
		}
	}
	
	$texto_mail = ''; 
	foreach ($renglones_mail as $key => $renglon) {
 		$texto_mail .= $renglon . '<br \><br \>';
 	}


 	// 04/10/2023: Arcor va guardando las novedades para mandar los mails una vez por semana... (usará la ruta que ejecute la funcion mailCambioSemaforoSemanal)
	// Al resto se manda el mail por cada novedad diaria como siempre
	if ($qcontrap->cliente == 861672084)
	{
 		$insertar = SQLConnection::backendStoreProcedure('LN_cambio_semaforo_email_',array('insert',$qcontrap->cliente,NULL,NULL,$contraparte,$texto_mail));
	}
	else 
	{
		$to = []; 
		if ($qcontrap->cliente == '1562620024') // Sanofi, manda el mail a Jorge El Idd
		{
			$to[] = 'jorge.elidd@fidelitas.com.ar'; 
		}
		else 
		{
			$to[] = $qcontrap->email_ejecutivo_cuenta ?? 'soporteled@fidelitas.com.ar'; 
		}

		// a quien va si no tenemos la direccion de mail cargada en el campo email_ejecutivo_cuenta ??
		//$to[] = 'marita.soria@gmail.com'; 
		$from = 'no-reply@fidelitas.com.ar';
		$bcc = 'soporteled@fidelitas.com.ar';
		$replyto = '';
		
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes',array('select', $qcontrap->cliente, null, null, null));
		$nombre_cliente = isset($cli[0]) ? $cli[0]->nombre_cliente : 'Cliente';

		$asunto = 'FIDELITAS - Cambio Score: ' . $qcontrap->nombre_persona . ' - ' . $qcontrap->identificacion;
		if ($qcontrap->email_ejecutivo_cuenta == null || $qcontrap->email_ejecutivo_cuenta == '') 
		{
			$asunto .= ' - ESTA CONTRAPARTE NO TIENE CARGADO LA DIRECCION DE EMAIL DEL EJECUTIVO DE CUENTA';
		}


		$content = array('nombre_cliente'=> $nombre_cliente, 
					     'cuit_consultado'=> $qcontrap->identificacion,
						 'nombre_consultado'  =>  $qcontrap->nombre_persona,
						 'texto' => $texto_mail
						 );
		Misc::enviarMailLED('/led/led_cambio_semaforo_email' , $from, $to, $bcc, $replyto, $content, $asunto);
	}
	return 'email Ok'; 

 } 



 public static function mailCambioSemaforoSemanal() {
 	$cliente  = Request::input('cliente') ?? 861672084;
 	$desde = Request::input('desde') ?? null;
 	$hasta = Request::input('hasta') ?? null;
 	$hoy = date("Y-m-d");
 	if ($desde == null)
	{
	 	$fecha     = strtotime ( "-7 day" , strtotime ( $hoy ) ) ;
		$desde     = date ( "Y-m-d" , $fecha );
	}
	if ($hasta == null)
	{
		$fecha     = strtotime ( "-1 day" , strtotime ( $hoy ) ) ;
		$hasta     = date ( "Y-m-d" , $fecha );
	}
	$date=date_create($desde);
	$desde_dmy =  date_format($date, 'd/m/Y');
	$date=date_create($hasta);
	$hasta_dmy =  date_format($date, 'd/m/Y');
	/*
	var_dump($cliente);
	var_dump($desde);
	var_dump($desde_dmy);
	var_dump($hasta);
	var_dump($hasta_dmy);
	die();
	*/
 	$datos =  SQLConnection::backendStoreProcedure('LN_cambio_semaforo_email_',array('select',$cliente,$desde,$hasta));
	$renglones_mail = []; 
	$renglon = 0; 
	$mails = []; 
	foreach ($datos as $k => $dato) {
		$mails[$dato->email][] = $dato; 
	}
	foreach ($mails as $dirmail => $cambios) {
		$renglones_mail = []; 
		$renglon = 0; 
		foreach ($cambios as $i => $cambio) {
			$renglones_mail[$renglon] = $cambio->fecha_dmy . ' <b> ' . $cambio->nombre_persona . ' - ' . $cambio->identificacion . '</b><br \>' . str_replace('<br \><br \>','<br \>',$cambio->texto); 
			$renglon += 1; 
		}
		$texto_mail = 'Le informamos los cambios de scores del ' . $desde_dmy . ' al ' . $hasta_dmy . '<br \><br \>';
		foreach ($renglones_mail as $key => $renglon) {
 			$texto_mail .= $renglon . '<br \><br \>';
 		}
		$to = []; 
		$to[] = $dirmail ?? 'soporteled@fidelitas.com.ar'; 
		//$to[] = 'marita.soria@gmail.com'; 
		$from = 'no-reply@fidelitas.com.ar';
		$bcc = 'soporteled@fidelitas.com.ar';
		$replyto = '';
		
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes',array('select', $cliente, null, null, null));
		$nombre_cliente = isset($cli[0]) ? $cli[0]->nombre_cliente : 'Cliente';

		$asunto = 'FIDELITAS - Cambios Score del ' . $desde_dmy . ' al ' . $hasta_dmy; 
		
		$content = array('nombre_cliente'=> $nombre_cliente, 
						 'texto' => $texto_mail
						 );

		Misc::enviarMailLED('/led/led_cambio_semaforo_email_semanal' , $from, $to, $bcc, $replyto, $content, $asunto);
	}
	return 'email Ok'; 

 }







	public static function ledExcepcionesFinalDesactivar() { 
	$id = Request::input('contraparte');
	$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';
	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
	$excepcion = SQLConnection::backendStoreProcedure('LN_excepciones_final_', array('activa', $id), 'selectOne');
	return view('/led/led_excepciones_final_desactivar')->with(compact(['qcontrap', 'excepcion','contratista_subcontratista']));

  }


	public static function ledExcepcionesFinalUpdate()
	{
		$id =					   Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$texto_excepcion =			('' != Request::input('texto_excepcion')) ? Request::input('texto_excepcion') : null;
		$exc = SQLConnection::backendStoreProcedure('LN_excepciones_final_', array('desactivar', $id, null, $texto_excepcion, Session::get('usuario')->user_id), 'selectOne');
		//$ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null,$id,null), 'selectOne');
		self::actualizarExcepcionFinal($id);

		//return view('/led/led_excepcion_return')->with(compact(['qcontrap']));
	}

	public static function ledExcepcionesFinalEditar()
	{
		$id = Request::input('contraparte');
		$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$excepcion = SQLConnection::backendStoreProcedure('LN_excepciones_final_', array('activa', $id), 'selectOne');

		return view('/led/led_excepciones_final_editar')->with(compact(['qcontrap','excepcion','contratista_subcontratista']));
	}

	public static function ledExcepcionesFinalActualizar()
	{
		$id = Request::input('contraparte');
		$exc = Request::input('excepcion');
		
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$texto_excepcion =			('' != Request::input('texto_excepcion')) ? Request::input('texto_excepcion') : null;
		$ingresar_vigencia  =			 !empty(Request::input('ingresar_vigencia')) ? 1 : 0;
		$vigencia =				 ('' != Request::input('vigencia')) ? Request::input('vigencia') : null;
		$tipo_excepcion =			 Request::input('tipo_excepcion');

		$fecha_vigencia = null;
		if ($ingresar_vigencia > 0 and $vigencia != null) {
			$fecha_vigencia = date_create_from_format('!d/m/Y', $vigencia);
		}

		$tmp = SQLConnection::backendStoreProcedure('LN_excepciones_final_', array('actualizar', $id, $fecha_vigencia, $texto_excepcion, Session::get('usuario')->user_id, $exc, $tipo_excepcion), 'selectOne');
		//$ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null,$id,null), 'selectOne');
		self::actualizarExcepcionFinal($id);

		//return view('/led/led_excepcion_return')->with(compact(['qcontrap']));
	}

	public static function actualizarExcepcionFinal($id=null)
    {
      if ($id > 0) {
          $hmlg = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('AprobacionFinal', null, null, null, $id), 'selectOne');
      }
      return false;
    }

	public static function ledContrapartesPrensa() {
		$contraparte = Request::input('contraparte');
		$prensa = SQLConnection::backendStoreProcedure('LN_contraparte_prensa', array('backend_obtener_prensa',$contraparte,Session::get('usuario')->user_id), 'selectOne');
		$prensa->texto_prensa = str_replace('"', "'", $prensa->texto_prensa); 
		$valoracion = SQLConnection::backendStoreProcedure('LN_contraparte_prensa', array('backend_obtener_valoracion',$contraparte), 'selectOne');
		return view('/led/led_contrapartes_prensa')->with(compact('prensa', 'valoracion'));
	}
//-----------------------------------------------------------


	public static function ledPdfHistorial()
	{
		Session::put('html', 1);
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$cuit_consulta = $qcontrap->numero; 
		$nombre_consulta = $qcontrap->nombre_persona;
    $historial   = json_decode(self::ledHistorialInfo($id,1));


    $titulo_pdf  = 'Historial de Consultas ' . $cuit_consulta . ' - ' . $nombre_consulta;
    /*$html  =   '<header>
  						  <link href="www.fidelitas.com.ar/css/fontawesome_5_9_all.min.css" rel="stylesheet">
  							<link href="www.fidelitas.com.ar/css/font-awesome.min.css" rel="stylesheet">
  							</header>';*/
  	$html  =   '<header>'.
			   '<link href="' . env('URL_BASE') . '/css/fontawesome_5_9_all.min.css" rel="stylesheet">'.
			   '<link href="' . env('URL_BASE') . '/css/font-awesome.min.css" rel="stylesheet">'.
			   '</header>';

  	$html .= '<body>'; 
    $html .= '<div align="center" class="col-md-12 background-fidelitas" style="margin-top:30px;padding:5px; ">
						  '.$titulo_pdf.'
						  </div>';
    $html .=  '<br><br><div class="container">';
    $html .=  '<table width="95%" border="1" align="center" cellspacing="0" cellpadding="10" ' . 
              'style="border-color:#cccccc;border-width:1px;border-style:solid;">';
  	$html .=  '<tr><td align="center">Estado</td>' . 
					  	'<td align="center">Fecha de consulta</td>' . 
					  	'<td align="center">Contrato N°</td>' . 
					  	'<td align="center">CUIT</td>' . 
					  	'<td align="center">Razón Social</td>' . 
					  	'<td align="center">Usuario</td>' . 
					  	'<td align="center">Formales</td>' . 
					  	'<td align="center">Fiscales</td>' . 
					  	'<td align="center">Contables</td>' . 
					  	'<td align="center">Legales</td>' . 
					  	'<td align="center">Bancos</td>' . 
					  	'<td align="center">Cheques</td></tr>'; 

    foreach($historial as $key => $value){
					$fecha_consulta = date( "d/m/Y", strtotime($value->fecha_consulta)); 
					$html .= '<tr>';
					$html .= '<td align="center">' . $value->estado  					 	. '</td>'; 
					$html .= '<td align="center">' . $fecha_consulta 						. '</td>'; 
					$html .= '<td align="center">' . $value->numero_contrato 		. '</td>'; 
					$html .= '<td align="center">' . $value->identificacion 		. '</td>'; 
					$html .= '<td align="center">' . $value->razon_social 			. '</td>'; 
					$html .= '<td align="center">' . $value->nombre 						. '</td>'; 
					$html .= '<td align="center">' . $value->formales_estado 		. '</td>';
					$html .= '<td align="center">' . $value->fiscales_estado 		. '</td>';
					$html .= '<td align="center">' . $value->contables_estado 	. '</td>';
					$html .= '<td align="center">' . $value->legales_estado 		. '</td>';
					$html .= '<td align="center">' . $value->bancos_estado 			. '</td>'; 
					$html .= '<td align="center">' . $value->cheques_estado 		. '</td>'; 
					$html .= '</tr>';
    }
    $html .= '</table></div>';
    $html .= '</body>';
    $user_id = Session::get('usuario')->user_id;
    $nombre  = 'historial-' . $cuit_consulta . '-' . date('Y-m-d').'.html';
    if(!isset(Session::get('usuario')->cliente['client_id'])){
      return false;
    }

    $client_id      = Session::get('usuario')->cliente['client_id'];
    $file           = ENV('TEMP_PDF').'/'.$client_id.'/'.$nombre;
    $file_download  = ENV('HISTORICO_PDF').'/'.$client_id.'/'.str_replace('.html', '.pdf', $nombre);
    if(!is_dir(ENV('TEMP_PDF').'/'.$client_id)){
        mkdir(ENV('TEMP_PDF').'/'.$client_id, 0777,true);
    }
    if(!is_dir(ENV('HISTORICO_PDF').'/'.$client_id)){
        mkdir(ENV('HISTORICO_PDF').'/'.$client_id, 0777,true);
    }

    file_put_contents($file,utf8_decode($html));
    chmod($file, 0777);
    exec("/usr/local/bin/wkhtmltopdf -d 300 -L 10 -R 10 -T 10 -B 10 -O landscape --header-font-size 8 --header-right ' Pag. [page] de [toPage]'  --viewport-size 1920x1080 --zoom 1 ".ENV('TEMP_PDF').'/'.$client_id."/".$nombre." ".ENV('HISTORICO_PDF').'/'.$client_id."/".str_replace('.html', '.pdf', $nombre));

    Session::forget('html');
    return response()->download($file_download);

  } 
	public function ledPdf(){
		$contraparte = Request::input('contraparte');
		$identificacion = Request::input('identificacion');
		$html = '';
		$html .= view('exportar/headerPDF')->render();
		$html .= self::ledHome($contraparte)->render();
		$MainController = New MainController();
		$html .= $MainController->obtenerBrief($identificacion)->render();
		return $html;
		//$html = str_replace('https://www2.fidelitas.com.ar/','file://'.ENV("RUTA_CSS_PDF").'/public',$html);
		$html = str_replace(env('URL_BASE').'/','file://'.ENV("RUTA_CSS_PDF").'/public',$html);
		$html .= view('exportar/footerPDF')->render();
		return $html;
		//$respuesta = self::CURLCall('http://192.168.10.8/api/save-html','html='.urlencode($html),'POST');
		$respuesta = self::CURLCall(env('URL_INTERNA').'/api/save-html','html='.urlencode($html),'POST');
		//$pdf = self::CURLCall('http://192.168.10.8/api/export-pdf','filename='.$respuesta,'POST');
		$pdf = self::CURLCall(env('URL_INTERNA').'/api/export-pdf','filename='.$respuesta,'POST');
		header("Content-Disposition:attachment;filename=".$contraparte.date('Y-m-d h:i:s').".pdf");
		return $pdf;
	}


/* Reporte RSE para AMX */ 

	public function ledExcelRSE_contrapartes(){
		$cliente = Session::get('usuario')->cliente['client_id'];
		$nombre_documento = new stdClass(); 
		$nombre_documento = ''; 
		$contrapartes = SQLConnection::backendStoreProcedure('LN_excel_RSE_contrapartes', array($cliente), 'select');
		if (isset($contrapartes))
		{
			foreach ($contrapartes as $tit) {
				$nombre_documento = $tit->nombre_tipo_doc; 
				break; 
			}
		}
		$navtext = 'Reporte RSE';
		return view('/led/led_RSE_contrapartes')->with(compact(['contrapartes','nombre_documento','navtext']));
	}

	public function ledExcelRSE(){

		$cliente = Session::get('usuario')->cliente['client_id'];
		//$cliente = 5546348; 

		$ids = ""; 
		if(!empty(Request::input('contraparte'))) {
			foreach (Request::input('contraparte') as $k => $contraparte) {
				if ($ids == "") { $ids = $contraparte; }
				else { $ids .= ",".$contraparte; }
			}
		}
		else
		{
			return; 
		}

		$RSE = SQLConnection::backendStoreProcedure('LN_excel_RSE', array($cliente, $ids), 'select');
		$titulos = [];
		$contrapartes = []; 
		foreach ($RSE as $doc) {
						$titulos['pais'] = 'PAIS'; 
						$titulos['familia'] = 'FAMILIA'; 
						$titulos['nombre'] = 'RAZON SOCIAL';  
						$titulos['tax_id'] = 'IDENTIFICACION';  
						$titulos[$doc->campo_id] = $doc->etiqueta; 
		}

		foreach ($RSE as $doc) {
						$contrapartes[$doc->contraparte]['pais'] = $doc->pais; 
						$contrapartes[$doc->contraparte]['familia'] = $doc->familia; 
						$contrapartes[$doc->contraparte]['nombre'] = $doc->nombre; 
						$contrapartes[$doc->contraparte]['tax_id'] = $doc->tax_id; 
						$contrapartes[$doc->contraparte][$doc->campo_id] = $doc->resultado; 
		}

		$file = '<table border="1">';
		$file .= '<tr>';

		foreach ($titulos as $tit) {
				$file .= "<td>" . $tit . "</td>";
		}
		$file .= '</tr>'; 
    
		foreach($contrapartes as $key => $contraparte){
			$file .=  '<tr valign="top">';
			foreach($contraparte as $valor)
			{
				$file .= 	"<td>".$valor . "</td>" ; 
			}
			$file .=  '</tr>';
		}
		$file .= '</table>'; 
    	$fecha = date("Y-m-d");
    	header('Content-disposition: attachment; filename=Reporte_RSE_' . $fecha . '.xls');
		header('Content-type: application/vnd.ms-excel; charset=utf-8');
		$file = utf8_decode($file);
		echo $file;
		return; 
	}

public function ledBuscadorAuditoriaGenericaAnterior() {
	//header("Location: /led/buscador?url=/led/auditoria-generica");
	//self::buscadorPadronGenerico('/led/auditoria-generica');
	$titulo = 'CONSULTA AUDITORÍA'; 
	$url= '/led/auditoria-generica'; 
	return view('/buscador_padron_generico')->with(compact('url','titulo'));
}



public function ledBuscadorAuditoriaGenerica() {
	
	return view('/led/buscador_auditoria');
}



public function ledAuditoriaGenericaAnterior() {
	$cliente        = Session::get('usuario')->cliente['client_id'];
	$cuit           = Request::input('cuit');
	$nombre_persona = Request::input('rs');
	$titulo         = Request::input('titulo');
	$ctrletico      = SQLConnection::backendStoreProcedure('LN_control_etica_por_cuit', array($cliente, $cuit), 'select');
	$ctrlcalidad    = SQLConnection::backendStoreProcedure('LN_control_calidad_por_cuit', array($cliente, $cuit), 'select');
	$ctrlcomercial  = SQLConnection::backendStoreProcedure('LN_control_comercial_por_cuit', array($cuit), 'select');
	return view('/led/led_auditoria_generica')->with(compact(['titulo', 'cuit', 'nombre_persona','ctrletico', 'ctrlcalidad', 'ctrlcomercial']));
  }

 
public function ledAuditoriaGenerica() {
	$cliente        = Session::get('usuario')->cliente['client_id'];
	$cuit           = Request::input('cuit');
	//$nombre_persona = Request::input('rs');
	$nombre_persona = null; 
	$pais = Request::input('pais');
	$pais_nombre = ''; 
	if ($pais == 'AR') { $pais_nombre = 'ARGENTINA';}
	if ($pais == 'PY') { $pais_nombre = 'PARAGUAY';}
	if ($pais == 'UY') { $pais_nombre = 'URUGUAY';}
	$titulo         = Request::input('titulo');
	$nombre_persona = ''; 
	$ctrletico      = SQLConnection::backendStoreProcedure('LN_control_etica_por_cuit', array($cliente, $cuit, $pais), 'select');

	


	$ctrlcalidad    = SQLConnection::backendStoreProcedure('LN_control_calidad_por_cuit', array($cliente, $cuit, $pais), 'select');


	$ctrlcomercial  = SQLConnection::backendStoreProcedure('LN_control_comercial_por_cuit', array($cuit, $pais), 'select');
	$nombre_persona = SQLConnection::backendStoreProcedure('LN_NOMBRE_PERSONA', array($cuit, $pais), 'selectOne')->nombre_persona ?? '';

	return view('/led/led_auditoria_generica')->with(compact(['titulo', 'cuit', 'nombre_persona','ctrletico', 'ctrlcalidad', 'ctrlcomercial','pais_nombre']));
  }


/*
	public function ledObtenerFormales(){
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$cuit = $qcontrap->identificacion;
		$html = MainController::obtenerFormales(false, $cuit);
		var_dump($html); die(); 
		return $html; 
	}
	*/

	public static function ledPdfsHistoricos()
	{
		$id = Request::input('contraparte'); 
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $id, null, null, 1, null));
		$files = [];
		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		//---
		$cuit = $qcontrap->numero;
		$cliente = Session::get('usuario')->cliente['client_id'];
		//---
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
		  
	  	foreach ($gestiones as $ges)
	  	{

			//$docs1 = DB::select('EXEC dbo.LN_pdfs_ ?,?', array($id, $ges->gestion));
			//- SECCION DE PRUEBA
			$gestion = $gest->gestion;
			$docs1 = SQLConnection::backendStoreProcedure('LN_ic_historico_pdf_',array('LISTAR',$id));
			//- FIN DE PRUEBA
			$docs[$ges->desde] = $docs1; 
			$n = -1;
			foreach ($docs1 as $k => $doc) {
				$n++;
				//$file_path = env('PATH_DOCUMENTOS') . '/' . $doc->ruta;
				//$file_url  = env('RUTA_DOCUMENTOS') . '/' . $doc->ruta;
				$file_url = env('HISTORICO_PDF_URL').$cliente.'/'.$id.'/'.$doc->gestion.'/'.$cuit.'_'.$doc->id.'.pdf';
				$file_path = env('HISTORICO_PDF').'/'.$cliente.'/'.$id.'/'.$doc->gestion.'/'.$cuit.'_'.$doc->id.'.pdf';
				//echo(var_dump($_SERVER));die();
				$file_exists = file_exists($file_path);
				//$files[$ges->desde][$n]['path'] = $file_path;
				$files[$ges->desde][$n]['url']  = $file_url;
				$files[$ges->desde][$n]['exists'] = $file_exists;
			}
		}


		return view('/led/led_pdf_historicos')->with(compact(['qcontrap','docs', 'files', 'gestiones']));
	
	}



	public static function ledWordcheckAnterior()
	{
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$socios = SQLConnection::backendStoreProcedure('LN_check_', array('search', null, $id, null, 'S'), 'select');
		$relac = SQLConnection::backendStoreProcedure('LN_check_', array('search', null, $id, null, 'R'), 'select');
		$direct = SQLConnection::backendStoreProcedure('LN_check_', array('search', null, $id, null, 'D'), 'select');
		$propio = SQLConnection::backendStoreProcedure('LN_check_', array('search', null, $id, null, 'P'), 'selectOne');

		$campo = []; 
		$campo = self::indicadorEditables($qcontrap->contraparte,'383'); 

		foreach ($socios as $key => $value) {
			$socios[$key]->detalle = str_replace(chr(10), '<br>', $value->detalle);
			if (!empty($value->ruta))
			{
				$socios[$key]->ruta = env('RUTA_WCHECK') . '/' .$value->ruta; 
			}
			else
			{
				$socios[$key]->ruta = null; 
			}
		}

		foreach ($relac as $key => $value) {
			$relac[$key]->detalle  = str_replace(chr(10), '<br>', $value->detalle);
			if (!empty($value->ruta))
			{
				$relac[$key]->ruta = env('RUTA_WCHECK') . '/' . $value->ruta; 
			}
			else
			{
				$relac[$key]->ruta = null; 
			}

		}

		foreach ($direct as $key => $value) {
			$direct[$key]->detalle  = str_replace(chr(10), '<br>', $value->detalle);
			if (!empty($value->ruta))
			{
				$direct[$key]->ruta = env('RUTA_WCHECK') . '/' .  $value->ruta; 
			}
			else
			{
				$direct[$key]->ruta = null;
			}
		}

		if (!empty($propio))
		{
			if(isset($propio->detalle)){
				$propio->detalle=str_replace(chr(10), '<br>', $propio->detalle);
			}

			if (isset($propio->ruta) && !empty($propio->ruta))
			{
				$propio->ruta = env('RUTA_WCHECK') . '/' . $propio->ruta; 
			}
		}
		
		return view('/led/led_wordcheck')->with(compact(['qcontrap', 'socios', 'relac', 'direct','propio','campo']));

	}



	public static function ledWordcheck($id=null)
	{

  	  $hoy = new DateTime('today'); 
	  $hoy = $hoy->format('Y-m-d'); 
	  $hoy2 = new DateTime('today'); 
	  $hoy_dmy = $hoy2->format('d/m/Y'); 

		if(!$id){
			$id = Request::input('contraparte');
		}
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$campo383 = []; 
		$campo383 = self::indicadorEditables($qcontrap->contraparte,'383'); 

		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		$score_wc = [];
		$anticorrupcion = [];
		$ddr = [];
		$risk = [];
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
	  	foreach ($gestiones as $ges)
	  	{

		/*$score_wc[$ges->desde] = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'VRM_SCORE_Worldcheck', 
			NULL,
			null,
			null,
			null,
			null,
			1,
			null, 
			0,
			$ges->desde)
		    , 'selectOne');*/
		
		$score_wc[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2079,$ges->gestion),'select');
		$anticorrupcion[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2084,$ges->gestion),'select');
		$riska[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2085,$ges->gestion),'select');
		$ddr[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2086,$ges->gestion),'select');


		$indicador1 = self::indicadorEditables($qcontrap->contraparte,'383',$ges->gestion); 
		$indicador[$ges->desde] = $indicador1[0];

		$socios[$ges->desde] = SQLConnection::backendStoreProcedure('LN_check_', array('search', null, $id, null, 'S',null,null,null,null,null,null,null,null,$ges->gestion), 'select');
		$relac[$ges->desde] = SQLConnection::backendStoreProcedure('LN_check_', array('search', null, $id, null, 'R',null,null,null,null,null,null,null,null,$ges->gestion), 'select');
		$direct[$ges->desde] = SQLConnection::backendStoreProcedure('LN_check_', array('search', null, $id, null, 'D',null,null,null,null,null,null,null,null,$ges->gestion), 'select');
		$propio[$ges->desde] = SQLConnection::backendStoreProcedure('LN_check_', array('search', null, $id, null, 'P',null,null,null,null,null,null,null,null,$ges->gestion), 'selectOne');


		foreach ($socios[$ges->desde] as $key => $value) {
			$socios[$ges->desde][$key]->detalle = str_replace(chr(10), '<br>', $value->detalle);
			if (!empty($value->ruta))
			{
				$socios[$ges->desde][$key]->ruta = env('RUTA_WCHECK') . '/' .$value->ruta; 
			}
			else
			{
				$socios[$ges->desde][$key]->ruta = null; 
			}
		}

		foreach ($relac[$ges->desde] as $key => $value) {
			$relac[$ges->desde][$key]->detalle  = str_replace(chr(10), '<br>', $value->detalle);
			if (!empty($value->ruta))
			{
				$relac[$ges->desde][$key]->ruta = env('RUTA_WCHECK') . '/' . $value->ruta; 
			}
			else
			{
				$relac[$ges->desde][$key]->ruta = null; 
			}

		}

		foreach ($direct[$ges->desde] as $key => $value) {
			$direct[$ges->desde][$key]->detalle  = str_replace(chr(10), '<br>', $value->detalle);
			if (!empty($value->ruta))
			{
				$direct[$ges->desde][$key]->ruta = env('RUTA_WCHECK') . '/' .  $value->ruta; 
			}
			else
			{
				$direct[$ges->desde][$key]->ruta = null;
			}
		}

		if (!empty($propio[$ges->desde]))
		{
			if(isset($propio[$ges->desde]->detalle)){
				$propio[$ges->desde]->detalle=str_replace(chr(10), '<br>', $propio[$ges->desde]->detalle);
			}

			if (isset($propio[$ges->desde]->ruta) && !empty($propio[$ges->desde]->ruta))
			{
				$propio[$ges->desde]->ruta = env('RUTA_WCHECK') . '/' . $propio[$ges->desde]->ruta; 
			}
		}
		
		}

//var_dump($propio); die(); 

// 04/11/2021: Se agregan los indicadores que puede actualizar el cliente
	 $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($qcontrap->contraparte,'SELECT_PRUEBA'), 'select'); 
	 $campo1 = [];
	 $campo2 = [];
	 $campo3 = []; // En campo 3 ponemos los indicadores del producto 2080 - Dictamen VRM
	 $campo  = [];
	 $nombre_producto_ant = ''; 
	 foreach ($editables as $key => $editar)
	  {
			$campo[$key] = new stdClass; 
	  		$campo[$key]->nombre = $editar->nombre_indicador; 
	  		//$campo[$key]->nombre = $editar->etiqueta; 
	  		$campo[$key]->clave_indicador = $editar->clave_indicador; 
	  		$campo[$key]->tipo_dato = $editar->tipo_dato; 
	  		$campo[$key]->nombre_producto = $editar->nombre_producto; 
	  		$campo[$key]->producto = $editar->producto; 
	  		$campo[$key]->indicador = $editar->indicador; 
 
	  		if ($campo[$key]->nombre_producto == $nombre_producto_ant || $campo[$key]->clave_indicador == 'VRM_DDR') 
	  		{
	  			$campo[$key]->nombre_producto = ''; 
	  		}
	  		else 
	  		{
	  			$nombre_producto_ant = $campo[$key]->nombre_producto; 
	  		}

			$campo[$key]->valor_indicador = null; 
	  		if ($editar->valor_texto !== null) {
	  			$campo[$key]->valor_indicador = $editar->valor_texto; 
	  		}
	  		elseif ($editar->valor_numerico !== null) {
	  			$campo[$key]->valor_indicador = number_format($editar->valor_numerico,2,'.','.');
	  		}
	  		elseif ($editar->valor_fecha !== null) {
	  			$campo[$key]->valor_indicador = $editar->valor_fecha; 
	  		}
			elseif ($editar->valor_memo !== null) {
	  			$campo[$key]->valor_indicador = $editar->valor_memo; 
	  		}

           	$campo[$key]->tiene_opciones = 'NO';

           	$campo[$key]->es_boton = $editar->es_boton; 
           	$campo[$key]->es_checkbox = $editar->es_checkbox; 

           	$campo[$key]->texto_boton = NULL;
	  		$campo[$key]->boton_habilitado = 0;

	  		if ($editar->es_boton == 'SI')
	  		{
	  			$boton = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array(NULL,'BOTON',$editar->indicador), 'select');

	  			foreach ($boton as $kb => $bot)
	  			{
	  				if ($bot->cuando_valor == $campo[$key]->valor_indicador || 
	  					($bot->cuando_valor == NULL && $campo[$key]->valor_indicador == NULL))
	  					{	
	  						$campo[$key]->texto_boton = $bot->texto_boton;
	  						$campo[$key]->boton_habilitado = $bot->boton_habilitado;
	  					}
	  			}
	  		}

	  		if ($editar->es_checkbox == 'SI')
	  		{
	  			$boton = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array(NULL,'CHECKBOX',$editar->indicador), 'select');

	  			foreach ($boton as $kb => $bot)
	  			{
	  				if ($bot->cuando_valor == $campo[$key]->valor_indicador || 
	  					($bot->cuando_valor == NULL && $campo[$key]->valor_indicador == NULL))
	  					{	
	  						$campo[$key]->texto_boton = $bot->texto_boton;
	  						$campo[$key]->boton_habilitado = $bot->boton_habilitado;
	  					}
	  			}
	  		}


	  		if ($editar->es_boton == 'NO' && $editar->es_checkbox == 'NO' && !empty($editar->opciones)) // Solo arma las opciones del select si no es boton
	  		{
	           	$campo[$key]->tiene_opciones = 'SI';
                $valores = [] ;
                $valores = explode('^', $editar->opciones);
                foreach ($valores as $key2 => $valore)
                    { 
                    $valores2 = explode('|', $valore);
                    foreach ($valores2 as $keyk => $valore2)
                    	{
                    		
                    		if($key2 == 0)
							{
								$campo[$key]->valor[$keyk] = $valore2;
							}
							if($key2 == 1)
							{
								$campo[$key]->opcion[$keyk] = $valore2;
					
								$color = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', 
									array($qcontrap->contraparte, 'COLORES', $editar->indicador, $valore2), 'SelectOne'); 
								if (empty($color)){
									$campo[$key]->color[$keyk] = null; 	
								}
								else{
									$color = $color[0]->color;
									$campo[$key]->color[$keyk] = $color; 
								}
							
							}

                    	}
                    }
             }  
             if ($editar->rango_inferior !== null && $editar->rango_inferior !== '' &&
              	 $editar->rango_superior !== null && $editar->rango_superior !== '' &&
              	$editar->intervalo !== null && $editar->intervalo !== '')
             {
	           		$campo[$key]->tiene_opciones = 'SI';
  					for ($i=$editar->rango_inferior; $i <= $editar->rango_superior; $i+=$editar->intervalo) 
  					{ 
						$campo[$key]->valor[] = $i; 
						$campo[$key]->opcion[] = $i; 
						$color = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', 
							array($qcontrap->contraparte, 'COLORES', $editar->indicador, $i), 'SelectOne');  
						if (empty($color)){
							$campo[$key]->color[] = null; 	
						}
						else{
							$color = $color[0]->color;
							$campo[$key]->color[] = $color; 
						}
  					}
             }


             if ($campo[$key]->producto == 2082) 
             {
             	$campo3[] = $campo[$key];
             }

             if ($campo[$key]->producto == 2082 || $campo[$key]->producto == 2080 || $campo[$key]->producto == 2102)  
             {
             	unset($campo[$key]); 
             }


	  }

	  $cantidad = count($campo); 

	  $cantidad2 = round(count($campo)/2); 

	
		$j=0;
		$k=0;
		for ($i=0;$i<100;$i++)
		{
			if (isset($campo[$i]))
			{
				if ($j>=$cantidad2)
				{
					$campo2[$k] = $campo[$i];
					$k+=1;
				}
				else 
				{
					$campo1[$j] = $campo[$i];
					$j+=1;
				}
			}
		}

	
	/* 21/04/2022: Indicadores Manual cliente de gestiones anteriores */
	$editables_anteriores = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($qcontrap->contraparte,'VALORES_INDICADORES_GESTIONES'), 'select'); 
	$campo1_ant = [];
	$campo2_ant = [];
	$campo3_ant = []; // En campo 3 ponemos los indicadores del producto 2080 - Dictamen VRM
	$campo_ant  = [];
	$i = 0; 
	$desde = ''; 
	foreach ($editables_anteriores as $key => $editar)
	{
			if ($editar->desde==$gestiones[0]->desde) // No se cargan los datos de la gestion actual 
			{
				continue; 
			}
			if ($editar->desde !== $desde && $desde != '')
				{
				  $cantidad = count($campo_ant[$desde]); 
				  $cantidad2 = round(count($campo_ant[$desde])/2); 
				  if ($cantidad > 0)
				  {
					$j=0;
					$k=0;
					for ($i=0;$i<100;$i++)
					{
						if (isset($campo_ant[$desde][$i]))
						{
							if ($j>=$cantidad2)
							{
								$campo2_ant[$desde][$k] = $campo_ant[$desde][$i];
								$k+=1;
							}
							else 
							{
								$campo1_ant[$desde][$j] = $campo_ant[$desde][$i];
								$j+=1;
							}
						}
					}
				  }
				$i = 0;
				}
			$desde = $editar->desde; 
			$campo_ant[$editar->desde][$i] = new stdClass; 
	  		$campo_ant[$editar->desde][$i]->nombre = $editar->nombre_indicador; 
	  		//$campo_ant[$editar->desde][$i]->nombre = $editar->etiqueta; 
	  		$campo_ant[$editar->desde][$i]->clave_indicador = $editar->clave_indicador; 
	  		$campo_ant[$editar->desde][$i]->tipo_dato = $editar->tipo_dato; 
	  		$campo_ant[$editar->desde][$i]->nombre_producto = $editar->nombre_producto; 
	  		$campo_ant[$editar->desde][$i]->producto = $editar->producto; 
	  		$campo_ant[$editar->desde][$i]->valor_indicador = $editar->valor_memo; 
             if ($campo_ant[$editar->desde][$i]->producto == 2082 || $campo_ant[$editar->desde][$i]->producto == 2080) 
             {
             	unset($campo_ant[$editar->desde][$i]); 
             }
             else 
             {
             	$i += 1;
             }
		    
	  }
	  if ($desde != '')
	  {
		  $cantidad = count($campo_ant[$desde]); 
		  $cantidad2 = round(count($campo_ant[$desde])/2); 
		  if ($cantidad > 0)
		  {
			$j=0;
			$k=0;
			for ($i=0;$i<100;$i++)
			{
				if (isset($campo_ant[$desde][$i]))
				{
					if ($j>=$cantidad2)
					{
						$campo2_ant[$desde][$k] = $campo_ant[$desde][$i];
						$k+=1;
					}
					else 
					{
						$campo1_ant[$desde][$j] = $campo_ant[$desde][$i];
						$j+=1;
					}
				}
			}
		  }
	  }
	
/* 21/04/2022: Fin Indicadores Manual cliente de gestiones anteriores */


		$sddr = SQLConnection::backendStoreProcedure('LN_scores_VRM',array('SOLICITAR_DDR_PENDIENTE',$qcontrap->contraparte),'selectOne');
		$solicitar_ddr_pendiente = $sddr->solicitar_ddr_pendiente ?? 'NO';
		$solicitar_ddr_motivo    = $sddr->detalle ?? null;

		$campo = [];
		$campo = $campo383; 
		$vista = \View::make('/led/led_wordcheck_gestiones')->with(compact(['qcontrap', 'socios', 'relac', 'direct','propio','campo','gestiones','indicador','score_wc','anticorrupcion','ddr','riska','campo1','campo1_ant','campo2','campo2_ant','campo3','campo3_ant','hoy_dmy','hoy','solicitar_ddr_pendiente','solicitar_ddr_motivo']))->render();

		return $vista;



	}

	public static function ledConcentracionRiesgoPais($id=null)
	{
		if(!$id){
			$id = Request::input('contraparte');
		}
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		$riesgopais = [];
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
	  	foreach ($gestiones as $ges)
	  	{
			$riesgopais[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2091,$ges->gestion),'select');

		}

		$periodo =  new stdClass; 
		$periodo =  SQLConnection::backendStoreProcedure('LN_scores_VRM',array('PERIODO_RIESGO_PAIS', null),'selectOne')->periodo ?? null;
		if ($periodo!==null)
		{
			$periodo = substr($periodo,5,2) . '/' . substr($periodo,0,4);
		}

		$vista = \View::make('/led/led_riesgopais_gestiones')->with(compact(['qcontrap', 'riesgopais','gestiones','periodo']))->render();

		return $vista;

	}

	public static function ledClientela($id=null)
	{
		if(!$id){
			$id = Request::input('contraparte');
		}
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		$clientela = [];
		$doc_id = [];
		$docs = [];
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
	  	foreach ($gestiones as $ges)
	  	{
			$clientela[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2093,$ges->gestion),'select');
			$doc_id[$ges->desde] = SQLConnection::backendStoreProcedure('ln_doc_id', array($id,$ges->gestion,1211),'selectOne');
			$docs1[$ges->desde] = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array(
				'DOCUMENTOS_POR_GESTION', $id, 
				null, null, null, null, null, null, null, null, null, null, null, null, null,
				null, null, null, null, null, null, $ges->desde));
			foreach ($docs1[$ges->desde] as $key => $doc) {
				if ($doc->tipo_doc == '1211')
				{
					$docs[$ges->desde] = $doc; 
				}
			}

		}

		$vista = \View::make('/led/led_clientela_gestiones')->with(compact(['qcontrap', 'clientela','gestiones','doc_id','docs']))->render();

		return $vista;

	}


	public static function leditrisk($id=null)
	{
		if(!$id){
			$id = Request::input('contraparte');
		}
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		$itrisk = [];
		$doc_id = [];
		$docs = [];
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
	  	foreach ($gestiones as $ges)
	  	{
			$itrisk[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2094,$ges->gestion),'select');
			$doc_id[$ges->desde] = SQLConnection::backendStoreProcedure('ln_doc_id', array($id,$ges->gestion,1210),'selectOne');

			$docs1[$ges->desde] = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array(
				'DOCUMENTOS_POR_GESTION', $id, 
				null, null, null, null, null, null, null, null, null, null, null, null, null,
				null, null, null, null, null, null, $ges->desde));
			foreach ($docs1[$ges->desde] as $key => $doc) {
				if ($doc->tipo_doc == '1210')
				{
					$docs[$ges->desde] = $doc; 
				}
			}



		}
		$vista = \View::make('/led/led_itrisk_gestiones')->with(compact(['qcontrap', 'itrisk','gestiones','doc_id','docs']))->render();

		return $vista;

	}


	public static function ledFinancieroVrm($id=null)
	{

		if(!$id){
			$id = Request::input('contraparte');
		}
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		$financiero = [];
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
	  	foreach ($gestiones as $ges)
	  	{
		$financiero[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2095,$ges->gestion),'select');
		}

		$vista = \View::make('/led/led_financiero_gestiones')->with(compact(['qcontrap', 'gestiones','financiero']))->render();

		return $vista;

	}


	public static function ledLaboralLegalFiscal($id=null)
	{

		if(!$id){
			$id = Request::input('contraparte');
		}
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		$laboral = [];
	    $docs = [];
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
	  	foreach ($gestiones as $ges)
	  	{
		$laboral[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2096,$ges->gestion),'select');
		$docs1[$ges->desde] = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array(
				'DOCUMENTOS_POR_GESTION', $id, 
				null, null, null, null, null, null, null, null, null, null, null, null, null,
				null, null, null, null, null, null, $ges->desde));
			foreach ($docs1[$ges->desde] as $key => $doc) {
				if ($doc->tipo_doc == '1190')
					{
					$docs[$ges->desde][] = $doc; 
					}
				if ($doc->tipo_doc == '1191')
					{
					$docs[$ges->desde][] = $doc; 
					}
				if ($doc->tipo_doc == '1192')
					{
					$docs[$ges->desde][] = $doc; 
					}
			}
		}

		$vista = \View::make('/led/led_laboral_gestiones')->with(compact(['qcontrap', 'gestiones','laboral','docs']))->render();

		return $vista;

	}



public static function ledSostenibilidad($id=null,$datos_vista='vista')
{
		if ($datos_vista=='datos')
		{
			$esreadonly = 'readonly disabled';
		}
		else
		{
			$esreadonly = '';
		}
		if(!$id){
			$id = Request::input('contraparte');
		}
		$prod = Request::input('producto') ?? '2102';
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, 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');
		$campo = []; 
		$campo = self::indicadorEditables($id,'495'); 

		if ($datos_vista == 'datos')
		{
			$campo1 = []; 
			$campo1_ant = []; 
			$campo2 = []; 
			$campo2_ant = []; 
			$campo1 = $campo; 
			return array($campo, $campo1, $campo1_ant, $campo2, $campo2_ant, $esreadonly); 
		}

		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		$sostenibilidad = [];
	    $docs = [];
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
	  	foreach ($gestiones as $ges)
	  	{
		$sostenibilidad[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2102,$ges->gestion),'select');
		$docs1[$ges->desde] = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array(
				'DOCUMENTOS_POR_GESTION', $id, 
				null, null, null, null, null, null, null, null, null, null, null, null, null,
				null, null, null, null, null, null, $ges->desde));
		// Poner los documentos de Sostenibilidad
			foreach ($docs1[$ges->desde] as $key => $doc) {
				if ($doc->tipo_doc == '1230')
					{
					$docs[$ges->desde][] = $doc; 
					}
				if ($doc->tipo_doc == '1231')
					{
					$docs[$ges->desde][] = $doc; 
					}
				if ($doc->tipo_doc == '1232')
					{
					$docs[$ges->desde][] = $doc; 
					}
			}
		}

		$vista = \View::make('/led/led_sostenibilidad_gestiones')->with(compact(['qcontrap', 'gestiones','sostenibilidad','docs','campo','qproducto']))->render();

		return $vista;
	}





public static function indicadorEditables($contraparte,$indicador,$gestion = null)
{
	$campo = []; 
	$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($contraparte,'INDICADOR',$indicador,null,null,null,Session::get('usuario')->as_user_id,null,$gestion), 'select'); 
 	foreach ($editables as $key => $editar)
  	{
		$campo[$key] = new stdClass; 
  		$campo[$key]->nombre = $editar->nombre_indicador; 
  		$campo[$key]->clave_indicador = $editar->clave_indicador; 
  		$campo[$key]->tipo_dato = $editar->tipo_dato; 
  		$campo[$key]->nombre_producto = $editar->nombre_producto; 
  		$campo[$key]->producto = $editar->producto; 
  		$campo[$key]->valor_indicador = null; 
  		$campo[$key]->valor_indicador_txt = null; 
  		$campo[$key]->indicador = $editar->indicador; 
  		$campo[$key]->etiqueta = $editar->etiqueta; 
  		
  		if ($editar->valor_texto !== null) {
  			$campo[$key]->valor_indicador = $editar->valor_texto; 
  		}
  		elseif ($editar->valor_numerico !== null) {
  			$campo[$key]->valor_indicador = number_format($editar->valor_numerico,2,'.','.');
  		}
  		elseif ($editar->valor_fecha !== null) {
  			$campo[$key]->valor_indicador = $editar->valor_fecha; 
  		}
		elseif ($editar->valor_memo !== null) {
  			$campo[$key]->valor_indicador = $editar->valor_memo; 
  		}
       	$campo[$key]->valor_memo = $editar->valor_memo; 

       	$campo[$key]->tiene_opciones = 'NO';

  		if (!empty($editar->opciones))
  		{
           	$campo[$key]->tiene_opciones = 'SI';
            $valores = [] ;
            $valores = explode('^', $editar->opciones);
            foreach ($valores as $key2 => $valore)
                { 
                $valores2 = explode('|', $valore);
                foreach ($valores2 as $keyk => $valore2)
                	{
                		
                		if($key2 == 0)
						{
							$campo[$key]->valor[$keyk] = $valore2;
						}
						if($key2 == 1)
						{
							$campo[$key]->opcion[$keyk] = $valore2;
				/*
							$color = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', 
								array($qcontrap->contraparte, 'COLORES', $editar->indicador, $valore2), 'SelectOne')->color;
							$campo[$key]->color[$keyk] = null; */

							$color = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', 
									array($contraparte, 'COLORES', $editar->indicador, $valore2), 'SelectOne'); 
								if (empty($color)){
									$campo[$key]->color[$keyk] = null; 	
								}
								else{
									$color = $color[0]->color;
									$campo[$key]->color[$keyk] = $color; 
								}
							


						
						}

                	}
                }

                for ($i=0; $i <= $keyk; $i++) { 
                	if ($campo[$key]->valor_indicador == $campo[$key]->opcion[$i])
                	{
						$campo[$key]->valor_indicador_txt = $campo[$key]->valor[$i];
                	}
                }
         }  
         if ($editar->rango_inferior !== null && $editar->rango_inferior !== '' &&
          	 $editar->rango_superior !== null && $editar->rango_superior !== '' &&
          	$editar->intervalo !== null && $editar->intervalo !== '')
         {
           		$campo[$key]->tiene_opciones = 'SI';
					for ($i=$editar->rango_inferior; $i <= $editar->rango_superior; $i+=$editar->intervalo) 
					{ 
						$campo[$key]->valor[] = $i; 
						$campo[$key]->opcion[] = $i; 
						$color = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', 
									array($contraparte, 'COLORES', $editar->indicador, $valore2), 'SelectOne'); 
								if (empty($color)){
									$campo[$key]->color[$keyk] = null; 	
								}
								else{
									$color = $color[0]->color;
									$campo[$key]->color[$keyk] = $color; 
								}
					}

					for ($i=$editar->rango_inferior; $i <= $editar->rango_superior; $i+=$editar->intervalo) {
	                	if ($campo[$key]->valor_indicador == $campo[$key]->opcion[$i])
	                	{
							$campo[$key]->valor_indicador_txt = $campo[$key]->valor[$i];
	                	}
                	}

         }


	  }

	  return $campo;


}



public static function prueba4013()
	{

	  $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array('4013'), 'select'); 

	  foreach ($editables as $key => $editar)
	  {
			$campo[$key] = new stdClass; 
	  		$campo[$key]->nombre = $editar->nombre_indicador; 
           	$campo[$key]->tiene_opciones = 'NO';

	  		if (!empty($editar->opciones))
	  		{
                $campo[$key]->tiene_opciones = 'SI';
                $valores = [] ;
                $valores = explode('^', $editar->opciones);
                foreach ($valores as $key2 => $valore)
                    { 
                    $valores2 = explode('|', $valore);
                    foreach ($valores2 as $keyk => $valore2)
                    	{
                    		
                    		if($key2 == 0)
							{
								$campo[$key]->valor[$keyk] = $valore2;
							}
							if($key2 == 1)
							{
								$campo[$key]->opcion[$keyk] = $valore2;
							}

                    	}
                    }
             }  
             else
             {
             	if ($editar->rango_inferior !== null && $editar->rango_inferior !== '' &&
              	 $editar->rango_superior !== null && $editar->rango_superior !== '' &&
              	$editar->intervalo !== null && $editar->intervalo !== '')
             	{
                	$campo[$key]->tiene_opciones = 'SI';
  					for ($i=$editar->rango_inferior; $i <= $editar->rango_superior; $i+=$editar->intervalo) 
  					{ 
						$campo[$key]->valor[] = $i; 
						$campo[$key]->opcion[] = $i; 
  					}
             	}
             	else
             	{
             		$campo[$key]->valor[] = null; 
					$campo[$key]->opcion[] = null;
             	}
             }
	  }
	  $cantidad = round(count($campo)/2); 
	  $campo1 = [];
	  $campo2 = [];
	  if ($cantidad >= 2) 
	  {
	  		for ($i=0;$i<$cantidad;$i++)
	  			{
	  				$campo1[$i] = $campo[$i];

	  			}
	  		$j=0;
	  		for ($i=$cantidad;$i<count($campo);$i++)
	  			{
	  				$campo2[$j] = $campo[$i];
	  				$j+=1;
	  			}
	  }
	  else 
	  {
	  	for ($i==0;$i<count($campo);$i++)
	  			{
	  				$campo1[$i] = $campo[$i];
	  			}
	  }

	  //if (is_array($campo1[0]->valor)) { var_dump("SI");} else { var_dump("NO");}
	var_dump($campo1[0]->tiene_opciones);
	}



/* 18/11/2021 Cargar cifras para Dependencia Económinca: Copiado de Backend */

public static function ledContrapartesDE() {
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');

		$depecon = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'select', $id, $cliente), 'select');
		$productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
		$id_producto     = $productos->producto;
		$nombre_producto = $productos->nombre_producto; 
		return json_encode(array('id_producto' => $id_producto, 'tabla' => view('/led/led_contrapartes_de_tabla')->with(compact('cliente','contraparte','depecon','id_producto','nombre_producto'))->render()));
	}

	public static function ledContrapartesDeleteDE() {
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$producto 	= Request::input('producto');
		$iden       = Request::input('id');

		$del = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'delete',$id,null,null,null,null,null,null,null,$iden), 'selectOne');
		$depecon = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'select', $id, $cliente), 'select');
		$productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
		$id_producto     = $productos->producto;
		$nombre_producto = $productos->nombre_producto; 
		return json_encode(array('id_producto' => $id_producto, 'tabla' => view('/led/led_contrapartes_de_tabla')->with(compact('cliente','contraparte','depecon','id_producto','nombre_producto'))->render()));
	}

	public static function ledContrapartesInsertDE() {
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$producto 	= Request::input('producto_de');
		$desde 		= null; 
		$hasta 		= Request::input('periodo_hasta_de');
		if ($hasta !== null) { $hasta = $hasta . '-01';}
		$monto 	    = Request::input('monto');
		$moneda 	= Request::input('moneda');
		$visible 	= 1;
		
		//var_dump('LN_contrapartes_DE_LCS ' . "'DE', 'insert'" . ",'" .  $id . "','" .  $cliente . "','" . $producto . "','" . $desde . "','" . $hasta . "','" . $visible . "','" . $monto . "','" . $moneda . "'"); die(); 
		
		$insert = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'insert', $id, $cliente,$producto,$desde,$hasta,$visible,$monto,$moneda), 'selectOne');

		$depecon = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'select', $id, $cliente), 'select');
		$productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
		$id_producto     = $productos->producto;
		$nombre_producto = $productos->nombre_producto; 
		return json_encode(array('id_producto' => $id_producto, 'tabla' => view('/led/led_contrapartes_de_tabla')->with(compact('cliente','contraparte','depecon','id_producto','nombre_producto'))->render()));
	}

	//-----
	public static function ledMapaRelaciones() {
		$id = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
		//
		$cuit = $qcontrap->identificacion;
		$tipo_persona = SQLConnection::obtenerTipoPersona($cuit); 
		//
		$score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'SCORE_FINAL'), 'selectOne');
		$color = '#cccccc';
		//
		if (isset($score->color)) {
			$color	 = $score->color;
		}
		if (isset($score->color_personalizado)) {
			$color	 = $score->color_personalizado;
		}
		//
		$malla_societaria     = SQLConnection::grafoSociedades($cuit,$tipo_persona->tipo_persona);
		foreach ($malla_societaria as $key => $malla) {
			$malla_societaria[$key]->score_color = '#cccccc';
			$w_cuit    = $malla->cuit; 		 
			$malla_societaria[$key]->score =  !empty($score) ? $score->valor : 0;
			$malla_societaria[$key]->score_color = $color;
		}
		//
		foreach($malla_societaria as $malla){
			$malla_societaria[$malla->seccion] = true;
			$malla_societaria['COLORES'] = true; 
		}
		//--NUEVO NAHU--
		$tipo_persona = ( Misc::tipoPersona($cuit) == 'F') ? 'f' : 'j';
		$socios_directores = SQLConnection::obtenerSociosDirectores($cuit,$tipo_persona);
		//
		/*
		if ($tipo_persona == 'j') {
			$accionistas = SQLConnection::obtenerAccionistasNew($cuit);
		} else {
			$accionistas = '';
		}
		*/

		$accionistas     = [];
		$participaciones = [];
		$participaciones_ordenados = [];
		$vinculaciones   = [];
		$vinculaciones_indirectas = [];
		if ($tipo_persona == 'j') {
			$accionistas               = SQLConnection::obtenerAccionistasNew($cuit);
			$participaciones           = SQLConnection::obtenerParticipacionSociosDirectores($cuit);
			$vinculaciones             = SQLConnection::obtenerVinculaciones($cuit);
			$vinculaciones_indirectas  = SQLConnection::obtenerVinculacionesIndirectas($cuit);
		} 
		foreach($participaciones as $participacion){
	  		$participaciones_ordenados[$participacion->nombre_socio][] =  $participacion;
		}
		foreach ($vinculaciones as $key => $value) {
	 		$vinculaciones[$key]->desde = Misc::convertirFormatoFecha($value->desde,'Y-m','m-Y');
	  		$vinculaciones[$key]->hasta = Misc::convertirFormatoFecha($value->hasta,'Y-m','m-Y');
		}
		//
		$accionista_de = [];
		$accionista_de = SQLConnection::obtenerAccionistasDe($cuit);
		//--
		$json=true;
		return view('informes/sociedades_solo_mapa')->with(compact('json','malla_societaria','socios_directores','tipo_persona','accionistas','accionista_de','participaciones_ordenados','vinculaciones','vinculaciones_indirectas'));
	}


	public static function UpdActivo() {


		$contraparte = Request::input('contraparte');
		$activo = Request::input('activo');
		$detalle_fidelitas = Request::input('detalle_fidelitas') ?? null;
		$detalle_cliente = Request::input('detalle_cliente') ?? null;
		$user_id = Session::get('usuario')->user_id;	
		$as_user_id = Session::get('usuario')->as_user_id;	

		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($contraparte,'UPDATE_ACTIVO', '0', NULL,$detalle_cliente,$detalle_fidelitas,Session::get('usuario')->as_user_id,$activo), 'selectOne');

 		$cliente = Session::get('usuario')->cliente['client_id'];

		if($activo == 1){
			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se paso a estado ACTIVO', $cliente, 'HABILITACION_CONTRAPARTE_WWW','WWW', $contraparte,$as_user_id), 'selectOne');
		}else{
			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se paso a estado INACTIVO', $cliente, 'DESHABILITACION_CONTRAPARTE_WWW','WWW', $contraparte,$as_user_id), 'selectOne');
		}
		
	}


	public static function ledHistorialContraparte() {

		$id = Request::input('contraparte');

		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');

		foreach ($gestiones as $ind => $ges)
	  	{

			$todo[$ges->desde]         = [];
			$trazabilidad[$ges->desde] = [];
			$comentarios[$ges->desde]  = [];
			/*
			$trazabilidad1 = SQLConnection::backendStoreProcedure('LN_trazabilidad_', array($id,$ges->desde,1), 'select');
				if (isset($detalle_trazabilidad1->detalle)) {
				  $detalle_trazabilidad1->detalle = str_replace('; ',"<br/>",$detalle_trazabilidad1->detalle);
				}
				foreach ($trazabilidad1 as $key => $value) {
					$todo[$ges->desde][] = $value;
					$trazabilidad[$ges->desde][] = $value;
				}

			$comentarios1 = SQLConnection::backendStoreProcedure('LN_contraparte_comentarios_', array($id,$ges->desde,1), 'select');
				if (isset($detalle_comentarios1->detalle)) {
				  $detalle_comentarios1->detalle = str_replace('; ',"<br/>",$detalle_comentarios1->detalle);
				}
				foreach ($comentarios1 as $key => $value) {
					$todo[$ges->desde][] = $value;
					$comentarios[$ges->desde][] = $value;
				}
			*/


/* 14/10/2022: Jutamos Historial y Comentarios, para que venga todo junto ordenado por fecha/usuario*/

			$historial_comentarios = SQLConnection::backendStoreProcedure('LN_trazabilidad_comentarios_', array($id,$ges->desde,1), 'select');
				
			foreach ($historial_comentarios as $key => $value) {
				$todo[$ges->desde][] = $value;
			}

			$queda = 0;
			
			foreach ($todo[$ges->desde] as $key => $value) {
					if ($key==0) { continue; }
					if (($todo[$ges->desde][$key]->fecha == $todo[$ges->desde][$queda]->fecha) && 
						($todo[$ges->desde][$key]->username == $todo[$ges->desde][$queda]->username) /*&&
						($todo[$ges->desde][$queda]->texto_cliente == null || $todo[$ges->desde][$queda]->texto_cliente == '') &&
						($todo[$ges->desde][$key]->texto_cliente == null || $todo[$ges->desde][$key]->texto_cliente == '')*/)
					{
						$todo[$ges->desde][$queda]->texto .= "<br/>" . $todo[$ges->desde][$key]->texto;
						unset ($todo[$ges->desde][$key]);
					}
					else 
					{
						$queda = $key;
					}
				}

		}
		return view('/led/led_historial_contraparte')->with(compact('gestiones','trazabilidad','comentarios','todo'));

	}



	public static function ledHistorialCambiosDirectorios() {

		$id = Request::input('contraparte');

		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');

		foreach ($gestiones as $ind => $ges)
	  	{
			$trazabilidad[$ges->desde] = [];
			$trazabilidad[$ges->desde] = SQLConnection::backendStoreProcedure('LN_trazabilidad_id_padron_', array($id,'socios',null,$ges->desde), 'select');
		}
		return view('/led/led_historial_cambios_directorios')->with(compact('gestiones','trazabilidad'));

	}

	public static function ledVrmScoreFidelitas() {
		$id = Request::input('contraparte');
		$vista = self::ledHome($id,'no','si'); 
		return $vista;
    } 

	public static function panelVrmCambios() {
		$cliente = Session::get('usuario')->cliente['client_id'];
		return view('/led/panel_vrm_cambios')->with(compact(['cliente']));
	}

	public static function panelVrmCambiosFancy($cliente=null) { 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$data  = [];
		$data2 = [];
		$data3 = [];
		$data31 = [];
		$data4 = [];
		$data41 = [];

		$data  = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('SOLICITAR_DDR', $cliente, 'VRM'), 'select');
		$data2 = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('DICTAMEN_VRM', $cliente, 'VRM'), 'select');
		if(Session::get('usuario')->username == 'bbvafide' ||
	       Session::get('usuario')->username == 'bbva' ||
	       Session::get('usuario')->username == 'bbvavrm' ||
	       Session::get('usuario')->username == 'florencia.bbva' ||
	       Session::get('usuario')->username == 'a0001')
		{
		$data3 = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('INDICADORES_PENDIENTES', $cliente, 'VRM'), 'select');
		$data4 = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('DOCUMENTOS_PENDIENTES', $cliente, 'VRM'), 'select');
		$data5 = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('WORLDCHECK', $cliente, 'VRM'), 'select');
		}


		$familias  = [];
		$familias2 = [];
		$familias3 = [];
		$familias4 = [];
		$familias5 = [];
		$estados = [];
		$estados2 = [];
		$productos = [];
		$documentos = [];
		$worldcheck = [];
		foreach ($data as $k => $cont) {
			$familias[$k] = new stdClass;
			$familias[$k]->familia = $cont->nombre_familia;
			$data[$k]->detalle = str_replace('; ',"<br>",$cont->detalle);

		}
		foreach ($data2 as $k => $cont) {
			$familias2[$k] = new stdClass;
			$familias2[$k]->familia = $cont->nombre_familia;
			$estados[$k] = new stdClass;
			$estados2[$k] = new stdClass;
			$estados[$k]->estado = $cont->Dictamen_vrm_memo;
			$estados2[$k]->estado = $cont->Dictamen_vrm_automatico_memo;
			$data2[$k]->detalle = str_replace('; ',"<br>",$cont->detalle);
			$data2[$k]->edit = '<a style="cursor:pointer;"><i class="fa fa-trash fa-2x"></i></a>';
      
		}
		
		$contraparte = 0;
		$prod = 0;
		$j = 0;
		foreach ($data3 as $k => $cont) {
			$familias3[$k] = new stdClass;
			$familias3[$k]->familia = $cont->nombre_familia;
			$productos[$k] = new stdClass;
			$productos[$k]->producto = $cont->nombre_producto;

			if ($k == 0)
			{
				$data31[$j] = $cont; 
				$contraparte =  $cont->contraparte;
				$prod =  $cont->producto;
			}
			else 
			{
				if ($cont->contraparte == $contraparte && $cont->producto == $prod) 
				{
					$data31[$j]->nombre_indicador .= "<br>" . $cont->nombre_indicador;
				}
				else 
				{
					$j = $j + 1;
					$data31[$j] = $cont; 
					$contraparte =  $cont->contraparte;
					$prod =  $cont->producto;
				}
			}
		}

		$contraparte = 0;
		$j = 0;
		foreach ($data4 as $k => $cont) {
			$familias4[$k] = new stdClass;
			$familias4[$k]->familia = $cont->nombre_familia;
			$documentos[$k] = new stdClass;
			$documentos[$k]->documento = $cont->nombre_tipo_doc;

			if ($k == 0)
			{
				$data41[$j] = $cont; 
				$contraparte =  $cont->contraparte;
			}
			else 
			{
				if ($cont->contraparte == $contraparte) 
				{
					$data41[$j]->nombre_tipo_doc .= "<br>" . $cont->nombre_tipo_doc;
				}
				else 
				{
					$j = $j + 1;
					$data41[$j] = $cont; 
					$contraparte =  $cont->contraparte;
				}
			}
		}

		foreach ($data5 as $k => $cont) {
			$data5[$k]->edit = '<a style="cursor:pointer;"><i class="fa fa-trash fa-2x"></i></a>';
		}

		$familias = array_map("unserialize", array_unique(array_map("serialize", $familias)));
		$familias2 = array_map("unserialize", array_unique(array_map("serialize", $familias2)));
		$familias3 = array_map("unserialize", array_unique(array_map("serialize", $familias3)));
		$familias4 = array_map("unserialize", array_unique(array_map("serialize", $familias4)));
		$estados = array_map("unserialize", array_unique(array_map("serialize", $estados)));
		$estados2 = array_map("unserialize", array_unique(array_map("serialize", $estados2)));
		$productos = array_map("unserialize", array_unique(array_map("serialize", $productos)));
		$documentos = array_map("unserialize", array_unique(array_map("serialize", $documentos)));

 		return json_encode(array('data'=>$data,'familias'=>$familias,'data2'=>$data2,'familias2'=>$familias2,'estados'=>$estados,'estados2'=>$estados2,'data3'=>$data31,'familias3'=>$familias3,'productos'=>$productos,'data4'=>$data41,'familias4'=>$familias4,'documentos'=>$documentos,'data5'=>$data5));
	}


	public static function panelVrmCambiosFancy1($cliente=null) { 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$data  = [];
		$data  = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('SOLICITAR_DDR', $cliente, 'VRM'), 'select');
		$familias  = [];
		foreach ($data as $k => $cont) {
			$familias[$k] = new stdClass;
			$familias[$k]->familia = $cont->nombre_familia;
			$data[$k]->detalle = str_replace('; ',"<br>",$cont->detalle);
		}
		$familias = array_map("unserialize", array_unique(array_map("serialize", $familias)));
		sort($familias);
 		return json_encode(array('data'=>$data,'familias'=>$familias));
	}

	public static function panelVrmCambiosFancy2($cliente=null) { 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$data2 = [];
		$data2 = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('DICTAMEN_VRM', $cliente, 'VRM'), 'select');
		$familias2 = [];
		$estados = [];
		$estados2 = [];

		foreach ($data2 as $k => $cont) {
			$familias2[$k] = new stdClass;
			$familias2[$k]->familia = $cont->nombre_familia;
			$estados[$k] = new stdClass;
			$estados2[$k] = new stdClass;
			$estados[$k]->estado = $cont->Dictamen_vrm_memo;
			$estados2[$k]->estado = $cont->Dictamen_vrm_automatico_memo;
			$data2[$k]->detalle = str_replace('; ',"<br>",$cont->detalle);
			$data2[$k]->edit = '<a style="cursor:pointer;"><i class="fa fa-trash fa-2x"></i></a>';
      
		}
		
		$familias2 = array_map("unserialize", array_unique(array_map("serialize", $familias2)));
		$estados = array_map("unserialize", array_unique(array_map("serialize", $estados)));
		$estados2 = array_map("unserialize", array_unique(array_map("serialize", $estados2)));
		sort($familias2);
		sort($estados);
		sort($estados2);

 		return json_encode(array('data2'=>$data2,'familias2'=>$familias2,'estados'=>$estados,'estados2'=>$estados2));
	}

public static function panelVrmCambiosFancy3($cliente=null) { 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$data3 = [];
		$data31 = [];
		if(Session::get('usuario')->username == 'bbvafide' ||
	       Session::get('usuario')->username == 'bbva' ||
	       Session::get('usuario')->username == 'bbvavrm' ||
	       Session::get('usuario')->username == 'florencia.bbva' ||
	       Session::get('usuario')->username == 'a0001')
		{
		$data3 = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('INDICADORES_PENDIENTES', $cliente, 'VRM'), 'select');
		}
		$familias3 = [];
		$productos = [];

		$contraparte = 0;
		$prod = 0;
		$j = 0;
		foreach ($data3 as $k => $cont) {
			$familias3[$k] = new stdClass;
			$familias3[$k]->familia = $cont->nombre_familia;
			$productos[$k] = new stdClass;
			$productos[$k]->producto = $cont->nombre_producto;

			if ($k == 0)
			{
				$data31[$j] = $cont; 
				$contraparte =  $cont->contraparte;
				$prod =  $cont->producto;
			}
			else 
			{
				if ($cont->contraparte == $contraparte && $cont->producto == $prod) 
				{
					$data31[$j]->nombre_indicador .= "<br>" . $cont->nombre_indicador;
				}
				else 
				{
					$j = $j + 1;
					$data31[$j] = $cont; 
					$contraparte =  $cont->contraparte;
					$prod =  $cont->producto;
				}
			}
		}


		$familias3 = array_map("unserialize", array_unique(array_map("serialize", $familias3)));
		sort($familias3);

		$productos = array_map("unserialize", array_unique(array_map("serialize", $productos)));
		sort($productos);



 		return json_encode(array('data3'=>$data31,'familias3'=>$familias3,'productos'=>$productos));
	}

public static function panelVrmCambiosFancy4($cliente=null) { 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$data4 = [];
		$data41 = [];

		if(Session::get('usuario')->username == 'bbvafide' ||
	       Session::get('usuario')->username == 'bbva' ||
	       Session::get('usuario')->username == 'bbvavrm' ||
	       Session::get('usuario')->username == 'florencia.bbva' ||
	       Session::get('usuario')->username == 'a0001')
		{
		$data4 = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('DOCUMENTOS_PENDIENTES', $cliente, 'VRM'), 'select');
		}
		$familias4 = [];

		$documentos = [];
		$contraparte = 0;
		$j = 0;
		foreach ($data4 as $k => $cont) {
			$data4[$k]->edit = '<a style="cursor:pointer;"><i class="fa fa-envelope"></i></a>';
			$data4[$k]->chk  = '';
			//$data4[$k]->edit = '<a title="Reenviar mail"style="cursor:pointer;" class="enviar-mail-fancy4" data-contraparte="' . $cont->contraparte . '"><i class="fa fa-envelope"></i></a>';

		}

		foreach ($data4 as $k => $cont) {
			$familias4[$k] = new stdClass;
			$familias4[$k]->familia = $cont->nombre_familia;
			$documentos[$k] = new stdClass;
			$documentos[$k]->documento = $cont->nombre_tipo_doc;

			if ($k == 0)
			{
				$data41[$j] = $cont; 
				$contraparte =  $cont->contraparte;
			}
			else 
			{
				if ($cont->contraparte == $contraparte) 
				{
					$data41[$j]->nombre_tipo_doc .= "<br>" . $cont->nombre_tipo_doc;
				}
				else 
				{
					$j = $j + 1;
					$data41[$j] = new stdClass;
					$data41[$j] = $cont; 
					$contraparte =  $cont->contraparte;
				}
			}
		}
		$familias4 = array_map("unserialize", array_unique(array_map("serialize", $familias4)));
		$documentos = array_map("unserialize", array_unique(array_map("serialize", $documentos)));
		sort($familias4);
		sort($documentos);

 		return json_encode(array('data4'=>$data41,'familias4'=>$familias4,'documentos'=>$documentos));
	}
 
 public static function panelVrmCambiosFancy5($cliente=null) { 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$data5  = [];
		if(Session::get('usuario')->username == 'bbvafide' ||
	       Session::get('usuario')->username == 'bbva' ||
	       Session::get('usuario')->username == 'bbvavrm' ||
	       Session::get('usuario')->username == 'florencia.bbva' ||
	       Session::get('usuario')->username == 'a0001')
		{
		$data5 = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('WORLDCHECK', $cliente, 'VRM'), 'select');
		}
		
		foreach ($data5 as $k => $cont) {
			$data5[$k]->edit = '<a style="cursor:pointer;"><i class="fa fa-trash fa-2x"></i></a>';
		}	

 		return json_encode(array('data5'=>$data5));
	}

	public static function panelVrmCambiosFancy6($cliente=null) { 
		$cliente = Session::get('usuario')->cliente['client_id'];
		$data6 = [];
		if(Session::get('usuario')->username == 'bbvafide' ||
	       Session::get('usuario')->username == 'bbva' ||
	       Session::get('usuario')->username == 'bbvavrm' ||
	       Session::get('usuario')->username == 'florencia.bbva' ||
	       Session::get('usuario')->username == 'a0001')
		{
		$data6 = SQLConnection::backendStoreProcedure('ln_panel_vrm_cambios', array('SOSTENIBILIDAD', $cliente, 'VRM'), 'select');
		}
		
		foreach ($data6 as $k => $cont) {
			$data6[$k]->edit = '<a style="cursor:pointer;"><i class="fa fa-trash fa-2x"></i></a>';
		}	

 		return json_encode(array('data6'=>$data6));
	}






    public static function ledDesestimarVRM() {
		$id = Request::input('contraparte');
		$detalle_fidelitas  = Request::input('detalle_fidelitas')  ?? null;
		$detalle = Request::input('detalle_desestimar') ?? null;
		$valor = date("Y-m-d");
		$clave_indicador = Request::input('clave_indicador') ?? 'DESESTIMAR_VRM';
		if ($clave_indicador=='DESESTIMAR_VRM') { $indicador = 454; }
		if ($clave_indicador=='DESESTIMAR_WCH') { $indicador = 492; }
		//var_dump( array($id,'UPDATE',$indicador,$valor,$detalle,$detalle_fidelitas,Session::get('usuario')->as_user_id)); die(); 
		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE',$indicador,$valor,$detalle,$detalle_fidelitas,Session::get('usuario')->as_user_id), 'selectOne');
		 return json_encode(array('respuesta'=>'ok'));
 
	}

public static function ledIndicadoresEditables($id=null)
	{
 	$hoy = new DateTime('today'); 
	$hoy = $hoy->format('Y-m-d'); 
	$hoy2 = new DateTime('today'); 
	$hoy_dmy = $hoy2->format('d/m/Y'); 
	if(!$id){
		$id = Request::input('contraparte');
		$esreadonly = '';
	}
	else 
	{
		$esreadonly = 'readonly disabled';
	}
	$producto = Request::input('producto') ?? null;

	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
	 $gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');


// Se agregan los indicadores que puede actualizar el cliente
	 $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($qcontrap->contraparte,'SELECT_PRUEBA',null,null,null,null,null,null,$producto), 'select'); 

	 $campo_kpi1 = [];
	 $campo_kpi2 = [];
	 $campo_kpi  = [];
	 $nombre_producto_ant = ''; 
	 $producto = '';
	 foreach ($editables as $key => $editar)
	  {
	  		if ($producto == '')
	  		{
	  			$producto = $editar->nombre_producto;
	  		} 
			$campo_kpi[$key] = new stdClass; 
	  		$campo_kpi[$key]->nombre = $editar->nombre_indicador; 
	  		//$campo_kpi[$key]->nombre = $editar->etiqueta; 
	  		$campo_kpi[$key]->clave_indicador = $editar->clave_indicador; 
	  		$campo_kpi[$key]->tipo_dato = $editar->tipo_dato; 
	  		$campo_kpi[$key]->nombre_producto = $editar->nombre_producto; 
	  		$campo_kpi[$key]->producto = $editar->producto; 
	  		$campo_kpi[$key]->indicador = $editar->indicador; 
			$campo_kpi[$key]->etiqueta = $editar->etiqueta; 
 
	  		if ($campo_kpi[$key]->nombre_producto == $nombre_producto_ant) 
	  		{
	  			$campo_kpi[$key]->nombre_producto = ''; 
	  		}
	  		else 
	  		{
	  			$nombre_producto_ant = $campo_kpi[$key]->nombre_producto; 
	  		}

			$campo_kpi[$key]->valor_indicador = null; 
			if(($editar->indicador == 463 or $editar->indicador == 465 )
			    and ($esreadonly == '')) 
			{
				$campo_kpi[$key]->valor_indicador = $editar->valor_numerico;
			}
	  		elseif ($editar->valor_texto !== null) {
	  			$campo_kpi[$key]->valor_indicador = $editar->valor_texto; 
	  		}
	  		elseif ($editar->valor_numerico !== null) {
	  			$campo_kpi[$key]->valor_indicador = number_format($editar->valor_numerico,4,'.','.');
	  		}
	  		elseif ($editar->valor_fecha !== null) {
	  			$campo_kpi[$key]->valor_indicador = $editar->valor_fecha; 
	  		}
			elseif ($editar->valor_memo !== null) {
	  			$campo_kpi[$key]->valor_indicador = $editar->valor_memo; 
	  		}

           	$campo_kpi[$key]->tiene_opciones = 'NO';

           	$campo_kpi[$key]->es_boton = $editar->es_boton; 
           	$campo_kpi[$key]->es_checkbox = $editar->es_checkbox; 

           	$campo_kpi[$key]->texto_boton = NULL;
	  		$campo_kpi[$key]->boton_habilitado = 0;

	  		if ($editar->es_boton == 'SI')
	  		{
	  			$boton = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array(NULL,'BOTON',$editar->indicador), 'select');

	  			foreach ($boton as $kb => $bot)
	  			{
	  				if ($bot->cuando_valor == $campo_kpi[$key]->valor_indicador || 
	  					($bot->cuando_valor == NULL && $campo_kpi[$key]->valor_indicador == NULL))
	  					{	
	  						$campo_kpi[$key]->texto_boton = $bot->texto_boton;
	  						$campo_kpi[$key]->boton_habilitado = $bot->boton_habilitado;
	  					}
	  			}
	  		}

	  		if ($editar->es_checkbox == 'SI')
	  		{
	  			$boton = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array(NULL,'CHECKBOX',$editar->indicador), 'select');

	  			foreach ($boton as $kb => $bot)
	  			{
	  				if ($bot->cuando_valor == $campo_kpi[$key]->valor_indicador || 
	  					($bot->cuando_valor == NULL && $campo_kpi[$key]->valor_indicador == NULL))
	  					{	
	  						$campo_kpi[$key]->texto_boton = $bot->texto_boton;
	  						$campo_kpi[$key]->boton_habilitado = $bot->boton_habilitado;
	  					}
	  			}
	  		}

	if ($esreadonly == '')
	{

	  		if ($editar->es_boton == 'NO' && $editar->es_checkbox == 'NO' && !empty($editar->opciones)) // Solo arma las opciones del select si no es boton
	  		{
	           	$campo_kpi[$key]->tiene_opciones = 'SI';
                $valores = [] ;
                $valores = explode('^', $editar->opciones);
                foreach ($valores as $key2 => $valore)
                    { 
                    $valores2 = explode('|', $valore);
                    foreach ($valores2 as $keyk => $valore2)
                    	{
                    		
                    		if($key2 == 0)
							{
								$campo_kpi[$key]->valor[$keyk] = $valore2;
							}
							if($key2 == 1)
							{
								$campo_kpi[$key]->opcion[$keyk] = $valore2;
					
								$color = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', 
									array($qcontrap->contraparte, 'COLORES', $editar->indicador, $valore2), 'SelectOne'); 
								if (empty($color)){
									$campo_kpi[$key]->color[$keyk] = null; 	
								}
								else{
									$color = $color[0]->color;
									$campo_kpi[$key]->color[$keyk] = $color; 
								}
							
							}

                    	}
                    }
             }  
             if ($editar->rango_inferior !== null && $editar->rango_inferior !== '' &&
              	 $editar->rango_superior !== null && $editar->rango_superior !== '' &&
              	$editar->intervalo !== null && $editar->intervalo !== '')
             {
	           		$campo_kpi[$key]->tiene_opciones = 'SI';
  					for ($i=$editar->rango_inferior; $i <= $editar->rango_superior; $i+=$editar->intervalo) 
  					{ 
						$campo_kpi[$key]->valor[] = $i; 
						$campo_kpi[$key]->opcion[] = $i; 
						$color = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', 
							array($qcontrap->contraparte, 'COLORES', $editar->indicador, $i), 'SelectOne');  
						if (empty($color)){
							$campo_kpi[$key]->color[] = null; 	
						}
						else{
							$color = $color[0]->color;
							$campo_kpi[$key]->color[] = $color; 
						}
  					}
             }

        }


           

	  }

	  $cantidad = count($campo_kpi); 

	  //$cantidad2 = round(count($campo_kpi)/2); // Para que este en dos columnas 
      $cantidad2 = count($campo_kpi); // 23/11/2022: Que todo este en una sola columna

	
		$j=0;
		$k=0;
		for ($i=0;$i<100;$i++)
		{
			if (isset($campo_kpi[$i]))
			{
				if ($j>=$cantidad2)
				{
					$campo_kpi2[$k] = $campo_kpi[$i];
					$k+=1;
				}
				else 
				{
					$campo_kpi1[$j] = $campo_kpi[$i];
					$j+=1;
				}
			}
		}

	/* Indicadores Manual cliente de gestiones anteriores */
	$editables_anteriores = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($qcontrap->contraparte,'VALORES_INDICADORES_GESTIONES'), 'select'); 
	$campo_kpi1_ant = [];
	$campo_kpi2_ant = [];
	$campo_kpi_ant  = [];
	$i = 0; 
	$desde = ''; 
	foreach ($editables_anteriores as $key => $editar)
	{
			if ($editar->desde==$gestiones[0]->desde) // No se cargan los datos de la gestion actual 
			{
				continue; 
			}
			if ($editar->desde !== $desde && $desde != '')
				{
				  $cantidad = count($campo_kpi_ant[$desde]); 
				  $cantidad2 = round(count($campo_kpi_ant[$desde])/2); 
				  if ($cantidad > 0)
				  {
					$j=0;
					$k=0;
					for ($i=0;$i<100;$i++)
					{
						if (isset($campo_kpi_ant[$desde][$i]))
						{
							if ($j>=$cantidad2)
							{
								$campo_kpi2_ant[$desde][$k] = $campo_kpi_ant[$desde][$i];
								$k+=1;
							}
							else 
							{
								$campo_kpi1_ant[$desde][$j] = $campo_kpi_ant[$desde][$i];
								$j+=1;
							}
						}
					}
				  }
				$i = 0;
				}
			$desde = $editar->desde; 
			$campo_kpi_ant[$editar->desde][$i] = new stdClass; 
	  		$campo_kpi_ant[$editar->desde][$i]->nombre = $editar->nombre_indicador; 
	  		//$campo_kpi_ant[$editar->desde][$i]->nombre = $editar->etiqueta; 
	  		$campo_kpi_ant[$editar->desde][$i]->clave_indicador = $editar->clave_indicador; 
	  		$campo_kpi_ant[$editar->desde][$i]->tipo_dato = $editar->tipo_dato; 
	  		$campo_kpi_ant[$editar->desde][$i]->nombre_producto = $editar->nombre_producto; 
	  		$campo_kpi_ant[$editar->desde][$i]->producto = $editar->producto; 
	  		$campo_kpi_ant[$editar->desde][$i]->valor_indicador = $editar->valor_memo; 
             if ($campo_kpi_ant[$editar->desde][$i]->producto == 2082 || $campo_kpi_ant[$editar->desde][$i]->producto == 2080) 
             {
             	unset($campo_kpi_ant[$editar->desde][$i]); 
             }
             else 
             {
             	$i += 1;
             }
		    
	  }
	  if ($desde != '')
	  {
		  $cantidad = count($campo_kpi_ant[$desde]); 
		  $cantidad2 = round(count($campo_kpi_ant[$desde])/2); 
		  //$cantidad2 = round(count($campo_kpi_ant[$desde])); 
		  if ($cantidad > 0)
		  {
			$j=0;
			$k=0;
			for ($i=0;$i<100;$i++)
			{
				if (isset($campo_kpi_ant[$desde][$i]))
				{
					if ($j>=$cantidad2)
					{
						$campo_kpi2_ant[$desde][$k] = $campo_kpi_ant[$desde][$i];
						$k+=1;
					}
					else 
					{
						$campo_kpi1_ant[$desde][$j] = $campo_kpi_ant[$desde][$i];
						$j+=1;
					}
				}
			}
		  }
	  }



	
/* 21/04/2022: Fin Indicadores Manual cliente de gestiones anteriores */
	if ($esreadonly == '')
{

		$vista = \View::make('/led/led_indicadores_editables')->with(compact(['qcontrap','producto', 'campo_kpi','gestiones','campo_kpi1','campo_kpi1_ant','campo_kpi2','campo_kpi2_ant','hoy_dmy','hoy','esreadonly']))->render();

		return $vista;
}
else 
{
	return array($campo_kpi, $campo_kpi1, $campo_kpi1_ant, $campo_kpi2, $campo_kpi2_ant, $esreadonly); 
}
	


	}



	public static function ledIndicadoresDatosExtra($id=null)
	{
 	$hoy = new DateTime('today'); 
	$hoy = $hoy->format('Y-m-d'); 
	$hoy2 = new DateTime('today'); 
	$hoy_dmy = $hoy2->format('d/m/Y'); 
	if(!$id){
		$id = Request::input('contraparte');
		$esreadonly = '';
	}
	else 
	{
		$esreadonly = 'readonly disabled';
	}

	$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
	 $gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
// Se agregan los indicadores de Datos Extra
	 $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($qcontrap->contraparte,'SELECT_2099'), 'select'); 


	 $campo_kpi1 = [];
	 $campo_kpi2 = [];
	 $campo_kpi  = [];
	 $nombre_producto_ant = ''; 
	 $producto = '';
	 foreach ($editables as $key => $editar)
	  {
	  		if ($producto == '')
	  		{
	  			$producto = $editar->nombre_producto;
	  		} 
	  		if ($editar->clave_indicador == 'CUIT')
	  		{
	  			continue;
	  		}
			$campo_kpi[$key] = new stdClass; 
	  		$campo_kpi[$key]->nombre = $editar->nombre_indicador; 
	  		//$campo_kpi[$key]->nombre = $editar->etiqueta; 
	  		$campo_kpi[$key]->clave_indicador = $editar->clave_indicador; 
	  		$campo_kpi[$key]->tipo_dato = $editar->tipo_dato; 
	  		$campo_kpi[$key]->nombre_producto = $editar->nombre_producto; 
	  		$campo_kpi[$key]->producto = $editar->producto; 
	  		$campo_kpi[$key]->indicador = $editar->indicador; 
			$campo_kpi[$key]->etiqueta = $editar->etiqueta; 
 
	  		if ($campo_kpi[$key]->nombre_producto == $nombre_producto_ant) 
	  		{
	  			$campo_kpi[$key]->nombre_producto = ''; 
	  		}
	  		else 
	  		{
	  			$nombre_producto_ant = $campo_kpi[$key]->nombre_producto; 
	  		}

			$campo_kpi[$key]->valor_indicador = null; 
			if ($editar->valor_texto !== null) {
	  			$campo_kpi[$key]->valor_indicador = $editar->valor_texto; 
	  		}
	  		elseif ($editar->valor_numerico !== null) {
	  			$campo_kpi[$key]->valor_indicador = number_format($editar->valor_numerico,0,',',' ');
	  		}
	  		elseif ($editar->valor_fecha !== null) {
	  			$campo_kpi[$key]->valor_indicador = $editar->valor_fecha; 
	  		}
			elseif ($editar->valor_memo !== null) {
	  			$campo_kpi[$key]->valor_indicador = $editar->valor_memo; 
	  		}

           	$campo_kpi[$key]->tiene_opciones = 'NO';

           	$campo_kpi[$key]->es_boton = $editar->es_boton; 
           	$campo_kpi[$key]->es_checkbox = $editar->es_checkbox; 

           	$campo_kpi[$key]->texto_boton = NULL;
	  		$campo_kpi[$key]->boton_habilitado = 0;

	  		if ($editar->es_boton == 'SI')
	  		{
	  			$boton = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array(NULL,'BOTON',$editar->indicador), 'select');

	  			foreach ($boton as $kb => $bot)
	  			{
	  				if ($bot->cuando_valor == $campo_kpi[$key]->valor_indicador || 
	  					($bot->cuando_valor == NULL && $campo_kpi[$key]->valor_indicador == NULL))
	  					{	
	  						$campo_kpi[$key]->texto_boton = $bot->texto_boton;
	  						$campo_kpi[$key]->boton_habilitado = $bot->boton_habilitado;
	  					}
	  			}
	  		}

	  		if ($editar->es_checkbox == 'SI')
	  		{
	  			$boton = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array(NULL,'CHECKBOX',$editar->indicador), 'select');

	  			foreach ($boton as $kb => $bot)
	  			{
	  				if ($bot->cuando_valor == $campo_kpi[$key]->valor_indicador || 
	  					($bot->cuando_valor == NULL && $campo_kpi[$key]->valor_indicador == NULL))
	  					{	
	  						$campo_kpi[$key]->texto_boton = $bot->texto_boton;
	  						$campo_kpi[$key]->boton_habilitado = $bot->boton_habilitado;
	  					}
	  			}
	  		}


	  		if ($editar->es_boton == 'NO' && $editar->es_checkbox == 'NO' && !empty($editar->opciones)) // Solo arma las opciones del select si no es boton
	  		{
	           	$campo_kpi[$key]->tiene_opciones = 'SI';
                $valores = [] ;
                $valores = explode('^', $editar->opciones);
                foreach ($valores as $key2 => $valore)
                    { 
                    $valores2 = explode('|', $valore);
                    foreach ($valores2 as $keyk => $valore2)
                    	{
                    		
                    		if($key2 == 0)
							{
								$campo_kpi[$key]->valor[$keyk] = $valore2;
							}
							if($key2 == 1)
							{
								$campo_kpi[$key]->opcion[$keyk] = $valore2;
					
								$color = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', 
									array($qcontrap->contraparte, 'COLORES', $editar->indicador, $valore2), 'SelectOne'); 
								if (empty($color)){
									$campo_kpi[$key]->color[$keyk] = null; 	
								}
								else{
									$color = $color[0]->color;
									$campo_kpi[$key]->color[$keyk] = $color; 
								}
							
							}

                    	}
                    }
             }  
             if ($editar->rango_inferior !== null && $editar->rango_inferior !== '' &&
              	 $editar->rango_superior !== null && $editar->rango_superior !== '' &&
              	$editar->intervalo !== null && $editar->intervalo !== '')
             {
	           		$campo_kpi[$key]->tiene_opciones = 'SI';
  					for ($i=$editar->rango_inferior; $i <= $editar->rango_superior; $i+=$editar->intervalo) 
  					{ 
						$campo_kpi[$key]->valor[] = $i; 
						$campo_kpi[$key]->opcion[] = $i; 
						$color = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', 
							array($qcontrap->contraparte, 'COLORES', $editar->indicador, $i), 'SelectOne');  
						if (empty($color)){
							$campo_kpi[$key]->color[] = null; 	
						}
						else{
							$color = $color[0]->color;
							$campo_kpi[$key]->color[] = $color; 
						}
  					}
             }


           

	  }
	  $cantidad = count($campo_kpi); 

	  $cantidad2 = round(count($campo_kpi)/2); // Para que este en dos columnas 
      $cantidad2 = count($campo_kpi);

	
		$j=0;
		$k=0;
		for ($i=0;$i<100;$i++)
		{
			if (isset($campo_kpi[$i]))
			{
				if ($j>=$cantidad2)
				{
					$campo_kpi2[$k] = $campo_kpi[$i];
					$k+=1;
				}
				else 
				{
					$campo_kpi1[$j] = $campo_kpi[$i];
					$j+=1;
				}
			}
		}

	
	/* Indicadores Manual cliente de gestiones anteriores */
	$editables_anteriores = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($qcontrap->contraparte,'VALORES_INDICADORES_GESTIONES_2099'), 'select'); 
	$campo_kpi1_ant = [];
	$campo_kpi2_ant = [];
	$campo_kpi_ant  = [];
	$i = 0; 
	$desde = ''; 
	foreach ($editables_anteriores as $key => $editar)
	{
			if ($editar->desde==$gestiones[0]->desde) // No se cargan los datos de la gestion actual 
			{
				continue; 
			}
			if ($editar->desde !== $desde && $desde != '')
				{
				  $cantidad = count($campo_kpi_ant[$desde]); 
				  $cantidad2 = round(count($campo_kpi_ant[$desde])/2); 
				  if ($cantidad > 0)
				  {
					$j=0;
					$k=0;
					for ($i=0;$i<100;$i++)
					{
						if (isset($campo_kpi_ant[$desde][$i]))
						{
							if ($j>=$cantidad2)
							{
								$campo_kpi2_ant[$desde][$k] = $campo_kpi_ant[$desde][$i];
								$k+=1;
							}
							else 
							{
								$campo_kpi1_ant[$desde][$j] = $campo_kpi_ant[$desde][$i];
								$j+=1;
							}
						}
					}
				  }
				$i = 0;
				}
			$desde = $editar->desde; 
			$campo_kpi_ant[$editar->desde][$i] = new stdClass; 
	  		$campo_kpi_ant[$editar->desde][$i]->nombre = $editar->nombre_indicador; 
	  		//$campo_kpi_ant[$editar->desde][$i]->nombre = $editar->etiqueta; 
	  		$campo_kpi_ant[$editar->desde][$i]->clave_indicador = $editar->clave_indicador; 
	  		$campo_kpi_ant[$editar->desde][$i]->tipo_dato = $editar->tipo_dato; 
	  		$campo_kpi_ant[$editar->desde][$i]->nombre_producto = $editar->nombre_producto; 
	  		$campo_kpi_ant[$editar->desde][$i]->producto = $editar->producto; 
	  		$campo_kpi_ant[$editar->desde][$i]->valor_indicador = $editar->valor_memo; 
             if ($campo_kpi_ant[$editar->desde][$i]->producto == 2082 || $campo_kpi_ant[$editar->desde][$i]->producto == 2080) 
             {
             	unset($campo_kpi_ant[$editar->desde][$i]); 
             }
             else 
             {
             	$i += 1;
             }
		    
	  }
	  if ($desde != '')
	  {
		  $cantidad = count($campo_kpi_ant[$desde]); 
		  $cantidad2 = round(count($campo_kpi_ant[$desde])/2); 
		  if ($cantidad > 0)
		  {
			$j=0;
			$k=0;
			for ($i=0;$i<100;$i++)
			{
				if (isset($campo_kpi_ant[$desde][$i]))
				{
					if ($j>=$cantidad2)
					{
						$campo_kpi2_ant[$desde][$k] = $campo_kpi_ant[$desde][$i];
						$k+=1;
					}
					else 
					{
						$campo_kpi1_ant[$desde][$j] = $campo_kpi_ant[$desde][$i];
						$j+=1;
					}
				}
			}
		  }
	  }


	return array($campo_kpi, $campo_kpi1, $campo_kpi1_ant, $campo_kpi2, $campo_kpi2_ant, $esreadonly); 
	}





	
public static function updIndicadorManual() {
	$id = Request::input('contraparte');
	$indicador = Request::input('indicador') ?? null;
	$detalle = Request::input('detalle_indicador') ?? null;
	$detalle_fidelitas = Request::input('detalle_fidelitas') ?? null;
	$valor_indicador = Request::input('eleccion') ?? null;
	
	/*var_dump($indicador);
	var_dump($valor_indicador);
	var_dump($detalle);
	var_dump($detalle_fidelitas); die(); */
	$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', $indicador, $valor_indicador,$detalle,$detalle_fidelitas,Session::get('usuario')->as_user_id), 'selectOne');
	$ir_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',null,$id,null), 'selectOne');
	$cliente = Session::get('usuario')->cliente['client_id'];
	return 'ok';
}





/*
    public static function panelVrmSolicitarDdr(Request $req) {

		$contratista = $req->contratista;	
		$periodo = $req->periodo;

		//$vehiculos = SQLConnection::backendStoreProcedure('Imperium_Recursos_Contratista_fancy', array($contratista, 'V'), 'select');
		$vehiculos = []; 
		$vehiculos = SQLConnection::backendStoreProcedure('Imperium_Recursos_Contratista_fancy', array($contratista, 'V', NULL, $periodo), 'select');

		$pais = [];
		$tipos = [];
		$ult_periodos = []; 

		foreach ($vehiculos as $k => $veh) {
			$cc = strtolower($veh->country_code);
			$pais[$k]['info'] = $cc;
			$pais[$k]['country_name'] = $veh->country_name; 
			$pais[$k]['cls'] = 'flag-icon-' . $cc;
			$pais[$k]['val'] = '<span class=flag-icon flag-icon-background flag-icon-' . $cc .'></span>';
			$ult_periodos[$k]['periodo_Ym'] = $veh->ultimo_periodo;
			$vehiculos[$k]->edit = '<a style="cursor:pointer;" class="editveh" data-toggle="modal" data-target="#modalRecursos" data-vehiculo="' . $veh->vehiculo . '"><i class="fa fa-eye fa-2x"></i></a>';
		}
		$pais = array_map("unserialize", array_unique(array_map("serialize", $pais)));
		$ult_periodos = array_map("unserialize", array_unique(array_map("serialize", $ult_periodos)));

		//$tipos = array_map("unserialize", array_unique(array_map("serialize", $tipos)));
		$tipos = SQLConnection::backendStoreProcedure('Imperium_buscar_tipos_vehiculo', array($contratista), 'select');
		$estados = array( array('estado'=>'A', 'nombre_estado'=>'Activo'),
									array('estado'=>'N', 'nombre_estado'=>'No activo'),
									array('estado'=>'D', 'nombre_estado'=>'Desafectado') );

		$periodos = Misc::arrayPeriodos();
		if(empty($vehiculos))
		{
			$hay = 'NO';
		}
		else 
		{
			$hay = 'SI';
		}
		return json_encode(array('data'=>$vehiculos, 'pais'=>$pais, 'tipos'=>$tipos, 'hay'=>$hay, 'estados'=>$estados, 'periodos'=>$periodos, 'ult_periodos'=>$ult_periodos));
	}
*/





    public static function ledSocreArcor($id='') {
	    $cliente = Session::get('usuario')->cliente['client_id'];

	    if(!$id){
		    $id = Request::input('contraparte');
	    }


	    $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),'selectOne'); 

  	    $gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($qcontrap->contraparte), 'select');
	
  	    foreach ($gestiones as $key => $ges) { 
  		    if ($ges->duracion <= 60) {
  			    unset($gestiones[$key]); 
  		    }
  	    }

 	    $indicadores_score_arcor = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('indicadores_scores_arcor',NULL,$qcontrap->contraparte), 'select'); 

        $data_arcor = [];

        foreach ($gestiones as $ind => $ges) {

		    $dato_arcor = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion_arcor', null, null, 
			null, $id,
            NULL, 
            NULL,
            null,
            null,
            null,
            null,
            1,
            null, 
            0,
            $ges->desde)
            , 'select');



            foreach ($indicadores_score_arcor as $key => $ind) {
  			    foreach ($dato_arcor as $key2 => $datos) {
  				    if($datos->indicador == $ind->indicador) {
			            if     ($datos->valor_texto == 'R') { $datos->color = 'A52830';}
			            elseif ($datos->valor_texto == 'A') { $datos->color = 'FBB63D';}
			            elseif ($datos->valor_texto == 'V') { $datos->color = '52BA89';}
			            else   { $datos->color = 'c0c0c0';}
                        $data_arcor[$ges->desde][$key] = $datos; 
                    }
                }
            }

            //detalle_puntos
		
            $detalle_puntos1 = SQLConnection::backendStoreProcedure('LN_score_detalle_puntos_', array($id,$ges->desde,'2101'), 'selectOne'); // 2101 Producto Score Arcor
            if (isset($detalle_puntos1->detalle)) {
                $detalle_puntos1->detalle = str_replace('; ',"\n",$detalle_puntos1->detalle);
            }
            $detalle_puntos[$ges->desde] = $detalle_puntos1;

          
	    }

        $restricciones = []; 
        $restricciones = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('indicadores_restringidos',$qcontrap->cliente,Session::get('usuario')->user_id, $qcontrap->servicio_contratado));
		
		$vista_completa = 'SI';
        $vista = \View::make('/led/led_score_arcor')->with(compact('qcontrap', 'data_arcor','gestiones','restricciones','vista_completa','detalle_puntos'))->render();
        return $vista;
		  
    } 

	public function generarPDFHome(){
		$contenido = Request::input('contenido');
		$contraparte = Request::input('contrap');
		$cliente_id = Request::input('cliente');
		$nombre_cliente = Request::input('cliente_name');
		$cuit = Request::input('cuit');
		$grafico_score = Request::input('grafico');
		//--
		$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),'selectOne');
		//--
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes',array('select', $cliente_id, null, null, null));
		$cliente_name = isset($cli[0]) ? $cli[0]->nombre_cliente : '';
		//--
		$fecha_create = date("d/m/Y H:i");
		//-- 
		
        //--
		$logo = env('RUTA_CSS_PDF_ICNEW').'/public/'.Session::get('webdata')['uri_logo'];
        // 
		$css = Session::get('webdata')['uri_css2'];
		// 
		$html = '';
        $html .= view('/led/plantilla_led_home')->with(compact('cliente_name','fecha_create','contenido','grafico_score','cuit','nombre_cliente','cliente_id','logo','css','qcontrap'))->render();
		// 
		$nombre = $cuit."_contraparte".".html";
        $file = ENV('TEMP_PDF').'/'.$cliente_id.'/'.$nombre;
		$file_download = ENV('TEMP_PDF').'/'.$cliente_id.'/'.str_replace('.html', '.pdf', $nombre);
		//---- CUANDO GENERA EL ARHCIVO LO GUARDA EN ESPACIO TEMPORAL (OCCURE SIEMPRE)
		if(!is_dir(ENV('TEMP_PDF').'/'.$cliente_id)){
			mkdir(ENV('TEMP_PDF').'/'.$cliente_id, 0777,true);
		}
        //--
		file_put_contents($file,utf8_decode($html));
		chmod($file, 0777);
		exec("wkhtmltopdf -d 300 -L 10 -R 10 -T 10 -B 10 -O Landscape --enable-local-file-access --header-font-size 8 --header-right ' [page] de [toPage]'  --viewport-size 500x750 --zoom 1 ".$file." ".$file_download);
		//--
		$nombre_archivo = $nombre_cliente.'_'.$cuit.'.pdf';
		$response = array(
			'archivo' => $nombre_archivo,
			'file' => "data:application/pdf;base64,".base64_encode(file_get_contents($file_download)) 
		);
		//--se borran los archivos--//
		unlink($file_download);
		unlink($file);
		// --
		return $response;
	}

	public function generarPDFFidecheck(){
		$cliente_id = Session::get('usuario')->cliente['client_id'];
		$nombre_cliente = Request::input('cliente_name');
		$cuit = Request::input('cuit');
		//
		$contenido_propio = Request::input('propio') ;
		$contenido_relaciones = Request::input('relaciones');
		$contenido_socios = Request::input('socios');
		$contenido_directivos = Request::input('directivos');
		//--
		$fecha_create = date("d/m/Y H:i");
        //--
		/* $logo = env('RUTA_CSS_PDF_ICNEW').'/public/'.Session::get('webdata')['uri_logo']; */
		$vHost = Session::get('webdata')['http_host'];
		$vlogo = Session::get('webdata')['uri_logo'];
		//
		$vHost = str_replace('.int','.com',$vHost);
		$vLogoPath = str_replace('http://','',$vlogo);
		$vLogoPath = str_replace('https://','',$vLogoPath);
		//
		$vLogoPath = str_replace($vHost,'',$vLogoPath);
		//
		$logo = $logo = env('RUTA_CSS_PDF_ICNEW').'/public/'.$vLogoPath;

        // 
		$css = Session::get('webdata')['uri_css2'];
		// 
		$html = '';
        $html .= view('/led/plantilla_led_fidecheck')->with(compact('nombre_cliente','contenido_propio', 'contenido_relaciones', 'contenido_socios', 'contenido_directivos','fecha_create','cliente_id','logo','css'))->render();
		// 
		$nombre = "_fidecheck_contraparte".".html";
        $file = ENV('TEMP_PDF').'/'.$cliente_id.'/'.$nombre;
		$file_download = ENV('TEMP_PDF').'/'.$cliente_id.'/'.str_replace('.html', '.pdf', $nombre);
		//---- CUANDO GENERA EL ARHCIVO LO GUARDA EN ESPACIO TEMPORAL (OCCURE SIEMPRE)
		if(!is_dir(ENV('TEMP_PDF').'/'.$cliente_id)){
			mkdir(ENV('TEMP_PDF').'/'.$cliente_id, 0777,true);
		}
        //--
		file_put_contents($file,utf8_decode($html));
		chmod($file, 0777);
		exec("wkhtmltopdf -d 300 -L 10 -R 10 -T 10 -B 10 -O Landscape --enable-local-file-access --header-font-size 8 --header-right ' [page] de [toPage]'  --viewport-size 500x750 --zoom 1 ".$file." ".$file_download);
		//--
		$nombre_archivo = $nombre_cliente.'_'.$cuit.'.pdf';
		$response = array(
			'archivo' => $nombre_archivo,
			'file' => "data:application/pdf;base64,".base64_encode(file_get_contents($file_download)) 
		);
		//--se borran los archivos--//
		unlink($file_download);
		unlink($file);
		// --
		return $response;
	}

	public function generarPDFDossier(){
		$cliente_id = Session::get('usuario')->cliente['client_id'];
		$nombre_cliente = Request::input('cliente_name');
		$cuit = Request::input('cuit');
		$dossier = Request::input('dossier');
		//--
		$fecha_create = date("d/m/Y H:i");
        //--
		/* $logo = env('RUTA_CSS_PDF_ICNEW').'/public/'.Session::get('webdata')['uri_logo']; */
		$vHost = Session::get('webdata')['http_host'];
		$vlogo = Session::get('webdata')['uri_logo'];
		//
		$vHost = str_replace('.int','.com',$vHost);
		$vLogoPath = str_replace('http://','',$vlogo);
		$vLogoPath = str_replace('https://','',$vLogoPath);
		//
		$vLogoPath = str_replace($vHost,'',$vLogoPath);
		//
		$logo = $logo = env('RUTA_CSS_PDF_ICNEW').'/public/'.$vLogoPath;

        // 
		$css = Session::get('webdata')['uri_css2'];
		// 
		$html = '';
        $html .= view('/led/plantilla_led_dossier')->with(compact('dossier','nombre_cliente','fecha_create','cliente_id','logo','css'))->render();
		// 
		$nombre = "_dossier_contraparte".".html";
        $file = ENV('TEMP_PDF').'/'.$cliente_id.'/'.$nombre;
		$file_download = ENV('TEMP_PDF').'/'.$cliente_id.'/'.str_replace('.html', '.pdf', $nombre);
		//---- CUANDO GENERA EL ARHCIVO LO GUARDA EN ESPACIO TEMPORAL (OCCURE SIEMPRE)
		if(!is_dir(ENV('TEMP_PDF').'/'.$cliente_id)){
			mkdir(ENV('TEMP_PDF').'/'.$cliente_id, 0777,true);
		}
        //--
		file_put_contents($file,utf8_decode($html));
		chmod($file, 0777);
		exec("wkhtmltopdf -d 300 -L 10 -R 10 -T 10 -B 10 -O Landscape --enable-local-file-access --header-font-size 8 --header-right ' [page] de [toPage]'  --viewport-size 500x750 --zoom 1 ".$file." ".$file_download);
		//--
		$nombre_archivo = $nombre_cliente.'_'.$cuit.'.pdf';
		$response = array(
			'archivo' => $nombre_archivo,
			'file' => "data:application/pdf;base64,".base64_encode(file_get_contents($file_download)) 
		);
		//--se borran los archivos--//
		unlink($file_download);
		unlink($file);
		// --
		return $response;
	}
	



// Reporte Sostenibilidad 

public function ledExcelSostenibilidad_contrapartesG(){
	return self::ledExcelSostenibilidad_contrapartes('G');
}
public function ledExcelSostenibilidad_contrapartesP(){
	return self::ledExcelSostenibilidad_contrapartes('P');
}
public function ledExcelSostenibilidad_contrapartesA(){
	return self::ledExcelSostenibilidad_contrapartes('A');
}

public function ledExcelSostenibilidad_contrapartes($tipo){
		if ($tipo=='G') { $tipo_doc = 1230;}
		if ($tipo=='P') { $tipo_doc = 1231;}
		if ($tipo=='A') { $tipo_doc = 1232;}
		$cliente = Session::get('usuario')->cliente['client_id'];
		$nombre_documento = new stdClass(); 
		$nombre_documento = ''; 
		$contrapartes = SQLConnection::backendStoreProcedure('LN_excel_Sostenibilidad_contrapartes', array($cliente,$tipo_doc), 'select');
		if (isset($contrapartes))
		{
			foreach ($contrapartes as $tit) {
				$nombre_documento = $tit->nombre_tipo_doc; 
				break; 
			}
		}
		$navtext = 'Reporte RSE';
		return view('/led/led_sostenibilidad_contrapartes')->with(compact(['contrapartes','nombre_documento','navtext','tipo_doc','tipo']));
	}

	public function ledExcelSostenibilidad(){
		$cliente = Session::get('usuario')->cliente['client_id'];
		//$cliente = 5546348; 
		$tipo_doc = Request::input('tipo_doc'); 
		$tipo = Request::input('tipo'); 

		$ids = ""; 
		if(!empty(Request::input('contraparte'))) {
			foreach (Request::input('contraparte') as $k => $contraparte) {
				if ($ids == "") { $ids = $contraparte; }
				else { $ids .= ",".$contraparte; }
			}
		}
		else
		{
			return; 
		}

		$Reporte_titulos = SQLConnection::backendStoreProcedure('LN_excel_Sostenibilidad_titulos', array($tipo_doc), 'select');
		$Reporte = SQLConnection::backendStoreProcedure('LN_excel_Sostenibilidad', array($cliente, $ids, $tipo_doc), 'select');
		$titulos = [];
		$contrapartes = []; 
		$secciones = []; 
		$secciones['gestion'] = ''; 
		$secciones['fecha'] = ''; 
		$secciones['pais'] = ''; 
		$secciones['familia'] = ''; 
		$secciones['nombre'] = '';  
		$secciones['tax_id'] = '';
		$titulos['gestion'] = 'GESTION'; 
		$titulos['fecha'] = 'FECHA GESTION'; 
		$titulos['pais'] = 'PAIS'; 
		$titulos['familia'] = 'FAMILIA'; 
		$titulos['nombre'] = 'RAZON SOCIAL';  
		$titulos['tax_id'] = 'IDENTIFICACION';
		foreach ($Reporte_titulos as $doc) {					
						if ($doc->campo_id !== null && $doc->campo_id !== '')		
						{
							$secciones[$doc->campo_id] = $doc->seccion; 
							$titulos[$doc->campo_id] = $doc->titulo; 
						} 
						
		}
		foreach ($Reporte as $doc) {
						$contrapartes[$doc->contraparte][$doc->fecha_gestion]['gestion'] = $doc->actual; 
						$contrapartes[$doc->contraparte][$doc->fecha_gestion]['fecha']   = $doc->fecha_gestion;
						$contrapartes[$doc->contraparte][$doc->fecha_gestion]['pais']    = $doc->pais; 
						$contrapartes[$doc->contraparte][$doc->fecha_gestion]['familia'] = $doc->familia; 
						$contrapartes[$doc->contraparte][$doc->fecha_gestion]['nombre']  = $doc->nombre; 
						$contrapartes[$doc->contraparte][$doc->fecha_gestion]['tax_id']  = $doc->tax_id; 
						$contrapartes[$doc->contraparte][$doc->fecha_gestion][$doc->campo_id] = $doc->resultado; 
		}

		$file = '<table border="1">';
		$file .= '<tr>';
		foreach ($secciones as $tit) {
				$file .= "<td>" . $tit . "</td>";
		}
		$file .= '</tr>'; 
		$file .= '<tr>';
		foreach ($titulos as $tit) {
				$file .= "<td>" . $tit . "</td>";
		}
		$file .= '</tr>'; 
    
		foreach($contrapartes as $key1 => $contrapartes1){
		foreach($contrapartes1 as $key => $contraparte){
			$file .=  '<tr valign="top">';
			foreach($titulos as $keytit => $tit) {
				$esta = 'no';
				foreach($contraparte as $key2 => $valor)
				{
					if ($keytit == $key2)
					{
						$esta = 'si'; 
						$file .= "<td>".$valor . "</td>" ; 
						break; 
					}
				}
				if ($esta == 'no')
				{
					$file .= 	"<td></td>" ; 
				}
			}
			$file .=  '</tr>';
		}
		}
		
		$file .= '</table>'; 
    	$fecha = date("Y-m-d");
    	header('Content-disposition: attachment; filename=Reporte_Sostenibilidad_' . $tipo . '_' . $fecha . '.xls');
		header('Content-type: application/vnd.ms-excel; charset=utf-8');
		$file = utf8_decode($file);
		echo $file;
		return; 
	}



public static function ledDebidaDiligencia($id=null,$datos_vista='vista')
{
		if ($datos_vista=='datos')
		{
			$esreadonly = 'readonly disabled';
		}
		else
		{
			$esreadonly = '';
		}
		if(!$id){
			$id = Request::input('contraparte');
		}
		$prod = Request::input('producto') ?? '2105';
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, 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');
		
		$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($id), 'select');
		$debida = [];
	    $docs = [];
		$files = [];
		$files_2 = [];
		$comentarios = []; 
		$campo = []; 
		$observaciones = [];
		foreach ($gestiones as $key => $ges)  // 23/10/2020 No mostramos las gestiones de menos de 60 días, son las que cargan por cargarlas.... 
	  	{
	  		if ($ges->duracion <= 60)
	  		{
	  			unset($gestiones[$key]); 
	  		}
	  	}
		$n = -1;
	  	foreach ($gestiones as $keyg => $ges)
	  	{
		$debida[$ges->desde] = SQLConnection::backendStoreProcedure('LN_indicadores_producto', array($id,2105,$ges->gestion),'selectAll');
		$comentarios[$ges->desde] = SQLConnection::backendStoreProcedure('LN_contraparte_comentarios_', array($id,$ges->desde,null,null,'2105'),'select');
		/*
		$docs1[$ges->desde] = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array(
				'DOCUMENTOS_POR_GESTION', $id, 
				null, null, null, null, null, null, null, null, null, null, null, null, null,
				null, null, null, null, null, null, $ges->desde));
		// Poner los documentos de Debida Diligencia 
			foreach ($docs1[$ges->desde] as $key => $doc) {
				if  ($doc->tipo_doc !== '1244' &&
					 $doc->tipo_doc !== '1243' &&
					 $doc->tipo_doc !== '1242' &&
					 $doc->tipo_doc !== '1240' &&
					 $doc->tipo_doc !== '1239' &&
					 $doc->tipo_doc !== '1234' &&
					 $doc->tipo_doc !== '1241' &&
					 $doc->tipo_doc !== '1245' &&
					 $doc->tipo_doc !== '1246' 
					)   
				{
					continue; 
				}
				$clave_indicador = '';
				if ($doc->tipo_doc == '1244') 
					{	
						$clave_indicador = 'DD_anexo_a_6'; 
					}
				if ($doc->tipo_doc == '1243')
					{	
						$clave_indicador = 'DD_anexo_a_5'; 
					}
				if ($doc->tipo_doc == '1242')
					{	
						$clave_indicador = 'DD_anexo_a_4'; 
					}
				if ($doc->tipo_doc == '1240')
					{	
						$clave_indicador = 'DD_anexo_a_3'; 
					}
				if ($doc->tipo_doc == '1239')
					{	
						$clave_indicador = 'DD_anexo_a_2'; 
					}
				if ($doc->tipo_doc == '1234')
					{	
						$clave_indicador = 'DD_anexo_a_1'; 
					}
				if ($doc->tipo_doc == '1241')
					{	
						$clave_indicador = 'DD_anexo_a'; 
					}

				$doc->score_val   = '';
				$doc->score_txt   = '';
				$doc->score_color = '';
				if ($clave_indicador !== '')
				{
					foreach ($debida[$ges->desde] as $key2 => $value) 
					{
						if (strtoupper($value->clave_indicador) == strtoupper($clave_indicador))
						{
							$doc->score_val   = $value->valor_numerico;
							$doc->score_txt   = $value->valor_memo;
							$doc->score_color = $value->color;
						}
					}
				}	
				$docs[$ges->desde][] = $doc;
				if ($doc->estado_doc !== 'N') 
				{
					$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';
					$file_exists = file_exists($file_path);
					$files[$ges->desde][$n]['path'] = $file_path;
					$files[$ges->desde][$n]['url'] = $file_url;
					$files[$ges->desde][$n]['exists'] = $file_exists;
				}

			}*/

			/* Documentos de Análisis de Debida Diligencia */ 

			$file_path = env('PATH_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $qcontrap->contraparte . '/' . $ges->gestion . '/dd.pdf';
			$file_url = env('RUTA_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $qcontrap->contraparte . '/' . $ges->gestion . '/dd.pdf';
			$file_exists = file_exists($file_path);
			$files[$ges->desde]['path']   = $file_path;
			$files[$ges->desde]['url']    = $file_url;
			$files[$ges->desde]['exists'] = $file_exists;


			/* Documentos de Informe Final Debida Diligencia */ 

			$file_path = env('PATH_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $qcontrap->contraparte . '/' . $ges->gestion . '/informe_final_dd.pdf';
			$file_url = env('RUTA_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $qcontrap->contraparte . '/' . $ges->gestion . '/informe_final_dd.pdf';
			$file_exists = file_exists($file_path);
			$files_2[$ges->desde]['path']   = $file_path;
			$files_2[$ges->desde]['url']    = $file_url;
			$files_2[$ges->desde]['exists'] = $file_exists;

			$campo[$ges->desde] = []; 
			foreach ($debida[$ges->desde] as $key => $DD) {
				if ($DD->tipo_valoracion =='F')
				{
					$campo[$ges->desde][$key] = self::indicadorEditables($qcontrap->contraparte,$DD->indicador); 
				}
			}
			//var_dump($campo); die(); 
			//var_dump($comentarios); die(); 


			$detalle_comentarios1 = SQLConnection::backendStoreProcedure('LN_contraparte_comentarios_', array($qcontrap->contraparte,$ges->desde), 'selectOne');
			$detalle_comentarios1->detalle = str_replace('COMENTARIO INTERNO CLIENTE - ','',$detalle_comentarios1->detalle);
	        if (isset($detalle_comentarios1->detalle)) {
	            $detalle_comentarios1->detalle = str_replace('; ',"\n",$detalle_comentarios1->detalle);
	        }
	        $detalle_comentarios[$ges->desde] = $detalle_comentarios1;

	        $observaciones[$ges->desde] = new stdClass();
	        $observaciones[$ges->desde]->detalle = ''; 
		 
		    if (!empty($detalle_comentarios[$ges->desde]) && $detalle_comentarios[$ges->desde]->detalle !== NULL) {
			    $observaciones[$ges->desde]->detalle  .= /*'- Comentarios: '. "\n" . */$detalle_comentarios[$ges->desde]->detalle  . "\n"; 
		    }	
		}

		$vista = \View::make('/led/led_debida_diligencia_gestiones')->with(compact('qcontrap', 'gestiones','debida','docs','qproducto','campo','files','files_2','comentarios','observaciones'))->render();

		return $vista;
	}


	public function DDUpload() {
		$id 	 = Request::input('contraparte');
		$gestion = Request::input('gestion');
		$cliente = Request::input('cliente');
		$modo="R";
		if (!empty($_FILES['archivo_infdd']) && $_FILES['archivo_infdd']['name'] !== '') {
			$userfile_name = $_FILES['archivo_infdd']['name'];
			$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);
			$ftype = strtolower($userfile_extn); 
			if($ftype == 'pdf') {
				if( basename($_FILES['archivo_infdd']['name']) !='' ) {
					if ($modo=="R")
					{
			      		$path = env('PATH_DOCUMENTOS') . '/' . $cliente . '/' . $id . '/' . $gestion . '/informe_final_dd.pdf';
						$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
						if(!is_dir(env('PATH_DOCUMENTOS') . '/' . $cliente . '/' . $id . '/' . $gestion)){
						   mkdir(env('PATH_DOCUMENTOS') . '/' . $cliente . '/' . $id . '/' . $gestion, 0777,true);
				    }
					move_uploaded_file($_FILES['archivo_infdd']['tmp_name'], $path);
					chmod($path, 0777);
					$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se adjunta Archivo Final DD', $cliente, 'COMENTARIO_CLIENTE','WWW', $id,Session::get('usuario')->as_user_id),'selectOne');
					$trazabilidad2 = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'SUBIR_ARCHIVO',542,null,null,null,Session::get('usuario')->as_user_id), 'selectOne');
					}
				}
			}
		}

		$vista_debida = self::ledDebidaDiligencia($id); 
		return array('vista_debida' => $vista_debida);	
	}




  public function obtenerHistorialAcciones(){
	return view('led/historial_acciones');
  }
  public function obtenerITerceros(){
  	$cliente  = Session::get('usuario')->cliente["client_id"];
  	$conexiones_it = [];

	$params = array('select',$cliente);
	$datos_it = SQLConnection::backendStoreProcedure("ITerceros_clientes",$params,'selectOne');
	//$conexiones_it = SQLConnection::backendStoreProcedure("ITerceros_conexiones_select",array($cliente),'select');

	return view('led/iterceros')->with(compact('datos_it',/*'conexiones_it',*/'cliente'));
  }

  	public function actualizarITerceros(){
		//var_dump('actualizarDatosIntegracionTerceros'); die(); 
		$cliente = Request::input('cliente');
		$usuario = Request::input('usuario');
		$codEmpresa = Request::input('codEmpresa');
		$ptoTrabajo = Request::input('ptoTrabajo');
		$escenario = Request::input('escenario');
		$vista = Request::input('vista');
		$url = Request::input('url');
		$params = array('update', $cliente, $usuario, $codEmpresa, $ptoTrabajo, $escenario, $vista, $url); 
		$actualiza = SQLConnection::backendStoreProcedure('ITerceros_clientes', $params, 'selectOne');
		return json_encode($actualiza->error ?? 1);
	}
  
  public function filtrarHistorialAcciones(){
	$fecha_desde = Request::input('fecha_desde_con');
	$fecha_hasta = Request::input('fecha_hasta_con');
	$id_cliente  = Session::get('usuario')->cliente["client_id"];
	$user_id   = Session::get('usuario')->user_id;
	
	if ($fecha_desde == '') { $fecha_desde = ' ';}
	if ($fecha_hasta == '') { $fecha_hasta = ' ';}
	$fecha_desde_dmy = substr($fecha_desde, 8, 2) . "/" . substr($fecha_desde, 5, 2) . "/" . substr($fecha_desde, 0, 4);
	$fecha_hasta_dmy = substr($fecha_hasta, 8, 2) . "/" . substr($fecha_hasta, 5, 2) . "/" . substr($fecha_hasta, 0, 4);

	$conexiones = [];
	$acciones   = [];
	$conexiones = SQLConnection::backendStoreProcedure('LN_Historial_acciones', array('conexiones',$id_cliente,$fecha_desde,$fecha_hasta),'select');
	$acciones   = SQLConnection::backendStoreProcedure('LN_Historial_acciones', array('acciones',$id_cliente,$fecha_desde,$fecha_hasta),'select');

	return view('led/tabla_historial_acciones')->with(compact('conexiones','acciones','fecha_desde_dmy','fecha_hasta_dmy')); 
  }




}
