<?php namespace App\Http\Controllers;

use App\Custom\SQLConnection; 
use App\Custom\Misc;
use App\Custom\Mailer;
use App\Http\Controllers\AFIPController;
use Request;
use Session;
use DateTime;
use Illuminate\Support\Facades\Input;
use DB;
use stdClass;

// use Illuminate\Session\TokenMismatchException;

class LEDController extends Controller
{
	public static function ledDashboard() {
		$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('PRODUCTOS_GRILLA', $cliente, null, null, null), 'select');
	  $count_cuadros	= SQLConnection::backendStoreProcedure('LN_dashboard_graficos', array('COUNT-LINEA1',$cliente), 'selectOne');
	 // $graf_cli_prov	= SQLConnection::backendStoreProcedure('LN_dashboard_graficos', array('GRAPH-CLI-PROV',$cliente), 'select');
	  $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  = [];

	foreach ($productos as $i => $prod) {
		switch ($prod->producto_id) {
			case 'informeComercial':
				$tiene_informe_comercial = ($tiene_informe_comercial == 0) ? 1 : $tiene_informe_comercial;
				$graf_inf_com = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_INFORME_COMERCIAL', $cliente, null, null,  null), 'select');
			break;
			
			case 'balances':
				if($prod->balance > 0 ){
					$tiene_balances = ($tiene_balances == 0) ? 1 : $tiene_balances;      
					$graf_score_bal = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_BALANCE', $cliente, null, null, null), 'select');
				}
			break;
			
			case 'documentos':
				$tiene_docs = ($tiene_docs == 0) ? 1 : $tiene_docs;  
				$graf_score_doc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_DOCUMENTOS', $cliente, null, null, null), 'select');
			break;
			
			case 'scorefinal':
				$tiene_score_final = ($tiene_score_final == 0) ? 1 : $tiene_score_final;
				$graf_score_final = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_FINAL', $cliente, null, null, null), 'select');  
			break;
			
			case 'fidecheck':
				$tiene_fidecheck = ($tiene_fidecheck == 0) ? 1 : $tiene_fidecheck;
				$graf_fidecheck = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_FIDECHECK', $cliente, null, null, null), 'select'); 
			break;
			
			case 'Dossier':
				$tiene_score_dossier = ($tiene_score_dossier == 0) ? 1 : $tiene_score_dossier;
				$graf_score_dossier = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_DOSSIER', $cliente, null, null, null), 'select'); 

			break;
			
			case 'dependEconomica':
				$tiene_dep_econ = ($tiene_dep_econ == 0) ? 1 : $tiene_dep_econ;
				$graf_dep_econ = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_DEPENDENCIA_ECONOMICA', $cliente, null, null, null), 'select');
	
			break;
			
			case 'homologacion':
				$tiene_control_ingreso = ($tiene_control_ingreso == 0) ? 1 : $tiene_control_ingreso;
				$graf_control_ingreso = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_CONTROL_INGRESO', $cliente, null, null, null), 'select');
	
			break;
			
			default:
				# code...
				break;
		}

	
	
	}


