<?php namespace App\Http\Controllers; 
 
use App\Custom\SQLConnection; 
use App\Custom\Misc;  
use App\Custom\Mailer;
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 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 LEDController83 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'];
	  	$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');
	//	dd($test);
		
		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');
				}
				 
			}
		}


		//dd($graficos_todos["GRAPH_CONTRAPARTES_CUMPLIMIENTO"]);
		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_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);
				}

			}
		}
		//dd($graficos_todos['GRAPH_IMPE_STATUS']);

//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;
				$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));

		//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');
		
		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,null,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');
			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']));

		}
		else
		{ 
			return view('/led/led_contrapartes_new_gestion_contraparte')->with(compact(['cliente', 'datos_cliente', 'padron','contrapartes','modalidad_pago','cliente_paises','servicio','cliente_pais']));
		}
	}


	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');
		
		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']));


	}

	
	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;

		$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']));
	}

	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');
		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 
		$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");
		//return view('/led/led_contrapartes_new')->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','servicio','cliente_paises','cliente_pais','familias_todas','idiomas']));
		$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']));

	
	}

	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;

	
		$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; 

		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']));
	}

/*
	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,$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,$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');
		//echo(var_dump($padron));die();
		// 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;
		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;
		$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;
		
		$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, $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 
		{   // 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), '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

			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($txt_nuevo, $cliente, 'ALTA_CONTRAPARTE_BACKEND','BACK', $contraparte,$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,$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';
			}
			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($texto, $cliente, 'TIPO_INFORME_BACKEND','BLUE', $contraparte,$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;
		//------------
		$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; 
					SQLConnection::backendStoreProcedure('LN_ic_historico_pdf_',array('INSERTAR',$contraparte,$gestion,$user_id));
					break; 
				}
			}
		}
		/*-----------------------------------------------------------------------------------*/
		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');
		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'));

	}


