<?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() {

		//dd(Session::get('usuario')->codigo_idioma);
		//dd(Session::get('traducciones')['led_dashboard']['Dashboard']);

		$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');

		$tiene_informe_comercial = 0;		
		$tiene_balances = 0;
		$tiene_docs = 0;
		$tiene_score_final = 0;
		$tiene_fidecheck = 0;

		foreach ($productos as $i => $prod) {
			if($prod->producto_id == 'informeComercial') {
				$tiene_informe_comercial = ($tiene_informe_comercial == 0) ? 1 : $tiene_informe_comercial;
			}
			if($prod->balance > 0) {
				$tiene_balances = ($tiene_balances == 0) ? 1 : $tiene_balances;				
			}
			if($prod->documentos > 0) {
				$tiene_docs = ($tiene_docs == 0) ? 1 : $tiene_docs;				
			}
			if($prod->producto_id == 'scorefinal') {
				$tiene_score_final = ($tiene_score_final == 0) ? 1 : $tiene_score_final;
			}
			if($prod->producto_id == 'fidecheck') {
				$tiene_fidecheck = ($tiene_fidecheck == 0) ? 1 : $tiene_fidecheck;
			}
		}

		$graf_inf_com = [];
		$graf_score_bal = [];
		$graf_score_doc = [];
		$graf_score_final = [];
		$graf_fidecheck = [];


		if($tiene_informe_comercial > 0) {
			$graf_inf_com = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_INFORME_COMERCIAL', $cliente, null, null, null), 'select');			
		}

		if($tiene_balances > 0) {
			$graf_score_bal = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_BALANCE', $cliente, null, null, null), 'select');
		}

		if($tiene_docs > 0) {
			$graf_score_doc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_DOCUMENTOS', $cliente, null, null, null), 'select');			
		}

		if($tiene_score_final > 0) {
			$graf_score_final = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_FINAL', $cliente, null, null, null), 'select');			
		}

		if($tiene_fidecheck > 0) {
			$graf_fidecheck = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_FIDECHECK', $cliente, null, null, null), 'select');	
		}

		$novedades = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('novedades_monitoreo',$cliente,null,null,null), 'select');

		$navtext = 'Dashboard';

		return view('/led/led_dashboard')->with(compact(['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', 'novedades', 'navtext']));
	}


	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);		

		$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', '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');
		$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', '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');
		$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', '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;


				// Límite de crédito calculado clientes BBVA, Ingredion, Novartis, Black & Decker
				case 'MONTO_SOLICITADO':
					self::actualizarMontoSolicitadoLC($thiscontr->contraparte);
					break;
				case 'MONTO_OTORGADO':
					// el calculo del monto otorgado depende del score final, lo recalculo por las dudas que todavía no exista
					self::actualizarScoreFinal($thiscontr->contraparte);
					self::actualizarMontoOtorgadoLC($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 );
				}

				/* Determinar si recibe el mail en formato login por tax id o un link con expiración */
				$modo = 'link';
				foreach ($familias as $k => $fam) {
					$familia = SQLConnection::backendStoreProcedure('LN_familias_', array('select', $fam, NULL, NULL, NULL, NULL, NULL), 'selectOne');
					if ($familia->modalidad_login == 'T' OR $familia->modalidad_login == NULL) {
						$modo = 'taxid';
						break;
					}
				}

				if ($modo == 'taxid') {
					/* send mail con tax id */
					$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");					
				}
				else {
					/* send mail link facon */

					if(!empty($dataprov)) {
						$id = $dataprov->contraparte;
						$fecha_expira = date_format(date_create_from_format('!d/m/Y', $dataprov->limite_carga_inicial), 'Y-m-d');
						$ident = encrypt( $dataprov->country_code . '|' . $dataprov->identificador . '|' . $dataprov->numero . '|' . $id . '|' . $fecha_expira );

						$link = env('URL_LEGAJOS_AUTOLOGIN') . "?q=" . $ident;

						$texto = "<br /><br />Haga click <a href='" . $link . "' target='_blank'>aquí</a> para acceder a la web de carga para contrapartes de " . $ncliente . ".<br /><br />";

						$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,
														'link' => $link,
														'fecha_expiracion' => $dataprov->limite_carga_inicial,
														'texto' => $texto );
							
						$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';

						$asunto = 'Fidelitas - Acceso a web de contrapartes LED';
						
						$replyto = 'soporteled@fidelitas.com.ar';
						if (filter_var($to, FILTER_VALIDATE_EMAIL)) {					
							Misc::enviarMailLED('/led/led_email_link' , $from, $to, $bcc, $replyto, $content, $asunto);
						}

					}

				}


			}
		}

		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));

		// reproceso los indicadores
		$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $contraparte), 'selectOne');

		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;

		$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');

		$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 );
		
		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']));
	}


	/**
	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'];
        $filtro_familia = null;
        $filtro_pais  = null;
        $contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('contrapartes', $cliente, $filtro_pais, $filtro_familia, null), 'select');
        $prodind = [];
        $indic = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('PRODUCTOS_INDICADORES', $cliente,null,null, null), 'select');
        foreach ($indic as $key => $idata) {
            $map = function ($idata) {
                return $idata->producto_id;
            };
            $apariciones = array_count_values(array_map($map, $indic));
            $prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = ($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'] = ($idata->clave_indicador=='RAZON_SOCIAL' || $idata->clave_indicador=='FAMILIA' || $idata->clave_indicador=='PAIS') ? true: false ;
            $clave_indicador[] = $idata->clave_indicador;
            $prodind[$idata->producto_id][$idata->clave_indicador]['icono'] = $idata->class_icon;
        }
        $cant_hijos = count(array_unique($clave_indicador));
        $titulos = $prodind;
        $valores = [];
        $led    = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('VALORES_GRILLA_EXT', $cliente, $filtro_pais, $filtro_familia, null), 'select');
        // $pi     = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('PRODUCTOS_INDICADORES', $cliente, $filtro_pais, $filtro_familia, null), 'select');
       //print_r($led);die();
       $pi = $indic; 
       $indices = [];
       $pais    = [];
       $familia = [];
       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;
            }
            
            $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;

            $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>','', '', '', '','');
            $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);
        }
        $pais       = array_map("unserialize", array_unique(array_map("serialize", $pais)))     ;
        $familia    = array_map("unserialize", array_unique(array_map("serialize", $familia)   ));
        foreach ($valores as $valores_key => $valores_value) {
            foreach ($pi as $pi_key => $pi_value) {
                if (!isset($valores_value[$pi_value->producto_id][$pi_value->clave_indicador])) {
                    $valores[$valores_key][$pi_value->producto_id][$pi_value->clave_indicador][] = '';
                }
            }
        }
        
        return json_encode(['valores' => $valores,'titulos' => $titulos,'cant_hijos' => $cant_hijos,'pais' => $pais,'familia' => $familia]);
    }
    /**
     * 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 ledPanelControl()
    {
        $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('valor_indicador');
        $valor_min        = Request::input('min');
        $valor_max        = Request::input('max');
        
        switch ($nombre_grafico) {
            case 'grafico_pep':
                if ($nombre_etiqueta=='Positivo') {
                    $inicial_etiqueta = 'P' ;
                } elseif ($nombre_etiqueta=='Negativo') {
                    $inicial_etiqueta = 'N';
                } else {
                    $inicial_etiqueta = 'R';
                }
                # code...
                break;
            default:
                # code...
                break;
        }
        

        $navtext = "Panel de Control - Contrapartes";

        $icon_subc = '';
        if (Session::get('usuario')->user_id=='122371307') 
        {$tiene_subc = 1; 
        $icon_subc = 'fa fa-sitemap';
        }
        else 
        { $tiene_subc = 0; } 
        return view('/led/led_panel_control')->with(compact(['navtext','tiene_subc','icon_subc']));
    }

    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');
        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;
		}		

		
		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;

			$op = null;
			if(null != $data->opciones) {
				$t1 = explode('^', $data->opciones);
				$text = explode('|', $t1[0]);
				$values = explode('|', $t1[1]);
				$op = array('text' => $text, 'values' => $values);
			}

			$prodind[$data->etiqueta][$data->indicador]['opciones'] = $op;
		}

		$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 ledExcelRSE_contrapartes(){
		$cliente = Session::get('usuario')->cliente['client_id'];
		$nombre_documento = new stdClass(); 
		$nombre_documento = ''; 
		$contrapartes = SQLConnection::backendStoreProcedure('LN_excel_RSE_contrapartes', array($cliente), 'select');
		if (isset($contrapartes))
		{
			foreach ($contrapartes as $tit) {
				$nombre_documento = $tit->nombre_tipo_doc; 
				break; 
			}
		}
		$navtext = 'Reporte RSE';
		return view('/led/led_RSE_contrapartes')->with(compact(['contrapartes','nombre_documento','navtext']));
	}

	public function ledExcelRSE(){

		$cliente = Session::get('usuario')->cliente['client_id'];
		$cliente = 5546348; 

		$ids = ""; 
		if(!empty(Request::input('contraparte'))) {
			foreach (Request::input('contraparte') as $k => $contraparte) {
				if ($ids == "") { $ids = $contraparte; }
				else { $ids .= ",".$contraparte; }
			}
		}
		else
		{
			return; 
		}

		$RSE = SQLConnection::backendStoreProcedure('LN_excel_RSE', array($cliente, $ids), 'select');
		$titulos = [];
		$contrapartes = []; 
		foreach ($RSE as $doc) {
						$titulos['pais'] = 'PAIS'; 
						$titulos['familia'] = 'FAMILIA'; 
						$titulos['nombre'] = 'RAZON SOCIAL';  
						$titulos['tax_id'] = 'IDENTIFICACION';  
						$titulos[$doc->campo_id] = $doc->etiqueta; 
		}

		foreach ($RSE as $doc) {
						$contrapartes[$doc->contraparte]['pais'] = $doc->pais; 
						$contrapartes[$doc->contraparte]['familia'] = $doc->familia; 
						$contrapartes[$doc->contraparte]['nombre'] = $doc->nombre; 
						$contrapartes[$doc->contraparte]['tax_id'] = $doc->tax_id; 
						$contrapartes[$doc->contraparte][$doc->campo_id] = $doc->resultado; 
		}

		$file = '<table border="1">';
		$file .= '<tr>';

		foreach ($titulos as $tit) {
				$file .= "<td>" . $tit . "</td>";
		}
		$file .= '</tr>'; 
    
		foreach($contrapartes as $key => $contraparte){
			$file .=  '<tr valign="top">';
			foreach($contraparte as $valor)
			{
				$file .= 	"<td>".$valor . "</td>" ; 
			}
			$file .=  '</tr>';
		}
		$file .= '</table>'; 
    $fecha = date("Y-m-d");
    header('Content-disposition: attachment; filename=Reporte_RSE_' . $fecha . '.xls');
		header('Content-type: application/vnd.ms-excel; charset=utf-8');
		$file = utf8_decode($file);
		echo $file;
		return; 
	}

		public function 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>'; 
    $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 static function ledContraparte() {
    $cliente = Session::get('usuario')->cliente['client_id'];
    $id = Request::input('contraparte');
    $tab = (null != Request::input('tab')) ? Request::input('tab') : 'home';

    $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla', $cliente,NULL,NULL, $id), 'select');
    $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'); 
    //dd($depeconid); 

    $navtext = (null == $qcontrap->id_padre) ? "Contraparte" : "Subcontratista";
    $vista = view('/led/led_contraparte')->with(compact(['productos' , 'qcontrap', 'tab','cliente','depeconid', 'navtext']))->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');
		$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'); 

		/*$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'"); */

		$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; 
			}
		}
	
		$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);
		}
    
    	return view('/led/led_home')->with(compact('qcontrap', 'data', 'domic', 'depecon','scoredepecon','scorealertas','coloralertas', 'detalle_killer','familia'));
	}


	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 = Request::input('contraparte');
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
		$gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $id, null, null, 1, null));

		//$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;

			}
		}		

		return view('/led/led_documentos')->with(compact(['qcontrap','docs', 'files', 'scoredoc', 'cumpldoc']));
	}


	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');

		$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');

		return view('/led/led_homologacion')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial', 'homolog', 'exc_activa', 'excepciones']));
	}


	public static function ledExcepcionIngreso() {
		$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');

		return view('/led/led_excepcion_ingreso')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial']));
	}


	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');
		
		return view('/led/led_excepcion_return')->with(compact(['qcontrap'])); 
	}


	public static function ledExcepcionDesactivar() {
		$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');
		$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']));

	}


	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');	
		return view('/led/led_excepcion_return')->with(compact(['qcontrap'])); 
	}

	public static function ledExcepcionEditar() {
		$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');
		$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']));	
	}

	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');
		
		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';
			}

		}

		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));

		return view('/led/led_dependencia')->with(compact(['dep']));
		
	}

	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";
      
			$meses = DB::selectOne("select dias/30 from ln_dias_alertas where tabla = 'cendeu' and cliente = " . $qcontrap->cliente);
			if (!isset($meses)) { $meses = 24;}
			

			return view('/led/led_alertas')->with(compact(['qcontrap', 'cuit', 'cheques', 'mensaje', 'persona_fisica', 'vinculados_segun_bcra', 'periodo', 'obtener_bancos', 'cancelaciones','meses']));
		}
	}

	/******************************************************************/

	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);
    	$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');


		$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' ]))->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');
		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');
		}
		return view('/led/led_limite_credito')->with(compact(['qcontrap','solicitado','otorgado']));
	}


	/************************************************************************************/


	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' OR $ind->tipo_dato == 'D') ) {

								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 'FECHA_BALANCE' :
										if ($indices !== NULL) {
											if(isset($indices->fecha_balance) AND $indices->fecha_balance != null) {
												$temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, NULL, 'FECHA_BALANCE', NULL, Session::get('usuario')->user_id, date_create_from_format('!d/m/Y', $indices->fecha_balance)), 'selectOne');
											}
										}
										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, 'ROTACION_ACTIVO_FIJO_DIAS', $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, 'ROTACION_ACTIVO_FIJO_DIAS', $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 actualizarScoreJudicial($id=null) {
		if($id > 0) {
			$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('judicial', 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;		
	}


    // Límite de crédito calculado clientes BBVA, Ingredion, Novartis, Black & Decker     
    public static function actualizarMontoSolicitadoLC($id=null) {
    	if ($id > 0) {
			$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('monto_solicitado', null, null, null, $id), 'selectOne');
    	}
    	return false;
    }
    public static function actualizarMontoOtorgadoLC($id=null) {
    	if ($id > 0) {
			$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('monto_otorgado', 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');

	}




}