		//$novedades = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('novedades_monitoreo',$cliente,null,null,null), 'select');
	  $navtext = 'Dashboard';
	  return view('/led/led_dashboard')->with(compact(['graf_contr_fam','graf_pais','graf_cumplimiento','count_cuadros','qcontrap', 'tiene_informe_comercial', 'tiene_balances', 'tiene_docs', 'tiene_score_final', 'tiene_fidecheck', 'graf_score_final', 'graf_inf_com', 'graf_score_bal', 'graf_score_doc', 'graf_fidecheck', 'navtext','graf_score_dossier','tiene_score_dossier','graf_dep_econ','tiene_dep_econ','graf_control_ingreso','tiene_control_ingreso']));
	}


	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 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 = DB::select('EXEC dbo.backend_obtener_identificadores_pais '.$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 ledContrapartesStep()
	{
		$cliente =				  Request::input('cliente');
		$id_padron =				Request::input('id_padron');
		$datos_comerciales =		  Request::input('datos_comerciales');
		$nombre_contacto =		  Request::input('nombre_contacto');
		$email_contacto =		   Request::input('email_contacto');

		// Es null si no existe previamente o no nulo si se va a abrir nueva gestion
		$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;
		}


		$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'));

		$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;
		}

		/*print_r($array_items);
		die;
*/
		$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',null,null,$cliente,$padron->country_code,null,null));

		return view('/led/led_contrapartes_step')->with(compact(['cliente', 'padron', 'contraparte', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'activo', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'familias', 'array_items']));
	}

	public static function ledContrapartesBack() {

	  $cliente =				  Request::input('cliente');
	  $id_padron =				Request::input('id_padron');

	  // Es null si no existe previamente o no nulo si se va a abrir nueva gestion
	  $contraparte =			  Request::input('contraparte');
	  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 =				 0;	

	  $padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
	  return view('/led/led_contrapartes_new')->with(compact(['cliente', 'padron', 'qcontrap', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo']));
	}


	public static function ledContrapartesInsert() {

	  $cliente =				  Request::input('cliente');
	  $id_padron =				Request::input('id_padron');
	  $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');
	  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') : [];
	  $items =				  ( null != Request::input('item') ) ? Request::input('item') : [];

	  $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));

	  foreach ($items as $key => $item) {
		$temp = DB::selectOne('EXEC dbo.LN_contraparte_clasificacion_ ?,?,?', array('insert', $thiscontr->contraparte, $item));
	  }

	  foreach ($familias as $ix => $fam) {
		$temp = DB::selectOne('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('insert', $thiscontr->contraparte, $fam, NULL, 'N', 1, Session::get('usuario')->user_id));
	  }

	  $gest = DB::selectOne('EXEC dbo.LN_gestiones_	?,?,?,?,?,?,?,?', array('insert', null, null, $thiscontr->contraparte, $vigencia_desde, $vigencia_hasta, null, Session::get('usuario')->user_id));

	  /* 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 = ' . $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, Session::get('usuario')->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, Session::get('usuario')->user_id));

	  /* Evalúo si la contraparte tiene asociado el producto balances */
	  $tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $thiscontr->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', $thiscontr->contraparte), '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($thiscontr->contraparte);
			}
			else {
			  $score_informe = self::actualizarScoreComercialConBalance($thiscontr->contraparte);
			}
			break;
		  
		  /* Novedades de monitoreso */
		  case 'ULTIMA_NOVEDAD':
			if ($dataprov->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($dataprov->numero, Session::get('usuario')->user_id, $cliente, 6, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
			  $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 9, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
			  $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 10, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
			  $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 18, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');

			  self::actualizarMonitoreo($thiscontr->contraparte);
			}
			break;

		  
		  /* Documentos */
		  case 'CUMPL_DOC':
			self::actualizarCumplimientoDocumentos($thiscontr->contraparte);		
			break;
		  case 'SCORE_DOC':
			self::actualizarCumplimientoDocumentos($thiscontr->contraparte);
			break;

		  /* Balances */
		  case 'SCORE_BAL':
			self::actualizarScoreBalance($thiscontr->contraparte);
			/* Estos van por suscripción específica al cliente */
			self::actualizarIndicadoresBalance($thiscontr->contraparte);
			break;

		  /* Subcontratistas */
		  case 'SUBCONT':
			self::actualizarSubcontratistas($dataprov->contraparte);
			break;

		  /* Fidecheck */
		  case 'SCORE_FIDECHECK':
			self::actualizarFidecheck($dataprov->contraparte);
			break;

		  /* Alertas BCRA */
		  case 'CHEQUES_RECH':
		  case 'SITUACION_CD':
			self::actualizarAlertasBCRA($dataprov->contraparte);
			break;

		  case 'SCORE_JUDICIAL':
			self::actualizarScoreJudicial($dataprov->contraparte);
			break;

		  /* Control de ingreso - homologación */
		  case 'CTRL_ETICO';
			self::actualizarControlEtico($dataprov->contraparte);
			break;
		  case 'CTRL_CALIDAD';
			self::actualizarControlCalidad($dataprov->contraparte);
			break;
		  case 'CTRL_COMERCIAL';
			self::actualizarControlComercial($dataprov->contraparte);
			break;
		  case 'HOMOLOG':
			self::actualizarHomologacionSubcontratista($dataprov->contraparte);			 
			break;

		  /* Recomendador de crédito */
		  case 'LC_DIAS_VENTAS':
		  case 'LC_RENTABILIDAD':
		  case 'LC_RENTABILIDAD_FECHA':
			self::actualizarRentabilidadOperativa($dataprov->contraparte);						
			break;

		  /* Dependencia Económica Calculada */
		  case 'DEP_ECON_CALC':
			self::actualizarDependenciaEconomica($dataprov->contraparte);			 
			break;

		  /* Score final */
		  case 'SCORE_FINAL':
			self::actualizarScoreFinal($thiscontr->contraparte);
			break;

		}
	  }







	  /* 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 */

	  /* Agregado en monitoreo de secciones fijas: 6 9 10 18 /
	  if ($dataprov->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($dataprov->numero, Session::get('usuario')->user_id, $cliente, 6, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 9, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 10, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 18, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');

		self::actualizarMonitoreo($thiscontr->contraparte);
	  }

	  $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla',$cliente,null,null,$dataprov->contraparte), 'select');
	  foreach ($productos as $key => $prod) {

		if ($prod->producto_id == 'subcontratistas') {
		  self::actualizarSubcontratistas($dataprov->contraparte);		
		}

		if ($prod->producto_id == 'homologacion') {
		  self::actualizarControlEtico($dataprov->contraparte);
		  self::actualizarControlCalidad($dataprov->contraparte);
		  self::actualizarControlComercial($dataprov->contraparte);
		  self::actualizarHomologacionSubcontratista($dataprov->contraparte);			 
		}

		if ($prod->producto_id == 'dossierdemo') {
		  self::actualizarDossierDemo($dataprov->contraparte);
		}

		if ($prod->producto_id == 'fidecheck') {
		  self::actualizarFidecheck($dataprov->contraparte);
		}

		if ($prod->producto_id == 'alertas' AND $dataprov->country_code == 'AR') {
		  self::actualizarAlertasBCRA($dataprov->contraparte);
		}

		if ($prod->producto_id == 'dependEconomica') {
		  self::actualizarDependenciaEconomica($dataprov->contraparte);
		}

		if ($prod->producto_id == 'recomendadorCredito') {
		  //
		}

	  }*/

	  if (null !== Request::input("enviar_mail_alta")) {
		if (Request::input("enviar_mail_alta") == 1) {

		  /** Chanchada para cambiar el nombre del cliente en caso de ser AMX **/
		  $ncliente = $dataprov->nombre_cliente;
		  if($dataprov->cliente == 5546348) {
			$ncliente = ($dataprov->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($dataprov->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $dataprov->nombre_cliente );
		  }

		  /* send mail */
		  $content = array('nombre_cliente' => $ncliente,
						'nombre_persona' => $dataprov->nombre_persona,
						'abreviatura' => $dataprov->abreviatura,
						'numero' => $dataprov->numero,
						'nombre_contacto' => $nombre_contacto,
						'email_contacto' => $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");

		}
	  }

	  return redirect('/led/led-contrapartes');

	}

	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 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') : [];

	  /*print_r($vigencia_desde);
	  print_r($vigencia_hasta);
	  die;*/

	  $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');

	}

	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;

		// 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); 
  
		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']));
	}


	/**
	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') ?? 'C';
    if ($contratista_subcontratista == 'C')
    {
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel.json'; 
    }
    else 
    {
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub.json'; 
    }
    /*
		if (!file_exists($file))
		{
			// Generamos el archivo 
			self::ledPanelControlFile($cliente,$contratista_subcontratista); 
		}
*/
		if (!file_exists($file))
		{
			return json_encode('fallo'); 
		}

		$filtro_familia  		= !empty(Request::input('familia'))  ? Request::input('familia') : null;
		$filtro_familia_sub = null;
		$filtro_pais      	= !empty(Request::input('country_code')) ? Request::input('country_code') : null;
		$clave_indicador 	 	= !empty(Request::input('clave_indicador')) ? Request::input('clave_indicador') : null;
		$valor_min					= !empty(Request::input('min')) ? Request::input('min') : null;
		$valor_max					= !empty(Request::input('max')) ? Request::input('max') : null;
		$contraparte				= !empty(Request::input('contraparte')) ? Request::input('contraparte') : null;
		$valor_texto				= !empty(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;

		if ($clave_indicador == 'FIDECHECK')
		{
			if ($valor_texto == 'N') { $valor_texto = '1'; }
			if ($valor_texto == 'R') { $valor_texto = '2'; }
			if ($valor_texto == 'P') { $valor_texto = '3'; }
		}


		$archivo = file_get_contents($file);
		if ($filtro_familia  		!== null ||
				$filtro_familia_sub !== null ||
				$filtro_pais      	!== null ||
				$clave_indicador 	 	!== null ||
				$valor_min					!== null ||
				$valor_max					!== null ||
				$contraparte				!== 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 */ } 

							foreach ($datos1 as $key2 => $datos2) {
									foreach ($datos2 as $key3 => $datos3) {
										  $valor = strtoupper($datos3[0]); 
											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') 
													{
													if ($valor !== strtoupper($filtro_familia) || $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 ($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->vista_filtrada = true;
					return json_encode($resultado);
			 	}
			 	else 
			 	{
			 		return $archivo;
			 	}
	}

  /*
  ledPanelControlFile ANTERIOR
	public static function ledPanelControlFile($cliente=null,$contratista_subcontratista=null)
	{
		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');
		}
		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  = null; 
		$valor_min		    = null;
		$valor_max		    = null;
		$contraparte		  = null;
		$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;
		$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 = $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][] = '';
				}
			}
		}
		
		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')
		{
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-' . $fecha . '.json'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel.json'; 
		}
		else 
		{
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub-' . $fecha . '.json'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub.json'; 	
		}
		$resp = json_encode(['valores' => $valores,'titulos' => $titulos,'cant_hijos' => $cant_hijos,'pais' => $pais,'familia' => $familia,'familia_sub' => $familia_sub,'vista_filtrada' => $vista_filtrada]); 
		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 ledPanelControlFile($cliente=null,$contratista_subcontratista=null)
	{

		// 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');
		}
		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);
			  $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;
		}
		$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;

		if ($contratista_subcontratista == 'C')
		{
		$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');
		
		}
		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 = [];
	   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][] = '';
				}
			}
		}
		
		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')
		{
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-' . $fecha . '.json'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel.json'; 
		}
		else 
		{
			$file_actual = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub-' . $fecha . '.json'; 
			$file = env('PATH_COMPARTIDO') .  '/LED-PANEL/'. $cliente . '/panel-sub.json'; 	
		}

		$resp = json_encode(['valores' => $valores,'titulos' => $titulos,'cant_hijos' => $cant_hijos,'pais' => $pais,'familia' => $familia,'familia_sub' => $familia_sub,'vista_filtrada' => $vista_filtrada]); 
		file_put_contents($file_actual, $resp); 
		file_put_contents($file, $resp); 
	
	}


	public static function ledPanelControlSubcontratista()
	{
	  return self::ledPanelControl('S');
	}
		
	public static function ledPanelControl($contratista_subcontratista='C')
	{
	   
		$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');
		$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;

//dd(Request::input());
		if ($contratista_subcontratista == 'C')
		{
		$navtext = "Panel de Control - Contrapartes";
		}
		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')
		{
		return view('/led/led_panel_control')->with(compact(['navtext','tiene_subc','icon_subc', 'clave_indicador', 'valor_min', 'valor_max', 'valor_texto', 'country_code', 'familia', 'contraparte','contratista_subcontratista']));
		}
		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(){


	$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); 
  
  $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; 
	  }
	}

	//var_dump($prodind); 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_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'] = ''; 
		  }
		}
	  }
	}
		
	//dd($valores);

	$file = '<table border="1">';
  $file .= '<tr><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");
	  }
	}
	$file .= "<td>Detalle Rechazos</td>";
	foreach ($titulo_personal as $key => $tit)
	{
		$file .= "<td>" . $key. "</td>";
	}
	$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  . "</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]);}
				}
				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;
		  }
		}

		$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>'; 
	$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;
  }

  public function ledExcelPanelControlSub(){
	$cliente = Session::get('usuario')->cliente['client_id'];
	$ids = null != Request::input('ids') ? Request::input('ids') : null;
	$contrap = SQLConnection::backendStoreProcedure('LN_panel_control_sub_excel', array($cliente, $ids), '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]);}
				}
				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;
  }


  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);
	}

	$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";
	$vista = view('/led/led_contraparte')->with(compact(['productos' , 'qcontrap', 'tab','cliente','depeconid', 'navtext','contratista_subcontratista']))->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), 'select');

	return json_encode($productos);
  }

  public static function ledHome() {
	$cliente = Session::get('usuario')->cliente['client_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'); 

	/*$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');*/
	$data = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id), 'select');
		
	foreach ($data as $key => $datos) {
	  if (isset($datos->color_personalizado))	 $data[$key]->color	 = $datos->color_personalizado; 
	  if (isset($datos->textcolor_personalizado)) $data[$key]->textcolor = $datos->textcolor_personalizado; 
	  if (isset($datos->svg_data_personalizado))  $data[$key]->svg_data  = $datos->svg_data_personalizado; 
	}
	//dd($data);

	/* Para graficar dependendia economica calculada en caso de que le corresponda y exista el dato */
	$depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'DEP_ECON_CALC'), 'selectOne'); 
	$scoredepecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SCORE_DEP_ECON'), 'selectOne'); 
	if (empty($depecon))
	{
	  $depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'DEP_ECON_BALANCE'), 'selectOne'); 
	  $scoredepecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SCORE_DEP_ECON_BAL'), 'selectOne');
	}

	/*$scoredepecon = DB::selectOne('select valor_numerico from ln_contraparte_indicadores where contraparte = ' . $qcontrap->contraparte . 
					" and visible = 1 
					 and indicador = (select indicador 
					  from ln_indicadores 
					inner join LN_productos on ln_productos.producto = LN_indicadores.producto 
					where clave_indicador = 'SCORE_DEP_ECON'
					and nombre_producto = 'Dependencia Económica')");  */
	/*$scorealertas = DB::selectOne('select valor_numerico from ln_contraparte_indicadores where contraparte = ' . $qcontrap->contraparte . 
					" and visible = 1 
					 and indicador = (select indicador 
					  from ln_indicadores 
					inner join LN_productos on ln_productos.producto = LN_indicadores.producto 
					where clave_indicador = 'SCORE_ALERTAS_BCRA'
					  and nombre_producto = 'Alertas BCRA')");  */
		
	/*$scorealertas = DB::selectOne("select valor_numerico, LN_productos.etiqueta as etiqueta
					 from ln_contraparte_indicadores 
					 inner join ln_indicadores on ln_indicadores.indicador = ln_contraparte_indicadores.indicador 
					 inner join LN_productos on LN_productos.nombre_producto = 'Alertas BCRA'
					 where ln_contraparte_indicadores.contraparte = " . $qcontrap->contraparte . 
					" and ln_contraparte_indicadores.visible = 1 
					 and clave_indicador = 'SCORE_ALERTAS_BCRA'"); */

	$scoreapocrifas = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SCORE_APOCRIFAS'), 'selectOne');

	$scorealertas = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SCORE_ALERTAS_BCRA'), 'selectOne'); 

	$coloralertas = new stdClass(); 
	$coloralertas->fondo = '000000'; 
	$coloralertas->txt   = '000000'; 
	if (isset($scorealertas->valor_numerico)) {
	  
	  switch (true) {
		  case ($scorealertas->valor_numerico >=81) : $coloralertas->fondo = '63b68c'; $coloralertas->txt = '000000'; break; 
		  case ($scorealertas->valor_numerico >=61) : $coloralertas->fondo = 'cbc367'; $coloralertas->txt = '000000'; break; 
		  case ($scorealertas->valor_numerico >=41) : $coloralertas->fondo = 'FFB81C'; $coloralertas->txt = '000000'; break; 
		  case ($scorealertas->valor_numerico >=21) : $coloralertas->fondo = 'd37123'; $coloralertas->txt = '000000'; break; 
			case ($scorealertas->valor_numerico >=0)  : $coloralertas->fondo = 'A72B2A'; $coloralertas->txt = 'FFFFFF'; break; 
	  }
	}
	$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));
  
	$detalle_killer = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($qcontrap->cliente, $qcontrap->contraparte), 'selectOne');
	if (isset($detalle_killer->detalle_killer)) {
	  $detalle_killer->detalle_killer = str_replace('; ',"\n",$detalle_killer->detalle_killer);
	}
		

	  /* Traducciones de los nombres de documento */
	  Traducciones::$blade = 'home contraparte';
	  SQLConnection::obtenerTraducciones(Traducciones::$blade); 

	  return view('/led/led_home')->with(compact('qcontrap', 'data', 'domic', 'depecon','scoredepecon','scoreapocrifas','scorealertas','coloralertas', 'detalle_killer','familia','contratista_subcontratista','padre'));
  }


	public static function ledInformeComercial()
	{
		$id = Request::input('contraparte');
		$prod = Request::input('producto');
		$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_comercial')->with(compact('qcontrap', 'qproducto', 'apikey', 'incluye_balance'));
	}


	/* vista del informe comercial para otros países no AR */
	public static function ledInformeComercialExterior()
	{
		$id = Request::input('contraparte');
		$prod = Request::input('producto');
		$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 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');
		$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));

		$scoredoc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte',null,null,null,$id,'SCORE_DOC'), 'selectOne');
		$cumpldoc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte',null,null,null,$id,'CUMPL_DOC'), 'selectOne');

		//dd($docs);

		$files = [];
		$n = -1;
		foreach ($docs as $k => $doc) {
			if ($doc->estado_doc == 'N' || $doc->estado_doc == 'I' || $doc->estado_doc == 'R' || $doc->estado_doc == 'V') {
				$n++;
				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[$n]['path'] = $file_path;
				$files[$n]['url'] = $file_url;
				$files[$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']));
		}
		else 
		{
			return view('/led/led_documentos_tabla')->with(compact(['vez','qcontrap','docs', 'files', 'scoredoc', 'cumpldoc','contratista_subcontratista']));
		}
	}

	public function ledDocumentosActivo(){  
		$doc_id  = Request::Input('doc_id');
		$aplica  = Request::Input('activo');
		$id      = Request::Input('contraparte');
		$contratista_subcontratista = (null != Request::input('contratista_subcontratista')) ? Request::input('contratista_subcontratista') : 'C';
		//dd("doc_id:".$doc_id . " - aplica:".$aplica . " - contraparte:".$id . " - user:" .Session::get('usuario')->user_id); 
		$doc_act = SQLConnection::backendStoreProcedure('LN_docs_activo', array($id, $doc_id, $aplica, Session::get('usuario')->user_id), 'selectOne'); 
		return self::ledDocumentos($id,$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 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');

		return view('/led/led_fidecheck')->with(compact(['qcontrap', 'socios', 'relac', 'direct','propio']));

	}

	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 = 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 = 'dossierdemo' ", array());

		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) {
					$dossier->resenia = nl2br($dossier->resenia);
					$dossier->analisis = nl2br($dossier->analisis);
					$once = false;
				}
			}


			$pdfdossier = null;
			if (file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $id . '.pdf')) {
				$pdfdossier = $id . '.pdf';
			}
		}

		$user_id = Session::get('usuario')->user_id;

		if ($user_id == '583706793' OR Session::get('usuario')->cliente['client_id'] == 3920694) {
		  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 ledDependencia(){
		$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(); 
		return view('/led/led_dependencia')->with(compact(['dep','compras','datos']));
	}

	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){
			  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)
			  ){
				$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));
			/*$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::obtenerGarantiasBancos($cuit);
			$garantias	= $this->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::generarGraficoCheques($grafico_cheques,24);*/

			$persona_fisica   = (substr($cuit, 0, 1) != '3') ? true : false ;
			$cheques  = $cheques_ordenados;


			$vinculados_segun_bcra	  = SQLConnection::backendStoreProcedure('obtener_vinculados_segun_BCRA', array($cuit));

			$mensaje = " Sin Fondos, Sin Levantar y/o Cheques Rechazados por Defectos Formales, en los últimos " . $dias . " días";


			return view('/led/led_alertas')->with(compact(['qcontrap', 'cuit', 'cheques', 'mensaje', 'persona_fisica', 'vinculados_segun_bcra', 'periodo', 'obtener_bancos', 'cancelaciones']));
		}
	}


	/******************************************************************/

	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');
		/*
		$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']));
	}

	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');

	  }

	  return view('/led/led_dependencia_balance')->with(compact(['qcontrap', 'depecon', 'fecha_bal', 'datos', 'compras']));
	}

	/************************************************************************************/


	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 = DB::selectOne("select LN_productos.producto, LN_productos.balance, 
								  LN_productos.balance_analisis, LN_productos.balance_valoracion,
								  ISNULL(LN_cliente_productos.version_balance, 'F') AS version_balance
								from LN_productos
								inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
								inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
								inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
								inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
														  AND LN_productos.producto = LN_cliente_productos.producto)
								inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
								where LN_productos.balance = 1
								and LN_familia_productos.activo = 1
								and LN_contraparte_familias.activo = 1
								and LN_cliente_productos.activo = 1
								and padrones.identificacion = '" . $cuit . "' and LN_contrapartes.cliente = " . $cliente, array());


		$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 => 30,
													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);
                }
            }
        }
        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;


    }
}