/*
	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');
		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';

			$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.
						$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se agregó una familia', $cli, 'AGREGAR_FAMILIA_CONTRAPARTE_WWW','WWW', $contrap), 'selectOne');
						$ingresar_una_vez = false;
					}
					//die();
					$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('insert' , $contrap, $marked , NULL, NULL, 1, Session::get('usuario')->user_id), 'selectOne');

					if ($servicio == '73') 
						{
						$temp2 = SQLConnection::backendStoreProcedure('LN_alta_Contratistas', array('update', $cli, null, $marked, null, null, $contrap, $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');
		}
		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), 'selectOne');
			}else{
				//Trazabilidad actualizar estado a Habilitado.
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se deshabilitó la Contraparte', $cli, 'DESHABILITACION_CONTRAPARTE_WWW','WWW', $contrap), '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'");
			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 ($doc->es_foto_perfil > 0) {
			$busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $doc->contraparte), 'selectOne');
			if (!empty($busqueda)) {
				$foto_perfil_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->foto;
			}
		}


		$hay_campos = false;
		$hay_archivo = false;
		foreach ($flds as $fld) {
			$hay_campos = !$hay_campos ? ($fld->tipo_campo != 'F' ? true : $hay_campos) : $hay_campos;
			$hay_archivo = !$hay_archivo ? ($fld->tipo_campo == 'F' ? true : $hay_archivo) : $hay_archivo;
		}

		$secciones = [];

		$data = [];
		foreach ($flds as $k => $fld) {
			if ($fld->tipo_campo=='G') {

				/* encabezados de la tabla */
				$c1 = SQLConnection::backendStoreProcedure('LN_campos_col_', array('search', $fld->campo, null, null, null, null, null, null), 'select');
				$cols=[];
				foreach ($c1 as $clm) {
					$cols[] = $clm->etiqueta;
				}

				/* configuración de los campos y valores de la tabla */
				$c2 = SQLConnection::backendStoreProcedure('LN_doc_campos_col_', array($fld->doc_id, $fld->seccion, $fld->campo), 'select');
				$valores = [];
				foreach ($c2 as $k1 => $valor) {
					$valores[$valor->fila][$valor->col]['valor_texto'] = $valor->valor_texto;
					$valores[$valor->fila][$valor->col]['valor_fecha'] = $valor->valor_fecha;
					$valores[$valor->fila][$valor->col]['valor_fecha_str'] = $valor->valor_fecha_str;
					$valores[$valor->fila][$valor->col]['valor_numerico'] = $valor->valor_numerico;
					$valores[$valor->fila][$valor->col]['tipo_campo'] = $valor->tipo_campo;
					$valores[$valor->fila][$valor->col]['longitud'] = $valor->longitud;
					$valores[$valor->fila][$valor->col]['decimales'] = $valor->decimales;

					//$valores[$valor->fila][$valor->col]['opciones'] = $valor->opciones;

					if ($valor->tipo_campo == 'S' or $valor->tipo_campo == 'R' or $valor->tipo_campo == 'C') {
						if (strlen($valor->opciones) > 0) {
							$r = explode("^", $valor->opciones);
							$txt = [];
							$val = [];
							if (sizeof($r) >= 2) {
								$txt = explode("|", $r[0]);
								$val = explode("|", $r[1]);
							}
							$valores[$valor->fila][$valor->col]['opciones']['txt'] = $txt;
							$valores[$valor->fila][$valor->col]['opciones']['val'] = $val;
						}
					}
				}

				$fld->headers = $cols;
				$fld->values = $valores;
			} else {

				/* campo no tabla */

				if ($fld->tipo_campo == 'S' or $fld->tipo_campo == 'R' or $fld->tipo_campo == 'C') {
					$valores = [];

					if (strlen($fld->opciones) > 0) {
						$r = explode("^", $fld->opciones);
						$txt = [];
						$val = [];
						if (sizeof($r) >= 2) {
							$txt = explode("|", $r[0]);
							$val = explode("|", $r[1]);
						}
						$valores[] = $txt;
						$valores[] = $val;
					}

					$fld->opciones = $valores;
				}
			}

			$data[$fld->titulo_seccion][] = $fld;

			if ($fld->titulo_seccion != '') {
				$secciones[$fld->titulo_seccion]['texto_bajada'] = $fld->texto_bajada;
				$secciones[$fld->titulo_seccion]['texto_pie'] = $fld->texto_pie;
			}
		}

		if ($doc->es_balance > 0) {
			/*$file_path = env('PATH_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';
			$file_url = env('RUTA_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';	  */

			$file_path = env('PATH_COMPARTIDO') . '/' . $doc->ruta_archivo;
			$file_url = env('RUTA_COMPARTIDO') . '/' . $doc->ruta_archivo;
		} else {
			$file_path = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
			$file_url = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
		}

		$file_exists = file_exists($file_path);

		//dd( strpos( $_SERVER['REQUEST_URI'], '/led/') );
		//dd($doc);

		$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);

		//dd($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;
    dd($cliente); 

		$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][] = '';
				}
			}
		}
		//dd($valores[79]['homologacion']);
		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()
	{


		//var_dump(Session::get('usuario')->servicios); die(); 
		//var_dump(Session::get('servicio_actual')); die(); 

		ini_set('memory_limit','4096M');
		$cliente = Session::get('usuario')->cliente['client_id'];
		$servicio_actual  = Session::get('servicio_actual');
		//var_dump($servicio_actual); die();
		$contratista_subcontratista = Request::input('contratista_subcontratista') ?? 'C';	
		$vrm = Request::input('vrm') ?? '1'; 

		if ($servicio_actual == '73')
		{
			$contratista_subcontratista = 'I';
		}

		//if ($cliente == 9936068) { $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'; 
		}
		//var_dump($file);die(); 

		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;
		//var_dump(Request::input('lista_contrapartes')); die(); 
		/*if (Session::get('usuario')->user_id=='94437923') { $lista_contrapartes = '84,111'; } */
		$array_contrapartes = explode(",", $lista_contrapartes);
		//var_dump($array_contrapartes); die(); 
		$valor_texto				= ( '' !==Request::input('valor_texto')) ? Request::input('valor_texto') : null;
		// 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;
		//$valor_max = (null != $valor_max) ? ( ($valor_max % 10 == 1) ? $valor_max-1+0.01 : $valor_max ) : $valor_max;
		//$valor_min = (0 == $valor_min) ? (-100) : $valor_min;
		//$valor_max = (100 == $valor_max) ? 101  : $valor_max;
		/*print_r($clave_indicador); 
		print_r($valor_min); 
		print_r($valor_max); 
		print_r($valor_texto); 
		die(); */
		//dd($valor_max); 
		
		
		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(env('LED_PRODUCTO') == $key_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);
								}
							}
						}
					}

					$productos_habilitados = [];
					$indicadores_habilitados_usuario = [];
					//dd($resultado->titulos); 
					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 
		{
			$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) 
		{
			$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';  
							// 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;
			 	}
	}

	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), 'select');
		
		       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>';

            }else if($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($resp);
	}


  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');
		// 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', array('contrapartes', 73, $cliente, $filtro_pais, $filtro_familia, NULL), 'select');
			$indic = SQLConnection::backendStoreProcedure('LED_PANEL_CONTROL', 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');
		}

		//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', $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', $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'; 	
		}

		//var_dump($file); die(); 
//dd($valores['107153']); die(); 

		$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)
		{
		file_put_contents($file_actual, $resp); 
		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;
//dd(Request::input());
		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; 
		/*
		$icon_subc = '';
		if (Session::get('usuario')->user_id=='122371307' || Session::get('usuario')->user_id=='94437923') 
		{$tiene_subc = 1; 
		$icon_subc = 'fa fa-sitemap';
		}
		else 
		{ $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;

		}
		//dd($prodind);


		$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);
		}

		//dd($valores[107]);

		$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);
	}
	//dd($motivos_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;
			}
			//dd($prodind);

			foreach ($prodind as $nombre_producto => $indicadores) {
				foreach ($indicadores as $key => $data) {
					$aind[] = $key;
				}
			}

			//dd($aind);

			$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;
				}
			}
			//dd($valores);


			$file = 'PAIS' . "\t" . 'FAMILIA' . "\t" . 'RAZON SOCIAL' . "\t" . "IDENTIFICACION";

			foreach ($prodind as $nombre_producto => $ìndicadores) {
				if (!empty($ìndicadores)) {
					//dd($ì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 ledExcelPanelControl()
	{
		$cliente = Session::get('usuario')->cliente['client_id'];
		$ids = null != Request::input('ids') ? Request::input('ids') : null;
		//$ids = 95;
		//$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, null, null, null), 'select');
		$contrap = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, $ids), 'select');
		$personal = SQLConnection::backendStoreProcedure('LN_panel_control_excel_personal', 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');

		$array_ids = explode(",", $ids);
		$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);

		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->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=="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";
			}
		}
		foreach ($prodind as $nombre_producto => $indicadores) {
			foreach ($indicadores as $key => $data) {
				$aind[] = $key;
			}
		}


		$titulo_personal = [];
		foreach ($empleados as $key => $data) {
			foreach ($data as $key => $tit) {
				$titulo_personal[$key] = $key;
			}
		}

		//var_dump($titulo_personal); die();

		$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;
				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'] = '';
					}
				}
			}
		}
		
		//dd($valores);

		$file = '<table border="1">';
		$file .= '<tr><td>PAIS' . "</td><td>" . 'FAMILIA' . "</td><td>" . 'RAZON SOCIAL' . "</td><td>" . "IDENTIFICACION" . "</td><td>INICIO GESTION</td>" . "</td><td>DIAS GESTION</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>";
					//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 .= "<td>Detalle Rechazos</td>";
		foreach ($titulo_personal as $key => $tit) {
			$file .= "<td>" . $key. "</td>";
		}
		$file .= '</tr>';
		
		$hay = new stdClass();

		foreach ($contrap as $contraparte) {
			$file .=  '<tr valign="top">';
			$file .= "<td>".$contraparte->country_name . "</td>" .
						"<td>".$contraparte->nombre_familia . "</td>" .
						"<td>".$contraparte->nombre_persona . "</td>" .
						"<td>".$contraparte->abreviatura . " " . $contraparte->numero . "</td>" .
						"<td>".$contraparte->inicio_gestion . "</td>" .
						"<td>".$contraparte->dias_gestion . "</td>";
			
			  //  foreach ($aind as $k => $id) {
			  //  print_r($id."\r\n");
			//}

			//print_r("\r\n\r\n". $contraparte->nombre_persona . " -- ". $valores[$contraparte->contraparte][6]);
			//die();
			
			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 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]);
					}
				}
				$file .= "<td>" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>";
				break;
			  }
			}
			$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>";
				}
			}
				
			$file .= '</tr>';
		}
		$file .= '</table>';
		header('Content-disposition: attachment; filename=led_panel_control_' . $cliente . '.xls');
		header('Content-type: application/vnd.ms-excel; charset=utf-8');
		$file = utf8_decode($file);
		echo $file;
	}
	*/

	public function ledExcelPanelControl(){

        ini_set('memory_limit','4096M');
        ini_set('max_execution_time', 1000); // 1000 segundos

    	$servicio_actual  = Session::get('servicio_actual');
	    set_time_limit(0); 
        $cliente = Session::get('usuario')->cliente['client_id'];
        $ids = null != Request::input('ids') ? Request::input('ids') : null;
        $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);
        /* CHANCHADA: Cuando se arregle que se puedan pedir mas de 1000 ids sacar esto: */
        if (count($array_ids) >= 1000)
            { $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;
            }
	    }
        /**/

        //$ids = 95;
        /*$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, null, null, null), 'select');*/
        $contrap = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, $ids, $servicio_actual), 'select');
        $personal = []; 

        if ($cliente == 5546348) {
            $personal = SQLConnection::backendStoreProcedure('LN_panel_control_excel_personal', array($cliente, $ids, $servicio_actual), 'select');
        }

	    $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; 
            }
        }

        $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 ($prod == $indicador->producto) {
                        foreach ($habilitado as $hab) {
                            if ($hab == $indicador->indicador){ 
                                $sacar = null;
                                break;
                            }
                        }
                    }
                }
                if ($sacar !== null) {
                    unset($ind[$key]);
                }
            }
        }
        //$array_ids = explode(",", $ids);
        $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; 
            }
        }

        /* AGB 30-11-2021 REPORTE PANEL HISTORICO PAE VER CON ALEJANDRO */
        /*if ($cliente == 2046807993)
        {
            $led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA_HIST', $cliente, null, null, null), 'select');	
        }
        else
        {
            $led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA', $cliente, null, null, null), 'select');
        }*/

        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', $cliente, null, null, null, null, null, null, null, null, null, 1,null,0,null,Session::get('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;
                $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]);
								    }
								}
							}
						}
					}
				}
			}
		}

        /************************************************************/
        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>";
        }

        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>";
        }

        $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>";
            }
        
            $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) {
            print_r($id."\r\n"); 
            }
                
            print_r("\r\n\r\n". $contraparte->nombre_persona . " -- ". $valores[$contraparte->contraparte][6]); 
            die(); 
            */

            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 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') { 
                                // 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;
                }
            }

            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>";
                }
            }
    
            $file .= '</tr>'; 
    
        }
        $file .= '</table>';

        if ($periodo_historico==null) {
            $fecha = date("Y-m-d");
            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 arregle que se puedan pedir mas de 1000 ids sacar esto: */
	if (count($array_ids) >= 1000)
		{ $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');

	//dd($led);
	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');

	$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);
	}
/*var_dump("antes:"); 
var_dump($productos); 
var_dump($cliente); */
//	if ($cliente !== '515494256')
//	{	
	$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) 
						{
						$productos_temp[] = $productos[$key_prod];
						}
				} */
				/* 
					if($value->producto == $producto->producto) 
						{
						$productos_temp[] = $productos[$key_prod];
						}
				}
				//CHANCHADA LT 09/07/2020 (la pestaña informe comercial es igual si es 2003 ó 2016, si tiene alguno de los 2 se los agrego)
				//14/07/2020: se cambio el stored para que devuelva ambos productos sin distincion de pais, si los tiene, por eso se saco esto 
				//if($producto->producto == '2003' || $producto->producto == '2016'){
					//$productos_temp[] = $productos[$key_prod];
				//}
				if($producto->producto == '2003' || $producto->producto == '2016'){
						$pp = null; 
						$pp = array_search('informeComercial', array_column($productos_temp, 'producto_id')); 
						if ($pp == null)
						{
						$productos_temp[] = $productos[$key_prod];
						}
				}
				*/
				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];
					}
				}
			}
		}
		//$productos = $productos_temp;

		//----  PARCHE BALANCES - FIDECHECK  -------------------------------------------------------------------//
		/* $productos_temp = [];
		$contador_balances = 0;
		$contador_fidecheck = 0;
		for ($i=0; $i < count($productos); $i++) { 
			if($productos[$i]->producto_id == 'balances' && $contador_balances == 0) {
				$contador_balances = 1;
				//$productos_temp[] = $productos[$i];
				$productos_temp[] = $productos[$i]->etiqueta;
			}
			else if($productos[$i]->producto_id == 'fidecheck' && $contador_fidecheck == 0) {
				$contador_fidecheck = 1;
				//$productos_temp[] = $productos[$i];
				$productos_temp[] = $productos[$i]->etiqueta;
			}
			else if($productos[$i]->producto_id != 'balances' || $productos[$i]->producto_id != 'fidecheck') {
				//$productos_temp[] = $productos[$i];
				$productos_temp[] = $productos[$i]->etiqueta;
			}
		}
		$productos = $productos_temp; */
		//echo(var_dump($productos));die();
		//----  PARCHE BALANCES - FIDECHECK  -------------------------------------------------------------------//

		//----  PARCHE FIDECHECK  -------------------------------------------------------------------//
		/*$productos_temp = [];
		foreach ($productos as $key => $value) {
			$pp = null; 
			$pp = array_search('fidecheck', array_column($productos_temp, 'producto_id'));
			if($pp == false) {
				$productos_temp[] = $productos[$key];
			}
		}
		$productos = $productos_temp;*/
		//----  PARCHE FIDECHECK  -------------------------------------------------------------------//
	}
//	}
	/*
var_dump("DESPUES:"); 
var_dump($productos); 
die();*/
	
	$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');
	}
	//if ($qcontrap->id_padre !== null) {dd($productos); }
	//dd($depeconid); 

	//$navtext = (null == $qcontrap->id_padre) ? "Contraparte" : "Subcontratista";
	$navtext = ($contratista_subcontratista == 'C') ? "Contraparte" : "Subcontratista";

	$tieneAF = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'AprobacionFinal'), 'selectOne'); 

	// Hardcode momentáneamente si es AMX
	//$imperium = SQLConnection::backendStoreProcedure('Imperium_cliente_contraparte_led', array('buscar_contratista_imperium', $id), 'select');

	$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');
    
	//return $productos;die();
	$vista = view('/led/led_contraparte')->with(compact(['productos' , 'qcontrap', 'tab','cliente','depeconid', 'navtext','contratista_subcontratista','tieneAF','indicadores_habilitados'/*, 'imperium'*/]))->render();
	return \Response::json(
			array(
				'view' => $vista,
				'info'=>compact('qcontrap')
		
			),
			200,
			[],
			JSON_NUMERIC_CHECK
		);
	// return ; 
  }

  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='') {
	$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 = DB::select("select LN_familias.nombre_familia as nombre_familia
								 from LN_contrapartes
								INNER JOIN LN_contraparte_familias on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
								INNER JOIN LN_familias on LN_familias.familia = LN_contraparte_familias.familia
								where LN_contrapartes.contraparte = ". $id, array()); */

	$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');

	/*

	// Evalúo si la contraparte tiene asociado el producto balances 
	$tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $qcontrap->contraparte);

	// Cálculo de Indicadores 
	if($tiene_balance->balance > 0) {
	  $score_informe = self::actualizarScoreComercialSinBalance($qcontrap->contraparte);

//	  $score_balance = self::actualizarScoreBalance($qcontrap->contraparte);
//
//	  Esta consulta trae los últimos balances publicados, en join con la documentación de
//		balances solicitada a la empresa. Si el último balance publicado no fue proporcionado por
//		la contraparte sino que fue provisto por Fidelitas hay que aclarar que el score de balances
//		que se muestra en el home no interviene en el score final	
//	  $datos_balances = SQLConnection::backendStoreProcedure('LN_balances', array('balances_contraparte', $qcontrap->contraparte), 'select');
	}
	else {
	  $score_informe = self::actualizarScoreComercialConBalance($qcontrap->contraparte);
	  $datos_balances = [];
	}

	foreach ($productos as $key => $prod) {

	  if ($prod->producto_id == 'informeComercial') {
		self::actualizarMonitoreo($qcontrap->contraparte);		
	  }

	  if ($prod->producto_id == 'documentos') {
		self::actualizarScoreDocumentos($qcontrap->contraparte);
		self::actualizarCumplimientoDocumentos($qcontrap->contraparte);
	  }

	  if ($prod->producto_id == 'subcontratistas') {
		self::actualizarSubcontratistas($qcontrap->contraparte);		
	  }

	  if ($prod->producto_id == 'homologacion') {
		self::actualizarControlEtico($qcontrap->contraparte);
		self::actualizarControlCalidad($qcontrap->contraparte);
		self::actualizarControlComercial($qcontrap->contraparte);
		self::actualizarHomologacionSubcontratista($qcontrap->contraparte);			 
	  }

	  if ($prod->producto_id == 'dossierdemo') {
		self::actualizarDossierDemo($qcontrap->contraparte);
	  }

	  if ($prod->producto_id == 'fidecheck') {
		self::actualizarFidecheck($qcontrap->contraparte);
	  }

	  if ($prod->producto_id == 'alertas') {
		self::actualizarAlertasBCRA($qcontrap->contraparte);
	  }

	  if ($prod->producto_id == 'dependEconomica') {
		self::actualizarDependenciaEconomica($qcontrap->contraparte);
	  }

	  if ($prod->producto_id == 'recomendadorCredito') {
		self::actualizarRentabilidadOperativa($qcontrap->contraparte);
		// Actualización del índice de días de deuda bancaria sobre las ventas post balance 
		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('dias_deuda_ventas', NULL, NULL, NULL,$qcontrap->contraparte), 'selectOne');
	  }


	  if ($prod->producto_id == 'scorefinal') {
		self::actualizarScoreFinal($qcontrap->contraparte);	   
	  }


	}



	// Consulto todos los indicadores de cálculo automático que le corresponden por asociación de producto y familias, para calcularlos por primera vez
	$indicadores = SQLConnection::backendStoreProcedure('LN_contraparte_indicadores_', array('status', $id), 'select');

	foreach ($indicadores as $r_indic) {
	  switch ($r_indic->clave_indicador) {

		// Score de informe comercial 
		case 'SCORE_IC':
		  if($tiene_balance->balance > 0) {
			$score_informe = self::actualizarScoreComercialSinBalance($id);
		  }
		  else {
			$score_informe = self::actualizarScoreComercialConBalance($id);
		  }
		  break;
		
		// Novedades de monitoreso 
		case 'ULTIMA_NOVEDAD':
		  //comentado por Leo, no debería recalcularse nuevamente en cada entrada.
//		  if ($qcontrap->country_code == 'AR') {
//			  $f = date('Y-m-d');
//			  $hoy = Datetime::createFromFormat('Y-m-d', $f);
//			  $fecha_limite_monitoreo = date_add($hoy, date_interval_create_from_date_string("1 year"));
//			  
//			  $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($qcontrap->numero, Session::get('usuario')->user_id, $cliente, 6, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
//			  $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($qcontrap->numero, Session::get('usuario')->user_id, $cliente, 9, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
//			  $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($qcontrap->numero, Session::get('usuario')->user_id, $cliente, 10, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
//			  $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($qcontrap->numero, Session::get('usuario')->user_id, $cliente, 18, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
//
//			  self::actualizarMonitoreo($id);
//		  }
		  break;

		
		// Documentos 
		case 'CUMPL_DOC':
		  self::actualizarCumplimientoDocumentos($id);		
		  break;
		case 'SCORE_DOC':
		  self::actualizarScoreDocumentos($id);
		  break;

		// Balances 
		case 'SCORE_BAL':
		  self::actualizarScoreBalance($id);
		  // Estos van por suscripción específica al cliente 
		  self::actualizarIndicadoresBalance($id);
		  break;

		// Subcontratistas 
		case 'SUBCONT':
		  self::actualizarSubcontratistas($qcontrap->contraparte);
		  break;

		// Fidecheck 
		case 'SCORE_FIDECHECK':
		  self::actualizarFidecheck($qcontrap->contraparte);
		  break;

		// Alertas BCRA 
		case 'CHEQUES_RECH':
		case 'SITUACION_CD':
		  self::actualizarAlertasBCRA($qcontrap->contraparte);
		  break;
		
		case 'SCORE_JUDICIAL':
		  self::actualizarScoreJudicial($qcontrap->contraparte);
		  break;

		// Control de ingreso - homologación 
		case 'CTRL_ETICO';
		  self::actualizarControlEtico($qcontrap->contraparte);
		  break;
		case 'CTRL_CALIDAD';
		  self::actualizarControlCalidad($qcontrap->contraparte);
		  break;
		case 'CTRL_COMERCIAL';
		  self::actualizarControlComercial($qcontrap->contraparte);
		  break;
		case 'HOMOLOG':
		  self::actualizarHomologacionSubcontratista($qcontrap->contraparte);			 
		  break;

		// Recomendador de crédito 
		case 'LC_DIAS_VENTAS':
		case 'LC_RENTABILIDAD':
		case 'LC_RENTABILIDAD_FECHA':
		  self::actualizarRentabilidadOperativa($qcontrap->contraparte);						
		  break;

		// Dependencia Económica Calculada 
		case 'DEP_ECON_CALC':
		  self::actualizarDependenciaEconomica($qcontrap->contraparte);			 
		  break;

		// Score final 
		case 'SCORE_FINAL':
		  self::actualizarScoreFinal($id);
		  break;

	  }
	}

	// Fin cálculo de Indicadores 

	*/

	/* Calculo de domicilio */
	$domic = DB::selectOne("SELECT * from domicilios_todos where cuit='" . $qcontrap->identificacion . "' and tipo_domicilio='F'");

	/*$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_final_contraparte', null, null, null, $id), 'selectOne');*/
  	$gestiones = SQLConnection::backendStoreProcedure('ln_gestiones_contraparte', array($qcontrap->contraparte), 'select');
	
// 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; 
		}

		$data[$ges->desde] = $dato; 
	  	$hoy = new DateTime('today'); 
	  	$hoy = $hoy->format('Y-m-d'); 
	  	if ($ges->desde <= $hoy && $ges->hasta >= $hoy)
	  	{
			foreach ($indicadores_score as $key => $ind) 
  			{
  				$esta = 'N';
	  			foreach ($data[$ges->desde] as $key2 => $datos) 
	  			{
	  				if($datos->indicador == $ind->indicador)
	  				{
	  					$esta = 'S'; 
	  				}
	  			}

	  			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][] = $completa[0]; 
  				}
  				else 
  				{
  					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  = ''; 
  					}
  				}
  			}
  		}


//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); 
			//dd($scorealertas[$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; 
		}
		}
		/* 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');
			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"; 
		}
	}

// 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(); 

/* 04/11/2021: Se agregan los indicadores que puede actualizar el cliente */
	 $editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($qcontrap->contraparte), '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]->clave_indicador = $editar->clave_indicador; 
	  		$campo[$key]->tipo_dato = $editar->tipo_dato; 
	  		$campo[$key]->nombre_producto = $editar->nombre_producto; 
	  		$campo[$key]->producto = $editar->producto; 
	  		if ($campo[$key]->nombre_producto == $nombre_producto_ant) 
	  		{
	  			$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';

           	/* 15/12/2021: Se fija si es boton/checkbox (si esta en la tabla ln_indicadores_boton_checkbox, 
           	si el campo boton_checkbox = 'B' --> BOTON / = 'C' --> CHECKBOX
           	y de ahi sabe que texto mostrar en el boton/checkbox y si el boton está hailitado para apretarlo o 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 == 2080) 
             {
             	$campo3[] = $campo[$key];
             	unset($campo[$key]); 
             }
	  }


	  $cantidad = count($campo); 

	  /*for ($i=0;$i<$cantidad;$i++)
	  {
	  	if (!isset($campo[$i]))
	  	{
	  		$cantidad -= 1; 
	  	}
	  }
	  */
	  $cantidad2 = round(count($campo)/2); 


	  if ($cantidad2 >= 2) 
	  {
	  		$j=0;
	  		for ($i=0;$i<$cantidad2;$i++)
	  			{
	  				if (isset($campo[$i]))
	  				{
	  				$campo1[$j] = $campo[$i];
  					$j+=1;
  					}
	  			}
	  		$j=0;
	  		for ($i=$cantidad2;$i<=$cantidad;$i++)
	  			{
	  				if (isset($campo[$i]))
	  				{
	  				$campo2[$j] = $campo[$i];
	  				$j+=1;
	  				}
	  			}
	  }
	 

	  if ($cantidad2 == 1) 
	  	{
	  		$j=0;
	  		for ($i=0;$i<=10;$i++)
	  		{
	  		if (isset($campo[$i]))
	  			{
	  			$campo1[$j] = $campo[$i];
	  			$j+=1;
	  			}
	  		}
	 	}



	/* 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), 'selectOne');
	$fecha_revisado_vrm = $revisado_vrm1->valor_fecha_dmy ?? null;



	  if ($qcontrap->servicio_contratado == 73) {
			return view('/imperium/home')->with(compact('qcontrap', 'data', 'domic', 'familia', 'contratista_subcontratista', 'padre', 'tieneSF', 'gestiones', 'hoy'));
	  }
	  else {

		  return view('/led/led_home')->with(compact('qcontrap', 'data', 'domic', 'depecon','scoredepecon','scoreapocrifas','scorealertas','coloralertas', 'detalle_killer','detalle_puntos','familia','contratista_subcontratista','padre','tieneSF','tieneAF','aprobaciones','gestiones','hoy','productos_habilitados','campo1','campo2','campo3','indicadores_score','restricciones','fecha_revisado_vrm','hoy_dmy','detalle_trazabilidad','observaciones'));
	  }
	  /* 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')->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')->user_id),'selectOne');

		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', '409', $fecha_revisado,null,null,Session::get('usuario')->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')->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')->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')->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')->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 updValoresScore() {

	$id = Request::input('contraparte');
	$indica = Request::input('indicador') ?? null;
	$detalle = Request::input('detalle') ?? null;
	$detalle_fidelitas = Request::input('detalle_fidelitas') ?? null;
	$solicitarDDR = Request::input('solicitarDDR') ?? null;

	if ($solicitarDDR=='SI')
	{	
		$solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('ALTA',$id,Session::get('usuario')->user_id), 'selectOne');
		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', 396, 'SI',null,null,Session::get('usuario')->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: SI', $cliente, 'CAMBIO_INDICADOR_396','WWW', $id,Session::get('usuario')->user_id),'selectOne');

		/*
		// Para solicitar DDR, vemos si cambió el valor, para hacer la parte de generación del segundo set de documentos
		if ($indicador == 396 && $valor_indicador !== '')
		{
			$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $id, NULL, NULL, NULL, NULL), 'selectOne');
			$solicitar_ddr_ant = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', 
				                 array('indicadores_contraparte_gestion', null, null, null, $id,
								 'VRM_DDR', 
								 NULL,
								 null,
								 null,
								 null,
								 null,
								 1,
								 null, 
								 0,
								 $datosgestion->desde)
							     , 'selectOne');
				
			if (empty($solicitar_ddr_ant->valor) || $solicitar_ddr_ant->valor !== $valor_indicador)
			{
				if ($valor_indicador == 'SI')
				{
				$solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('ALTA',$id,Session::get('usuario')->user_id), 'selectOne');
				}
				if ($valor_indicador == 'NO')
				{
				$solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('BAJA',$id,Session::get('usuario')->user_id), 'selectOne');
				}
			}
		}
		*/
	}
	else 
	{
		if ($indica == null)
		{
			$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id), 'select'); 
		}
		else 
		{
			$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'INDICADOR',$indica), '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]; 

			$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', $indicador, $valor_indicador,$detalle,$detalle_fidelitas,Session::get('usuario')->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')->user_id),'selectOne');

		}
		
	}
}




	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 ledRepRisk()
	{
		$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');
		}

		$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';
			}
		}

		return view('/led/led_reprisk')->with(compact('qcontrap', 'qproducto', 'score', 'score_num','file_path', 'file_url','campo'));
	}
	
	


	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';
		//dd("doc_id:".$doc_id . " - aplica:".$aplica . " - contraparte:".$contraparte . " - motivo: " . $motivo . " - user:" .Session::get('usuario')->user_id); 
		$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 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);
		}
		//dd($valores);

		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 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));

		$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 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));
		
		if (!empty($dossier)) {
			$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_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');

			$once = true;
			foreach ($dossier as $key => $value) {
				if ($once == true) {
					$value->resenia = nl2br($value->resenia);
					$value->analisis = nl2br($value->analisis);
					$once = false;
				}
			}

			$pdfdossier = null;
			if (file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $id . '.pdf')) {
				$pdfdossier = $id . '.pdf';
			}
		}

		$user_id = Session::get('usuario')->user_id;

		// var_dump($dossier);
		// die();
		//----
		if(!empty($dossier)){
			$dossier = $dossier[0];	
		}
		// $dossier = $dossier[0];
		//----
		//// CHANCHADA CAMBIAR --- VISTA DOSSIER REDUCIDA PARA PAE DEMO Y VALID
		if ($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']));
		}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));
		$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';
			}
			//dd(env('PATH_DOCUMENTOS') . '/businessreport/' . $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' ;

		/*$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['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;
		}


		$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();

		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
		//dd($indices_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);

                        //dd($bal);

                        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));
                //dd($dataprov);

                /* 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':
            //dd($all);
            $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';

	$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));
		  $to = []; 
			foreach ($usuarios_mail 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;
			
			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 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 ledBuscadorAuditoriaGenerica() {
	//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 ledAuditoriaGenerica() {
	$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');
	/*var_dump($cliente);
	var_dump($cuit);
	var_dump($ctrletico);
	var_dump($ctrlcalidad);
	var_dump($ctrlcomercial);
	die(); */
	return view('/led/led_auditoria_generica')->with(compact(['titulo', 'cuit', 'nombre_persona','ctrletico', 'ctrlcalidad', 'ctrlcomercial']));
  }
/*
	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.'_contraparte.pdf';
				//echo(var_dump($_SERVER));die();
				$file_exists = file_exists($file_url);
				//$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 ledWordcheck()
	{
		$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 indicadorEditables($contraparte,$indicador)
{
	$campo = []; 
	$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($contraparte,'INDICADOR',$indicador), '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; 
  		
  		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';

  		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; 
						
						}

                	}
                }
         }  
         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')->color; */
					$campo[$key]->color[] = null; 
					}
         }
	  }
	  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 =  $score->valor;
			  $malla_societaria[$key]->score_color = $color;
			
		}
		foreach($malla_societaria as $malla){
			  $malla_societaria[$malla->seccion] = true;
			$malla_societaria['COLORES'] = true; 
		
		}
		
		$json=true;
		return view('informes/sociedades_solo_mapa')->with(compact('json','malla_societaria'));
		}


	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;	

		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($contraparte,'UPDATE_ACTIVO', '0', NULL,$detalle_cliente,$detalle_fidelitas,$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,$user_id), 'selectOne');
		}else{
			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se paso a estado INACTIVO', $cliente, 'DESHABILITACION_CONTRAPARTE_WWW','WWW', $contraparte,$user_id), 'selectOne');
		}
		
	}


}
