<?php namespace App\Http\Controllers;   

use App\Custom\SQLConnection; 
use App\Custom\Misc; 
use Request; 
use Session; 
use Illuminate\Support\Facades\Input;
use DB;
use DateTime;
use stdClass;
use Route;
use Oriceon\PdfMerger\Facades\PdfMerger;
use App\Http\Controllers\LEDEmailController;
use App\Http\Controllers\EmailController;
use App\Http\Controllers\ReportsController;


class LEDController extends Controller  {
	public static $usuarios; 
	public static function aplicaciones() { 
		$p_accion = 'INSERT'; 
		$p_app_id = NULL;
		$p_app_name = NULL;
		$p_codigo_app = NULL;
		$p_app_url = NULL;
		$p_idiomas = NULL;
		$p_activo = 1;

		$apps = SQLConnection::backendStoreProcedure('LED_fide_apps', array('SEARCH',NULL,NULL,NULL,NULL,NULL), 'select');
		return view('led/aplicaciones')->with(compact(['apps', 'p_accion', 'p_app_id', 'p_app_name', 'p_codigo_app', 'p_app_url', 'p_idiomas', 'p_activo']));
	}

	public static function aplicacionesSave() {
		$p_accion = Request::input('accion');
		$p_app_id = Request::input('app_id');
		$p_app_name = Request::input('app_name');
		$p_codigo_app = Request::input('codigo_app');
		$p_app_url = Request::input('app_url');
		$p_activo = Request::input('activo');
		$p_idiomas = Request::input('idiomas'); 

		$apps = SQLConnection::backendStoreProcedure('LED_fide_apps', array($p_accion,$p_app_id,$p_app_name,$p_codigo_app,$p_app_url,$p_activo, $p_idiomas), 'select');
		return redirect()->back();
	}

	public static function aplicacionesEdit() {
		$p_app_id = Request::input('app_id');
		$app = SQLConnection::backendStoreProcedure('LED_fide_apps', array('SELECT',$p_app_id,NULL,NULL,NULL,NULL), 'selectOne');
		$p_app_name = ($app->app_name != '') ? $app->app_name : NULL;
		$p_codigo_app = ($app->codigo_app != '') ? $app->codigo_app : NULL;
		$p_app_url = $app->app_url;
		$p_activo = $app->activo;
		$p_idiomas = $app->idiomas;
		return json_encode(array('accion' => 'UPDATE', 'app_id' => $p_app_id, 'app_name' => $p_app_name, 'codigo_app' => $p_codigo_app, 'app_url' => $p_app_url, 'activo' => $p_activo, 'idiomas' => $p_idiomas));
	}

	public static function aplicacionesDelete() {
		$p_app_id = Request::input('app_id');
		SQLConnection::backendStoreProcedure('LED_fide_apps', array('DELETE',$p_app_id,NULL,NULL,NULL,NULL));
		return redirect()->back();
	}


	/*****/

	public static function tiposDocumento() {
		$p_accion = 'INSERT';
		$p_f_tipo_doc = NULL;
		$p_f_nombre_tipo_doc = NULL;
		$p_f_descripcion = NULL;
		$p_country_code = NULL;
		$p_cliente = NULL;
		$p_f_modalidad = NULL;
		$p_f_tolerancia = NULL;
		$p_f_preaviso = NULL;
		$p_f_tipo_vencimiento = NULL;
		$p_f_dias_vigencia = NULL;
		$p_f_periodicidad = NULL;
		$p_f_dia = NULL;
		$p_f_mes = NULL;
		$p_requiere_upload = 1;
		$p_es_balance = 0;
		$p_es_informe_comercial = 0;
		$p_activo = 1;

		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$clientes = SQLConnection::backendStoreProcedure('backend_datos_clientes', array(NULL), 'select');

		$tiposdoc = SQLConnection::backendStoreProcedure('LED_fide_tipos_doc', array('SEARCH',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 'select');
		return view('led/tipos_documento')->with(compact(['tiposdoc', 'p_accion', 'p_f_tipo_doc', 'p_f_nombre_tipo_doc', 'p_f_descripcion', 'country', 'clientes', 'p_country_code', 'p_cliente', 'p_f_modalidad', 'p_f_tolerancia', 'p_f_preaviso', 'p_f_tipo_vencimiento', 'p_f_dias_vigencia', 'p_f_periodicidad', 'p_f_dia', 'p_f_mes', 'p_requiere_upload', 'p_es_balance', 'p_es_informe_comercial', 'p_activo']));
	}

	public function tiposDocumentoNew() {
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$clientes = SQLConnection::backendStoreProcedure('backend_datos_clientes', array(NULL), 'select');
		return view('led/tipos_documento_new')->with(compact(['country', 'clientes']));	
	}

	public static function tiposDocumentoEdit() {
		$acc = Request::input('accion');
		$p_f_tipo_doc = Request::input('f_tipo_doc');

		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$clientes = SQLConnection::backendStoreProcedure('backend_datos_clientes', array(NULL), 'select');
		$tipo = SQLConnection::backendStoreProcedure('LED_fide_tipos_doc', array('SELECT',$p_f_tipo_doc,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 'selectOne');

		return view('led/tipos_documento_edit')->with(compact(['country', 'clientes', 'p_f_tipo_doc', 'tipo']));
	}

	public static function tiposDocumentoDelete() {
		$acc = Request::input('accion');
		$p_f_tipo_doc = Request::input('f_tipo_doc');
		$tipo = SQLConnection::backendStoreProcedure('LED_fide_tipos_doc', array('SELECT',$p_f_tipo_doc,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 'selectOne');
		return view('led/tipos_documento_delete')->with(compact(['p_f_tipo_doc', 'tipo']));

	}


	public static function tiposDocumentoProc() {
		$p_accion = Request::input('accion');
		$p_f_tipo_doc = Request::input('f_tipo_doc') != '' ? Request::input('f_tipo_doc') : NULL;

		if($p_accion != 'DELETE') {

			$p_f_nombre_tipo_doc = Request::input('f_nombre_tipo_doc');
			$p_f_descripcion = Request::input('f_descripcion');
			$p_country_code = Request::input('country_code');
			$p_cliente = Request::input('cliente') != '' ? Request::input('cliente') : NULL;
			$p_f_modalidad = Request::input('f_modalidad');
			$p_f_tolerancia = Request::input('f_tolerancia') > 0 ? Request::input('f_tolerancia') : 0;
			$p_f_preaviso = Request::input('f_preaviso') > 0 ? Request::input('f_preaviso') : 0;
			$p_f_tipo_vencimiento = Request::input('f_tipo_vencimiento');
			$p_f_dias_vigencia = Request::input('f_dias_vigencia') > 0 ? Request::input('f_dias_vigencia') : 0;
			$p_f_periodicidad = Request::input('f_periodicidad');
			$p_f_dia = Request::input('f_dia');
			$p_f_mes = Request::input('f_mes');
			$p_requiere_upload = Request::input('requiere_upload') == 'on' ? 1 : 0;
			$p_es_balance = Request::input('es_balance') == 'on' ? 1 : 0;
			$p_es_informe_comercial = Request::input('es_informe_comercial') == 'on' ? 1 : 0;
			$p_activo = Request::input('activo');

			$tiposdoc = SQLConnection::backendStoreProcedure('LED_fide_tipos_doc', array($p_accion,$p_f_tipo_doc,$p_f_nombre_tipo_doc,$p_f_descripcion,$p_f_tipo_vencimiento,$p_f_modalidad,$p_f_periodicidad,$p_f_tolerancia,$p_f_preaviso,
																								$p_f_dias_vigencia,$p_f_dia,$p_f_mes,$p_country_code,$p_cliente,$p_requiere_upload,$p_es_balance,$p_es_informe_comercial,$p_activo), 'select');
			
		}
		else {
			SQLConnection::backendStoreProcedure('LED_fide_tipos_doc', array($p_accion,$p_f_tipo_doc,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 'selectOne');
		}

		return redirect()->back();

	}


	public static function tiposDocumentoEquivalencias() {
		$p_f_tipo_doc = Request::input('f_tipo_doc') != '' ? Request::input('f_tipo_doc') : NULL;
		if($p_f_tipo_doc > 0) {
			$tipo = SQLConnection::backendStoreProcedure('LED_fide_tipos_doc', array('SELECT',$p_f_tipo_doc,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 'selectOne');			
			$equivalencias = SQLConnection::backendStoreProcedure('LED_fide_equiv', array('SEARCH',$p_f_tipo_doc,NULL,NULL), 'select');

			return view('/led/tipos_documento_equivalencias')->with(compact(['tipo', 'equivalencias']));
		}
	}

	public static function tiposDocumentoEquivalenciasNew() {
		$p_f_tipo_doc = Request::input('f_tipo_doc') != '' ? Request::input('f_tipo_doc') : NULL;
		if($p_f_tipo_doc > 0) {
			$tipo = SQLConnection::backendStoreProcedure('LED_fide_tipos_doc', array('SELECT',$p_f_tipo_doc,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 'selectOne');			
			$apps = SQLConnection::backendStoreProcedure('LED_fide_apps', array('SEARCH',NULL,NULL,NULL,NULL,NULL), 'select');
			return view('/led/tipos_documento_equivalencias_new')->with(compact(['tipo', 'apps']));
		}
	}

	public static function tiposDocumentoEquivalenciasSearch() {
		$p_app_id = Request::input('app_id');
		$p_nombre_tipo_doc = Request::input('nombre_tipo_doc');

		if($p_app_id > 0 and $p_nombre_tipo_doc != "") {
			$tipos = SQLConnection::backendStoreProcedure('LED_search_tipos_doc', array($p_app_id, NULL, $p_nombre_tipo_doc), 'select');
			return view('/led/tipos_documento_equivalencias_search')->with(compact(['p_app_id', 'tipos']));
		}
	}

	public static function tiposDocumentoEquivalenciasAdd() {
		$p_f_tipo_doc = Request::input('f_tipo_doc');
		$p_app_id = Request::input('app_id');
		$p_tipo_doc = Request::input('tipo_doc');
		$tmp = SQLConnection::backendStoreProcedure('LED_fide_equiv', array('INSERT',$p_f_tipo_doc,$p_app_id,$p_tipo_doc), 'selectOne');
		return redirect()->back();
	}


	public static function tiposDocumentoEquivalenciasGet() {
		$p_f_tipo_doc = Request::input('f_tipo_doc');
		$p_app_id = Request::input('app_id');
		$p_tipo_doc = Request::input('tipo_doc');
		if($p_app_id > 0 AND $p_app_id > 0 AND $p_tipo_doc > 0) {
			$data = SQLConnection::backendStoreProcedure('LED_fide_equiv', array('SEARCH',$p_f_tipo_doc,$p_app_id,$p_tipo_doc), 'selectOne');
			return view('/led/tipos_documento_equivalencias_delete')->with(compact(['data']));
		}
	}

	public static function tiposDocumentoEquivalenciasDelete() {
		$p_f_tipo_doc = Request::input('f_tipo_doc');
		$p_app_id = Request::input('app_id');
		$p_tipo_doc = Request::input('tipo_doc');
		if($p_app_id > 0 AND $p_app_id > 0 AND $p_tipo_doc > 0) {
			$temp = SQLConnection::backendStoreProcedure('LED_fide_equiv', array('DELETE',$p_f_tipo_doc,$p_app_id,$p_tipo_doc), 'selectOne');
		}
		return redirect()->back();		
		
	}


	/****/

	public static function tiposLegajo() {
		$tiposlegajo = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',NULL,null,null,null,null,null,null), 'select');
		return view('/led/tipos_legajo')->with(compact(['tiposlegajo']));
	}


	public static function tiposLegajoNew() {
		$clte = NULL !== Request::input('cliente') ? Request::input('cliente') : NULL;

		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$claseleg = SQLConnection::backendStoreProcedure('LED_clase_legajo', array('SELECT', null, null), 'select');
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',$clte,NULL,NULL,NULL), 'select');
		return view('/led/tipos_legajo_new')->with(compact(['country', 'claseleg', 'clientes']));
	}

	public static function tiposLegajoInsert() {
		$temp = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('INSERT',NULL,Request::input('nombre_tipo_legajo'),Request::input('cliente'),Request::input('country_code'),Request::input('clase_legajo'),Request::input('dia_envio_notificaciones'),Request::input('dias_tolerancia_inicial')), 'selectOne');
		return redirect()->back();
	}

	public static function tiposLegajoEdit() {
		/* param opcional que viene en el request. El combo cliente en el formulario edición muestra todos los clientes o sólo el asignado al tipo de legajo */
		$cli = NULL !== Request::input('cliente') ? Request::input('cliente') : NULL;

		$tipoleg = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',Request::input('tipo_legajo'),null,null,null,null,null,null), 'selectOne');
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$claseleg = SQLConnection::backendStoreProcedure('LED_clase_legajo', array('SELECT', null, null), 'select');
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL), 'select');
		return view('/led/tipos_legajo_edit')->with(compact(['tipoleg', 'country', 'claseleg', 'clientes', 'cli']));
	}


	public static function tiposLegajoUpdate() {
		$temp = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('UPDATE',Request::input('tipo_legajo'),Request::input('nombre_tipo_legajo'),Request::input('cliente'),Request::input('country_code'),Request::input('clase_legajo'),Request::input('dia_envio_notificaciones'),Request::input('dias_tolerancia_inicial')), 'selectOne');
		return redirect()->back();
	}

	public static function tiposLegajoClienteUpdate() {
		$temp = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('UPDATE',Request::input('tipo_legajo'),Request::input('nombre_tipo_legajo'),Request::input('cliente'),Request::input('country_code'),Request::input('clase_legajo'),Request::input('dia_envio_notificaciones'),Request::input('dias_tolerancia_inicial')), 'selectOne');
		$cli = Request::input('cliente');

		$clte = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',$cli,NULL,NULL,NULL), 'selectOne');
		$tiposlegajo = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',NULL,null,$cli,null,null,null,null), 'select');
		return view('/led/led_clientes_legajos')->with(compact(['tiposlegajo']));

	}

	public static function tiposLegajoDelete() {
		$cli = NULL !== Request::input('cliente') ? Request::input('cliente') : NULL;
		$tipoleg = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',Request::input('tipo_legajo'),null,null,null,null,null,null), 'selectOne');
		return view('/led/tipos_legajo_delete')->with(compact(['tipoleg', 'cli']));		
	}

	public static function tiposLegajoDeleteKey() {
		$temp = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('DELETE',Request::input('tipo_legajo'),null,null,null,null,null,null));
		return redirect()->back();
	}

	public static function tiposLegajoClienteDelete() {
		$temp = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('DELETE',Request::input('tipo_legajo'),Request::input('nombre_tipo_legajo'),Request::input('cliente'),Request::input('country_code'),Request::input('clase_legajo'),Request::input('dia_envio_notificaciones'),Request::input('dias_tolerancia_inicial')), 'selectOne');
		$cli = Request::input('cliente');

		$tiposlegajo = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',NULL,null,$cli,null,null,null,null), 'select');
		return view('/led/led_clientes_legajos')->with(compact(['tiposlegajo']));
	}


	/** para la copia de legajos **/
	public static function tiposLegajoSearch() {
		$cliente = Request::input('cliente');
		$tiposlegajo = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',NULL,null,null,null,null,null,null), 'select');

		return view('/led/tipos_legajo_search')->with(compact(['cliente', 'tiposlegajo']));
	}

	public static function tiposLegajoSource() {
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',Request::input('cliente'),NULL,NULL,NULL), 'selectOne');
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$claseleg = SQLConnection::backendStoreProcedure('LED_clase_legajo', array('SELECT', null, null), 'select');
		$tipoleg = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',Request::input('tipo_legajo'),null,null,null,null,null,null), 'selectOne');

		return view('/led/tipos_legajo_source')->with(compact(['clientes', 'country', 'claseleg', 'tipoleg']));
	}

	public static function tiposLegajoCopy() {
		$newid = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('INSERT',NULL,Request::input('nombre_tipo_legajo'),Request::input('cliente'),Request::input('country_code'),Request::input('clase_legajo'),Request::input('dia_envio_notificaciones'),Request::input('dias_tolerancia_inicial')), 'selectOne');

		$source = Request::input('tipo_legajo_source');
		$temp = SQLConnection::backendStoreProcedure('LED_tipo_legajo_copy_docs', array($source, $newid->tipo_legajo), 'selectOne');

		$tiposlegajo = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',NULL,null,Request::input('cliente'),null,null,null,null), 'select');
		return view('/led/led_clientes_legajos')->with(compact(['tiposlegajo']));
	}


	/*****/

	public static function tipoDocTipoLegajo() {
		$tipoleg = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',Request::input('tipo_legajo'),null,null,null,null,null,null), 'selectOne');
		$doctipolegajo = SQLConnection::backendStoreProcedure('LED_tipo_doc_tipo_legajo', array('SELECT',NULL,Request::input('tipo_legajo'),null,null), 'select');
		return view('/led/tipo_doc_tipo_legajo')->with(compact(['tipoleg', 'doctipolegajo']));
		
	}

	public static function tipoDocSearch() {
		$tipos = SQLConnection::backendStoreProcedure('LED_search_tipos_doc', array(NULL, 'GDL', Request::input('nombre_tipo_doc')), 'select');
		return json_encode($tipos);
	}

	public static function tipoLegajoAddTipoDoc() {
		$tipoleg = Request::input('tipo_legajo');
		$tipodoc = Request::input('tipo_doc');
		$atipos = explode(',', $tipodoc);

		foreach($atipos AS $td) {
			$tmp = SQLConnection::backendStoreProcedure('LED_tipo_doc_tipo_legajo', array('INSERT',$td,$tipoleg,1,0));
		}
		$doctipolegajo = SQLConnection::backendStoreProcedure('LED_tipo_doc_tipo_legajo', array('SELECT',NULL,$tipoleg,null,null), 'select');
		return json_encode($doctipolegajo);
	}

	public static function tipoLegajoRemoveTipoDoc() {
		$tipoleg = Request::input('tipo_legajo');
		$tipodoc = Request::input('tipo_doc');
		$atipos = explode(',', $tipodoc);

		foreach($atipos AS $td) {
			$tmp = SQLConnection::backendStoreProcedure('LED_tipo_doc_tipo_legajo', array('DELETE',$td,$tipoleg,NULL,NULL));
		}
		$doctipolegajo = SQLConnection::backendStoreProcedure('LED_tipo_doc_tipo_legajo', array('SELECT',NULL,$tipoleg,null,null), 'select');
		return json_encode($doctipolegajo);

	}


	/****/


	public static function ledClientes() {
		/** selector de LED / inquiro vitae **/
		$producto_fidelitas = (NULL !== Request::input('prod')) ? Request::input('prod') : 47;

		// todos los productos : 47 - 10 (paso 0)
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL, 0), 'select');
		// $clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL, 0, env('PLATAFORMA')), 'select');
		$servicios = []; 
		foreach ($clientes as $cliente)  
		{
		   $servicios_clientes[$cliente->cliente] = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cliente->cliente), 'select');
		}
        // dd($servicios_clientes);
		return view('/led/led_clientes')->with(compact(['clientes', 'producto_fidelitas','servicios_clientes']));
	}

	public static function ledClientesSearch() {
		$ident = Request::input('identificacion') != '' ? Request::input('identificacion') : NULL;
		$nom = Request::input('nombre_cliente') != '' ? Request::input('nombre_cliente') : NULL;
		$busqueda = SQLConnection::backendStoreProcedure('LED_Clientes', array('search',NULL,$nom,$ident,NULL), 'select');
		return view('/led/led_clientes_search')->with(compact(['busqueda']));
	}

	public static function ledClientesAction() {
		$acc = Request::input('accion');
		$cli = Request::input('cliente');
		$temp = SQLConnection::backendStoreProcedure('LED_Clientes', array($acc,$cli,NULL,NULL,NULL), 'selectOne');
		return redirect()->back();
	}

	public static function ledClientesConfig() {
		$cli = Request::input('cliente');
		$clte = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',$cli,NULL,NULL,NULL), 'selectOne');
		$tiposlegajo = SQLConnection::backendStoreProcedure('LED_tipo_legajo', array('SELECT',NULL,null,$cli,null,null,null,null), 'select');
		return view('/led/led_clientes_config')->with(compact(['clte', 'tiposlegajo']));
	}

	public static function ledClientesConfigOptions	() {
		$cli = Request::input('cliente');
		return view('/led/led_clientes_config_options')->with(compact(['cli']));
	}
    
    /**** AUTO LOGIN CLIENTES LED ****/

    public function ledClientesAutoLoginProdUs() {
        $cliente = Request::input('cliente');
        $productosDelCliente = $servicios_clientes[$cliente] = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cliente), 'select');
		//-----

        return json_encode(array('productos' => $productosDelCliente));
    }

    public function ledClientesAutologin(){
        $cliente = Request::input('cliente');
        $servicio_select = Request::input('servicio_select');
        // ---
        $sesion = Request::session()->all();
        $as_user_id = $sesion['usuario']->user_id;
        $last_name = $sesion['usuario']->last_name;
        $first_name = $sesion['usuario']->first_name;
        $email = $sesion['usuario']->email;
        $username = $sesion['usuario']->username;
        // ---
        $params = array($cliente);
		$usuarios_productos = SQLConnection::backendStoreProcedure("backend_usuarios_productos",$params,'select');
        $usuario = '';
        $nombre_prod = '';
        foreach ($usuarios_productos as $user_prod) {
            if ($user_prod->id_producto == $servicio_select && $user_prod->cli_codigo != NULL) {
                if ($user_prod->user_id == null || $user_prod->active_user == 'N') {
                    continue;
                } else {
                    $usuario = $user_prod->user_id;
                    $nombre_prod = $user_prod->nombre_producto;
                    break;
                }  
            }
            if ($usuario != ''){ break;}
        }
        if ($usuario == '') {
            return 'Sin usuarios';
        }
        // Consulta que trae el cookie id del usuario que se desea autologuear




        $as_login = SQLConnection::backendStoreProcedure('USER_AS_LOGIN', array('datos_usuario',$cliente,$servicio_select,$as_user_id,$last_name,$first_name,$email,$username));
        // dd($as_login);
        if( !empty($as_login) ) {
            $link = $as_login[0]->user_id . '|' . $as_login[0]->cookie_id . '|' . $as_login[0]->cliente . '|' . $as_login[0]->servicio_contratado . '|' . $as_login[0]->as_userid . '|' . $as_login[0]->last_name . '|' . $as_login[0]->first_name . '|' . $as_login[0]->email . '|' . $as_login[0]->username . '|' . $servicio_select;
            $link = base64_encode($link);$url_base = env('URL_FIDE_CLI');
        
            if( $servicio_select == env('IV_PRODUCTO')) {
                $url_base = env('URL_INQUIRO_CLI');
            } else if ($servicio_select == env('IMPE_PRODUCTO')) {
                $url_base = env('URL_IMPERIUM_CLI');
            }
    
            $url_base = $url_base . '/autologin';

            
            return json_encode(array('url' => $url_base, 'ident' => $link));
        } else {
            return 'Sin usuarios';
        }

        
        
    }


	/*** FIN AUTO LOGIN CLIENTES LED ****/

	public static function ledProductos() {
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$prd = SQLConnection::backendStoreProcedure('LN_productos_', array('search', null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null, null, null), 'select');
		return view('/led/led_productos')->with(compact(['country', 'prd']));
	}

	public static function ledProductosForm() {
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');

		$prodconsumos = DB::select("select * from productos where estado_producto = 'A' order by nombre_producto");
		return view('/led/led_productos_new')->with(compact(['country', 'prodconsumos']));	
	}

	public static function ledProductosNew() {

		$np = Request::input('nombre_producto');
		$cc = ('' != Request::input('country_code')) ? Request::input('country_code') : NULL;
		$etiq = Request::input('etiqueta');
		$icon = Request::input('class_icon');
		$descr = Request::input('descripcion');
		$producto_id = Request::input('producto_id');
		$brief = null != Request::input('visible_brief') ? 1 : 0;
		$act = Request::input('visible') == 1 ? 1 : 0;

		$bal = null != Request::input('balance') ? 1 : 0;
		$bal_carga = ($bal == 1) ? (null != Request::input('balance_carga') ? 1 : 0) : 0;
		$bal_anal = ($bal == 1) ? (null != Request::input('balance_analisis') ? 1 : 0) : 0;
		$bal_score = ($bal == 1) ? (null != Request::input('balance_score') ? 1 : 0) : 0;
		$bal_valor = ($bal == 1) ? (null != Request::input('balance_valoracion') ? 1 : 0) : 0;

		$docs = null != Request::input('documentos') ? 1 : 0;
		$subc = null != Request::input('subcontratistas') ? 1 : 0;
		$dossier = null != Request::input('dossier') ? 1 : 0;
		$suscribe_ind = null != Request::input('suscribe_ind') ? 1 : 0;
		$prodcons = null != Request::input('producto_consumos') ? Request::input('producto_consumos') : null;

		$temp = SQLConnection::backendStoreProcedure('LN_productos_', array('insert', null, $np, $cc, $etiq, $icon, $descr, $brief, $act, Session::get('usuario')->user_id, $bal, $bal_carga, $bal_anal, $bal_score, $bal_valor, $docs, $subc, $producto_id, $dossier, $prodcons,$suscribe_ind), 'selectOne');

		/*$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$prd = SQLConnection::backendStoreProcedure('LN_productos_', array('SELECT', null, null, null, null, Session::get('usuario')->user_id), 'select');
		return view('/led/led_productos')->with(compact(['country', 'prd']));*/
		return redirect()->back();

	}


	public static function ledProductosEdit() {

		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$id = Request::input('producto');
		$prd = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $id, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null, null, null), 'selectOne');
		$prodconsumos = DB::select("select * from productos where estado_producto = 'A' order by nombre_producto");
		return view('/led/led_productos_edit')	->with(compact(['country', 'prd', 'prodconsumos']));

	}

	public static function ledProductosUpdate() {
		$id = Request::input('producto');
		$np = Request::input('nombre_producto');
		$cc = ('' != Request::input('country_code')) ? Request::input('country_code') : NULL;
		$etiq = Request::input('etiqueta');
		$icon = Request::input('class_icon');
		$descr = Request::input('descripcion');
		$producto_id = Request::input('producto_id');
		$brief = null != Request::input('visible_brief') ? 1 : 0;
		$act = null != Request::input('visible') ? 1 : 0;

		$bal = null != Request::input('balance') ? 1 : 0;
		$bal_carga = ($bal == 1) ? (null != Request::input('balance_carga') ? 1 : 0) : 0;
		$bal_anal = ($bal == 1) ? (null != Request::input('balance_analisis') ? 1 : 0) : 0;
		$bal_score = ($bal == 1) ? (null != Request::input('balance_score') ? 1 : 0) : 0;
		$bal_valor = ($bal == 1) ? (null != Request::input('balance_valoracion') ? 1 : 0) : 0;

		$docs = null != Request::input('documentos') ? 1 : 0;
		$subc = null != Request::input('subcontratistas') ? 1 : 0;
		$dossier = null != Request::input('dossier') ? 1 : 0;
		$suscribe_ind = null != Request::input('suscribe_ind') ? 1 : 0;

		$prodcons = null != Request::input('producto_consumos') ? Request::input('producto_consumos') : null;

		$temp = SQLConnection::backendStoreProcedure('LN_productos_', array('update', $id, $np, $cc, $etiq, $icon, $descr, $brief, $act, Session::get('usuario')->user_id, $bal, $bal_carga, $bal_anal, $bal_score, $bal_valor, $docs, $subc, $producto_id, $dossier, $prodcons,$suscribe_ind), 'selectOne');
		return redirect()->back();
	}

	/******/

	public static function ledIndicadores() {
		$id = Request::input('producto');
		$prd = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $id, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null, null, null), 'selectOne');
		$ind = SQLConnection::backendStoreProcedure('LN_indicadores_', array('search', null, $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		return view('/led/led_indicadores')->with(compact(['prd', 'ind']));
	}

	public static function ledIndicadoresNew() {
		$id = Request::input('producto');
		$prd = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $id, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null, null, null), 'selectOne');
		return view('/led/led_indicadores_new')->with(compact(['prd']));
	}

	public static function ledIndicadoresInsert() {
		$id = Request::input('producto');
		$nombre = Request::input('nombre_indicador');
		$etiq = Request::input('etiqueta');
		$clave = Request::input('clave_indicador');
		$valor = Request::input('valoracion');
		$tipod = Request::input('tipo_dato');
		
		$rango = null != Request::input('rango') ? 1: 0;

		$ri = ($tipod == 'I' OR $tipod == 'F') ? ($rango == 1 ? Request::input('rango_inferior') : null) : null;
		$rs = ($tipod == 'I' OR $tipod == 'F') ? ($rango == 1 ? Request::input('rango_superior') : null) : null;
		$int = ($tipod == 'I' OR $tipod == 'F') ? ($rango == 1 ? Request::input('intervalo') : null) : null;

		$labels = Request::input('etiq_post');
		$values = Request::input('valor_post');
		$opciones = NULL;
		if($tipod == 'S') {
			$opciones = implode('|', $labels).'^'.implode('|', $values);
		}


		$tipoc = Request::input('tipo_control');
		$vis = null != Request::input('visible') ? 1: 0;

		$params = array('INSERT', null, $id, $nombre, $etiq, $clave, $valor, $tipod, $ri, $rs, $int, null, $opciones, $tipoc, $vis, Session::get('usuario')->user_id);

		//dd($params);
		
		$temp = SQLConnection::backendStoreProcedure('LN_indicadores_', $params, 'selectOne');

		return view('/led/led_indicadores_back')->with(compact(['id']));
	}

	public static function ledIndicadoresEdit() {
		$id = Request::input('indicador');
		$ind = SQLConnection::backendStoreProcedure('LN_indicadores_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

		$etiq = [];
		$vals = [];
		$tipo = $ind->tipo_dato;
		if($tipo == 'S') {
			if($ind->opciones != null) {
				$op = explode("^", $ind->opciones);
				$etiq = explode("|", $op[0]);
				$vals = explode("|", $op[1]);			
			}
		}

		return view('/led/led_indicadores_edit')->with(compact(['ind', 'etiq', 'vals']));
	}

	public static function ledIndicadoresUpdate() {
		$ind = Request::input('indicador');
		$id = Request::input('producto');
		$nombre = Request::input('nombre_indicador');
		$etiq = Request::input('etiqueta');
		$clave = Request::input('clave_indicador');
		$val = Request::input('valoracion');
		$tipod = Request::input('tipo_dato');
		
		$rango = null != Request::input('rango') ? 1: 0;

		$ri = ($tipod == 'I' OR $tipod == 'F') ? ($rango == 1 ? Request::input('rango_inferior') : null) : null;
		$rs = ($tipod == 'I' OR $tipod == 'F') ? ($rango == 1 ? Request::input('rango_superior') : null) : null;
		$int = ($tipod == 'I' OR $tipod == 'F') ? ($rango == 1 ? Request::input('intervalo') : null) : null;

		$labels = Request::input('etiq_post');
		$values = Request::input('valor_post');
		$opciones = NULL;
	
		if($tipod == 'S' && count($labels) > 0 ) {
			$opciones = implode('|', $labels).'^'.implode('|', $values);
		}


		$tipoc = Request::input('tipo_control');
		$vis = null != Request::input('visible') ? 1: 0;
		
		$temp = SQLConnection::backendStoreProcedure('LN_indicadores_', array('update', $ind, $id, $nombre, $etiq, $clave, $val, $tipod, $ri, $rs, $int, null, $opciones, $tipoc, $vis, Session::get('usuario')->user_id), 'selectOne');

		return view('/led/led_indicadores_back')->with(compact(['id']));
	}

	public static function ledIndicadoresMove() {
		$ind = Request::input('indicador');
		$id = Request::input('producto');
		$move = Request::input('move');
		$temp = SQLConnection::backendStoreProcedure('LN_indicadores_', array($move, $ind, null, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		return view('/led/led_indicadores_back')->with(compact(['id']));
	}


	public static function ledIndicadoresConfirm() {
		$id = Request::input('indicador');
		$ind = SQLConnection::backendStoreProcedure('LN_indicadores_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		return view('/led/led_indicadores_confirm')->with(compact(['ind']));
	}

	public static function ledIndicadoresDelete() {
		$ind = Request::input('indicador');
		$id = Request::input('producto');
		$temp = SQLConnection::backendStoreProcedure('LN_indicadores_', array('delete', $ind, null, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		return view('/led/led_indicadores_back')->with(compact(['id']));		
	}

	/******/

	public static function ledClienteProductos() {
		$producto_fidelitas = Request::input('producto_fidelitas');
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',Request::input('cliente'),NULL,NULL,NULL, NULL), 'selectOne');
		$prd = SQLConnection::backendStoreProcedure('LN_productos_', array('search', null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null, null, null), 'select');
		$prodcli = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('search', $cli->cliente, null, null, null, null, Session::get('usuario')->user_id), 'select');
		
		return view('/led/led_cliente_productos')->with(compact(['cli', 'prd', 'prodcli', 'producto_fidelitas']));
	}

	public static function ledClienteProductosUpdate() {
		$acc = Request::input('accion');
		$cli = Request::input('cliente');
		$prod = Request::input('producto');
		$producto_fidelitas = Request::input('producto_fidelitas');

		if($acc == 'suscribe') {
			$temp = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('insert', $cli, $prod, 1, null, 1, Session::get('usuario')->user_id), 'selectOne');
		}
		else {
			if($acc == 'delete') {
				$temp = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('delete', $cli, $prod, NULL, null, null, Session::get('usuario')->user_id), 'selectOne');
			}

			else {

				if($acc == 'up') {
					$temp = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('up', $cli, $prod, NULL, null, null, Session::get('usuario')->user_id), 'selectOne');
				}
				else {

					if($acc == 'down') {
						$temp = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('down', $cli, $prod, NULL, null, null, Session::get('usuario')->user_id), 'selectOne');
					}

					else {

						/*$t1 = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('select', $cli, $prod, NULL, null,null, Session::get('usuario')->user_id), 'selectOne');
						if($t1->activo >0) {
							$act = 0;
						}
						else {
							$act = 1;
						}*/


						$visib = Request::input('visibilidad_default');
						$act = null != Request::input('activo') ? 1 : 0;
						$dias_tolerancia = null != Request::input('dias_tolerancia_inicial') ? Request::input('dias_tolerancia_inicial') : null;
						$etiqpers = Request::input("etiqueta_personalizada");

						$cp = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('select', $cli, $prod, NULL, null,null, Session::get('usuario')->user_id), 'selectOne');
						if ($cp->balance > 0) {

							$version_balance = !empty(Request::input('version_balance')) ? Request::input('version_balance') : NULL;
							if (NULL != $version_balance) {
								$tmp = DB::selectOne("update LN_cliente_productos set version_balance = '" . $version_balance . "' where 
																	cliente = " . $cli . " and producto = " . $prod);
							}
						}


						$temp = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('update', $cli, $prod, $act, null, $visib, Session::get('usuario')->user_id, $dias_tolerancia, $etiqpers), 'selectOne');
					}

				}

			}

		}
		return view('/led/led_cliente_productos_update')->with(compact(['cli', 'producto_fidelitas']));
	}



	public static function ledClienteProductosEdit() {
		$accion = Request::input('accion');
		$cli = Request::input('cliente');
		$prod = Request::input('producto');
		$producto_fidelitas = Request::input('producto_fidelitas');
		$data = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('select', $cli, $prod, NULL, null, null, Session::get('usuario')->user_id), 'selectOne');
		return view('/led/led_cliente_productos_edit')->with(compact(['accion', 'data', 'producto_fidelitas']));
	}


	public static function ledClienteProductosPonderacion() {
		$cli = Request::input('cliente');
		$data = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('search', $cli, null, NULL, null, null, null), 'select');
		foreach ($data as $cliprod) {
			$prod = $cliprod->producto;
			if(null !== Request::input('ponderacion_' . $prod)) {
				$temp = SQLConnection::backendStoreProcedure('LN_cliente_productos_ponderacion', array($cli, $prod, Request::input('ponderacion_' . $prod), Session::get('usuario')->user_id), 'selectOne');
			}
		}
		$resultado = array( 'result' => 0, 'errortext' => 'Sin error' );
		return json_encode($resultado);
	}

	public static function ledClienteIndicadores() {
		$cli = Request::input('cliente');
		$prod = Request::input('producto');
		$producto_fidelitas = !empty(Request::input('producto_fidelitas')) ? Request::input('producto_fidelitas') : 47;

		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cli,NULL,NULL,NULL, NULL), 'selectOne');
		$producto = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $prod, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null, null, null), 'selectOne');

		$disponibles = SQLConnection::backendStoreProcedure('LN_cliente_indicadores_', array('disponibles', $cli, NULL, $prod), 'select');
		$asignados = SQLConnection::backendStoreProcedure('LN_cliente_indicadores_', array('search', $cli, NULL, $prod), 'select');

		return view('/led/led_cliente_indicadores')->with(compact(['cliente', 'producto', 'disponibles', 'asignados', 'producto_fidelitas']));
	}

	public static function ledClienteIndicadoresMove() {
		$cli = Request::input('cliente');
		$prod = Request::input('producto');
		$move = Request::input('move');

		$disp = !empty(Request::input('disponibles')) ? Request::input('disponibles') : NULL;
		$asig = !empty(Request::input('asignados')) ? Request::input('asignados') : NULL;

		$indicadores = ($move == 'right') ? ( NULL !== $disp ? $disp : NULL ) : ( NULL !== $asig ? $asig : NULL );

		$duplicado = 0;

		if (NULL !== $indicadores) {

			$ind = explode(",", $indicadores);

			foreach ($ind as $key => $indicador) {
				if ($move == 'right') {

					/* No debe existir para el mismo cliente dos indicadores de balance con la misma clave, caso SCORE (manual o automático) 
									SALVO QUE PERTENEZCAN A PRODUCTOS DISTINTOS 
					*/
					$chk = DB::selectOne("select count(*) as preex 
														from LN_cliente_indicadores 
														inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
														where LN_cliente_indicadores.cliente = " . $cli . " and LN_indicadores.clave_indicador = 
															(select clave_indicador from LN_indicadores where indicador = " . $indicador . ")
														and LN_indicadores.producto = (select producto from LN_indicadores where indicador = " . $indicador . ")");

					$duplicado = $chk->preex;

					if ($duplicado == 0){
						$temp = SQLConnection::backendStoreProcedure('LN_cliente_indicadores_', array('insert', $cli, $indicador, NULL, Session::get('usuario')->user_id));
					}

				}
				else {
					$temp = SQLConnection::backendStoreProcedure('LN_cliente_indicadores_', array('delete', $cli, $indicador, NULL, Session::get('usuario')->user_id));
				}
			}
		}

		$disponibles = SQLConnection::backendStoreProcedure('LN_cliente_indicadores_', array('disponibles', $cli, NULL, $prod), 'select');
		$asignados = SQLConnection::backendStoreProcedure('LN_cliente_indicadores_', array('search', $cli, NULL, $prod), 'select');

		return json_encode( array($disponibles, $asignados, $duplicado) );

	}


	
	public static function ledValoracionCamposDocumentos() {
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',Request::input('cliente'),NULL,NULL,NULL), 'selectOne');
		$tipo_doc   = []; 
		$tipo_doc = SQLConnection::backendStoreProcedure('LN_tipo_doc_campos_puntos_', array('documentos',Request::input('cliente')), 'select');
		
   		return view('/led/led_valoracion_campos_documentos')->with(compact(['cli', 'tipo_doc']));
	} 
	public static function ledValoracionCamposDocumentos2() {
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',Request::input('cliente'),NULL,NULL,NULL), 'selectOne');
		$campos = []; 
		$campos = SQLConnection::backendStoreProcedure('LN_tipo_doc_campos_puntos_', array('campos',Request::input('cliente'),Request::input('set'),Request::input('doc')), 'select');
			$valorescampos = [];
		foreach ($campos as $key => $fld) {
			$valorestxt = [];
			$valoresval = [];
			$puntosval  = [];
			$puntospto  = [];
			$valorescampo = [];
			if(strlen($fld->opciones) > 0) {						
				$r = explode("^", $fld->opciones);
				$txt = [];
				$val = [];
				if(sizeof($r) >= 2) {
					$txt = explode("|", $r[0]);
					$val = explode("|", $r[1]);
				}
				$valorestxt  = $txt;
				$valoresval = $val;
			}
			if(strlen($fld->opciones_puntos) > 0) {						
				$r = explode("^", $fld->opciones_puntos);
				$val = [];
				$pto = [];
				if(sizeof($r) >= 2) {
					$val = explode("|", $r[0]);
					$pto = explode("|", $r[1]);
				}
				$puntosval = $val;
				$puntospto = $pto;

				foreach ($valoresval as $keyV => $value) {
					foreach ($puntosval as $keyP => $punto) {
						if ($punto == $value)
						{
							$valorescampos[$keyV]['txt']    = $valorestxt[$keyV]; 
							$valorescampos[$keyV]['valor']  = $valoresval[$keyV]; 
							$valorescampos[$keyV]['puntos'] = $puntospto[$keyV]; 
						}
					}
				}
			}
			else 
			{
				foreach ($valoresval as $keyV => $valor) {
					$valorescampos[$keyV]['txt']    = $valorestxt[$keyV]; 
					$valorescampos[$keyV]['valor']  = $valoresval[$keyV]; 
					$valorescampos[$keyV]['puntos'] = 0; 
				}
			}

			$campos[$key]->valorescampos = $valorescampos;
			unset($valorestxt);
			unset($valoresval);
			unset($puntosval);
			unset($puntospto);
			unset($valorescampos);
		}
   		return view('/led/led_valoracion_campos_documentos_2')->with(compact(['cli','campos']));
	} 
	public static function ledValoracionCamposDocumentos3() {

		$cliente  = Request::input('cliente');
		$set_doc  = Request::input('set_doc');
		$tipo_doc = Request::input('tipo_doc');
		$seccion  = Request::input('seccion');
		$campo    = Request::input('campo');

		$valores  = Request::input('valores');
		$puntos   = Request::input('puntos');
		$val 	= implode("|",$valores);
		$ptos 	= implode("|",$puntos);

		$values = $val . '^' . $ptos;
		//var_dump($values); die(); 

		$grabar = SQLConnection::backendStoreProcedure('LN_tipo_doc_campos_puntos_', array('grabar',$cliente,$set_doc,$tipo_doc,$seccion,$campo,$values),'selectOne');
		return $grabar->respuesta; 
    }

    public static function ledClientePersonalizacion() {
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',Request::input('cliente'),NULL,NULL,NULL), 'selectOne');
		$asignables = SQLConnection::backendStoreProcedure('multi_web_', array('asignables'), 'select');
		$disponibles = SQLConnection::backendStoreProcedure('multi_web_', array('disponibles'), 'select');
		$asignadas = SQLConnection::backendStoreProcedure('multi_web_', array('asignados',NULL,NULL,Request::input('cliente')), 'select');
		$total = sizeof($asignadas);
		return view('/led/led_cliente_personalizacion')->with(compact(['cli', 'asignables', 'disponibles', 'total', 'asignadas']));
	}

	public static function ledClientePersonalizacionUpdate() {
		$cliente = Request::input('cliente');
		$pers = Request::input('pers');
		$webs = Request::input('web_id');
		$sender = Request::input('sender');

		if ($pers == 0) {
			$temp = SQLConnection::backendStoreProcedure('multi_web_', array('desasignar',NULL,NULL,$cliente), 'selectOne');
		}
		else {
			foreach($webs as $web_id) {
				$temp = SQLConnection::backendStoreProcedure('multi_web_', array('asignar',$web_id,NULL,$cliente,$sender), 'selectOne');
			}	
		}

		return json_encode(array('result'=>true));
		
	}

	public static function ledClienteUsuarios() {
		$cli = Request::input('cliente');
		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cli,NULL,NULL,NULL), 'selectOne');

		// trae la lista de usuarios activos del cliente y una columna 'productos' con la lista de productos LED que puede acceder. NULL indica todos
		$usuarios = SQLConnection::backendStoreProcedure('LN_usuarios_productos_', array('cliente',NULL,NULL,$cli), 'select');

		return view('/led/led_cliente_usuarios')->with(compact(['cliente', 'usuarios']));
	}

	public static function ledUsuariosServicios() {
		$cli = Request::input('cliente');
		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cli,NULL,NULL,NULL), 'selectOne');
		return view('/led/led_usuario_servicios')->with(compact(['cliente', 'usuarios']));
	}


	public static function ledPanelJson() {
		echo(var_dump("Generando panel..."));
		$cli = Request::input('cliente');	
		$producto = Request::input('producto');	
		$paneles = env('URL_FIDELITAS') . '/led/led-panel-control-file';
		$params = '?cliente=' . $cli . '&cs=' . $producto;
		$fancy  = self::CURLCallPaneles($paneles.$params,'',"GET");
		//return redirect()->back();
		echo  "<script type='text/javascript'>";
		echo "window.close();";
		echo "</script>";
	}
	
	
	public static function CURLCallPaneles($url,$params,$type="POST"){
		$curl = curl_init();
		curl_setopt_array($curl, array(
								CURLOPT_URL => $url,
								CURLOPT_RETURNTRANSFER => true,
								CURLOPT_ENCODING => "UTF-8",
								CURLOPT_MAXREDIRS => 10,
								CURLOPT_TIMEOUT => 3600,
								CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
								CURLOPT_CUSTOMREQUEST => $type,
								CURLOPT_POSTFIELDS => $params,
								CURLOPT_SSL_CIPHER_LIST => 'DEFAULT@SECLEVEL=1',
								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 $err;
			return json_encode(array('error'=>true));
		} 
		else {
			return $response;
		}
	}

	public static function ledUsuariosServiciosGrabar() {
		
		$cli      = Request::input('cliente');
		$user_id  = Request::input('user_id');
		$servicio_actual = Request::input('servicio_actual');

		$familias = ( null != Request::input('familia_servicio') ) ? Request::input('familia_servicio') : [];
		$familias = (is_array($familias) != 1) ? explode(',', Request::input('familia_servicio')) : $familias;

		$pais_servicios = ( null != Request::input('pais_servicios') ) ? Request::input('pais_servicios') : [];
		$pais_servicios = (is_array($pais_servicios) != 1) ? explode(',', Request::input('pais_servicios')) : $pais_servicios;

    $usuario = Session::get('usuario')->user_id;

// Tener en cuenta que lo que dejamos tildado, es lo que SI tiene que ver, y en la BD se graban las restricciones, o sea, lo que no tiene que ver!!!

// Tomamos solo los paises y las familias del servicio_actual, que es el que estamos tocando  
		$pais_serv = [];
		$pais_serv = $pais_servicios[$servicio_actual] ?? [] ;
		if (!empty($pais_serv)) {
		   $lista_paises = implode(",", $pais_serv);
		   $graba_paises = SQLConnection::backendStoreProcedure('usuarios_restricciones_paises', array($cli, $user_id, $servicio_actual, $lista_paises, $usuario), 'select');
		}

		$familia = [];
		$familia = $familias[$servicio_actual] ?? [] ;
		
		// Por cada pais tildado, tomamos las familias tildadas
		foreach ($pais_serv as $pais)
		{
		   $lista_familias = '';
		   $lista_familias = implode(",", $familia[$pais]);

		   	/*	   
		   echo(var_dump($cli));
		   echo(var_dump($user_id));
		   echo(var_dump($servicio_actual));
		   echo(var_dump($pais));
		   echo(var_dump($lista_familias));
		   echo(var_dump($usuario));

		   die();
*/

		   $graba_paises = SQLConnection::backendStoreProcedure('usuarios_restricciones_paises_familias', array($cli, $user_id, $servicio_actual, $pais, $lista_familias, $usuario), 'select');
		}

		if (empty($pais_serv))
		{
			if (!empty($familia[0])) 
			{ 
				$lista_familias = implode(",", $familia[0]);  
				$graba_paises = SQLConnection::backendStoreProcedure('usuarios_restricciones_paises_familias', array($cli, $user_id, $servicio_actual, NULL, $lista_familias, $usuario), 'select');
			}
		}


		return 'ok';
	}

	public static function ledUsuariosServiciosGrabarInd() {
		
		$cli      = Request::input('cliente');
		$user_id  = Request::input('user_id');
		$servicio_actual = Request::input('servicio_actual');

		$indicadores = ( null != Request::input('indicadores') ) ? Request::input('indicadores') : [];
		$indicadores = (is_array($indicadores) != 1) ? explode(',', Request::input('indicadores')) : $indicadores;

		$lista_usuario = implode(",", $indicadores[$servicio_actual]);
		$indicadores_todos = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('indicadores',$cli), 'select');

		$lista_completa = new stdClass(); 
		$lista_completa = ''; 
		foreach ($indicadores_todos as $ind)
		{
			if (empty($lista_completa))
			   {
			     $lista_completa = $ind->indicador;
			   } 
			   else 
			   {
				$lista_completa .= ',' . $ind->indicador;

			   }
		}

	    $usuario = Session::get('usuario')->user_id;
		
		$graba_indicadores = SQLConnection::backendStoreProcedure('usuarios_restricciones_indicadores', array($cli, $user_id, $servicio_actual, $lista_completa, $lista_usuario, $usuario), 'select');
		return 'ok';
	}

	public static function ledUsuariosServiciosServicios() {
		$cli = Request::input('cliente');
		$user_id = Request::input('user_id');
		$cliente_familias  = SQLConnection::backendStoreProcedure('backend_cliente_familias', array('obtener_cliente_familias', $cli), 'select');
		$servicios   = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cli), 'select');
		$indicadores = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('indicadores',$cli), 'select');
		$paises = [];
		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $cli), 'select');
		foreach ($cliente_paises as $key => $value) {
	        $paises[$value->servicio_contratado] = 'SI'; 
		}
		$familias = [];
		foreach ($cliente_familias as $key => $value) {
	    	$familias[$value->servicio_contratado]  = 'SI'; 
		}

		$paises_restringidos = [];
		$familias_restringidas = [];
		// Busca paises restringidos para ese usuario en todos sus servicios
		foreach ($servicios as $key => $value) {
			$paises_restringidos[$value->producto] = 
			SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('paises_restringidos',$cli,$user_id,$value->producto), 'select');
			$indicadores_restringidos[$value->producto] = 
			SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('indicadores_restringidos',$cli,$user_id,$value->producto), 'select');
		}
		
		// Busca familias restringidas para ese usuario en todos sus servicios

		/*
		if (!empty($cliente_paises))	
		{
			foreach ($servicios as $key => $value) {
		    foreach ($cliente_paises as $key2 => $value2) {
					$familias_restringidas[$value->producto][$value2->country_code] = 
					SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('familias_restringidas',$cli,$user_id,$value->producto,$value2->country_code), 'select');
		    }
			}
		}
		else 
		{
			foreach ($servicios as $key => $value) {
				$fam = 
				SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('familias_restringidas',$cli,$user_id,$value->producto,null), 'select');
				$familias_restringidas[$value->producto][0] = $fam ?? [];
				//var_dump($familias_restringidas[$value->producto][0]);
		  }
			
		}
		*/

		foreach ($servicios as $key => $value) {
	    foreach ($cliente_paises as $key2 => $value2) {
	    	if ($value2->servicio_contratado == $value->producto) {
	    	  	$familias_restringidas[$value->producto][$value2->country_code] = 
						SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('familias_restringidas',$cli,$user_id,$value->producto,$value2->country_code), 'select');
	    	}
	    }
		}

		foreach ($servicios as $key => $value) {
			$fam = 
			SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('familias_restringidas',$cli,$user_id,$value->producto,null), 'select');
			$familias_restringidas[$value->producto][0] = $fam ?? [];
			//var_dump($familias_restringidas[$value->producto][0]);
	  }
			
		$cliente = $cli;
		return view('/led/led_usuario_servicios_ser')->with(compact(['cliente','user_id','servicios','cliente_paises','paises','paises_restringidos','cliente_familias','familias','familias_restringidas','indicadores','indicadores_restringidos']));
	}


	public static function ledUsuarioProductos() {
		$cli = Request::input('cliente');
		$usr = Request::input('user_id');

		$disp = SQLConnection::backendStoreProcedure('LN_usuarios_productos_', array('productos_disponibles', $usr), 'select');
		$asig = SQLConnection::backendStoreProcedure('LN_usuarios_productos_', array('productos_usuario', $usr), 'select');

		return view('/led/led_usuario_productos')->with(compact(['disp', 'asig']));
	}

	public static function ledUsuarioProductosDesasignar() {
		$cli = Request::input('cliente');
		$usr = !empty(Request::input('user_id')) ? Request::input('user_id') : null;
		$productos = !empty(Request::input('productos')) ? Request::input('productos') : null;
		if ($usr != null AND $productos != null) {
			$prod = explode(',', $productos);
			foreach($prod as $id) {
				$temp = SQLConnection::backendStoreProcedure('LN_usuarios_productos_', array('delete', $usr, $id), 'selectOne');
			}
		}
		$disp = SQLConnection::backendStoreProcedure('LN_usuarios_productos_', array('productos_disponibles', $usr), 'select');
		$asig = SQLConnection::backendStoreProcedure('LN_usuarios_productos_', array('productos_usuario', $usr), 'select');

		return view('/led/led_usuario_productos')->with(compact(['disp', 'asig']));
	}

	public static function ledUsuarioProductosAsignar() {
		$cli = Request::input('cliente');
		$usr = Request::input('user_id');
		$productos = !empty(Request::input('productos')) ? Request::input('productos') : null;
		if ($usr != null AND $productos != null) {
			$prod = explode(',', $productos);
			foreach($prod as $id) {
				$temp = SQLConnection::backendStoreProcedure('LN_usuarios_productos_', array('insert', $usr, $id), 'selectOne');
			}
		}
		$disp = SQLConnection::backendStoreProcedure('LN_usuarios_productos_', array('productos_disponibles', $usr), 'select');
		$asig = SQLConnection::backendStoreProcedure('LN_usuarios_productos_', array('productos_usuario', $usr), 'select');

		return view('/led/led_usuario_productos')->with(compact(['disp', 'asig']));
	}


	/******/

	public static function ledFamilias() {
		$prod = Request::input('producto_fidelitas');

		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',Request::input('cliente'),NULL,NULL,NULL, $prod), 'selectOne');
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
	
		$servicios = [];
		$servicios = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cli->cliente), 'select');

		$fams = [];
		$fams["00"] = [];
		foreach($servicios as $keys => $ser) {
			$fams[$ser->producto] = []; 
			$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cli->cliente,null,NULL,NULL,NULL,NULL,NULL,NULL,$ser->producto), 'select');
			foreach($familias as $key => $fam) {
					$fams[$ser->producto][$key] = $familias[$key];
					$fams["00"][] = $familias[$key];
			}
		}
		$key = sizeof($servicios);
		$servicios[$key] = new stdClass(); 
		$servicios[$key]->producto = "00";
		$servicios[$key]->nombre_producto = "TODOS";

		$tipos_contratista = SQLConnection::backendStoreProcedure('led_tipos_contratista_', array('select'), 'select');

		/*
		if ($prod != 10) {
			$fams = SQLConnection::backendStoreProcedure('LN_familias_', array('search',NULL,NULL,Request::input('cliente'),NULL,NULL,NULL), 'select');
		}
		else {
			$fams = SQLConnection::backendStoreProcedure('LN_familias_', array('inquirovitae',NULL,NULL,Request::input('cliente'),NULL,NULL,NULL), 'select');
		}
		*/

		// check si el cliente tiene o no el producto inquiro
		$inquirovitae = SQLConnection::backendStoreProcedure('LN_demo_', array('check_inquirovitae_cliente', NULL, $cli->cliente), 'selectOne');

		$setdoc = SQLConnection::backendStoreProcedure('LN_set_docs_', array('cliente',null,null,null,$cli->cliente, 1, NULL), 'select');

		$subf = SQLConnection::backendStoreProcedure('LN_subfamilias_', array('cliente',NULL,NULL,Request::input('cliente')), 'select');
 
		$subfamilias = [];
		foreach ($subf as $k => $data) {
			$subfamilias[$data->familia]['familia'] = $data->familia;
			$subfamilias[$data->familia]['familia_padre'] = $data->familia_padre;
			$subfamilias[$data->familia]['nombre_familia'] = $data->nombre_familia;
			$subfamilias[$data->familia]['visible'] = $data->visible;
			$subfamilias[$data->familia]['country_code'] = $data->country_code;
			$subfamilias[$data->familia]['country_name'] = $data->country_name;
			$subfamilias[$data->familia]['total_contrapartes'] = $data->total_contrapartes;
			$subfamilias[$data->familia]['set_doc'] = $data->set_doc;
			$subfamilias[$data->familia]['nombre_set'] = $data->nombre_set;
			if (null != $data->familia_padre) {
				$subfamilias[$data->familia]['familias_asociadas'][$data->familia_padre] = $data->nombre_familia_padre;
			}


		}
		//dd($subfamilias);

		return view('/led/led_familias')->with(compact(['cli', 'prod', 'country', 'fams', 'setdoc', 'subfamilias', 'inquirovitae','servicios','tipos_contratista']));		
	}

	public static function ledFamiliasNew() {

		$cli = Request::input('cliente');
		$prod = (NULL !== Request::input('producto_fidelitas')) ? Request::input('producto_fidelitas') : 47;
		$vis = Request::input('visible') == 1 ? 1 : 0;
		$set = ('' != Request::input('set_doc')) ? Request::input('set_doc') : NULL;
		$servicio = (NULL != Request::input('servicio_actual_flia')) ? Request::input('servicio_actual_flia') : 47;
		$modologin = Request::input('modalidad_login');
		$tipo_contratista = null; 
		$nombre_familia = strtoupper(Request::input('nombre_familia')); 

		if ($servicio == '73')
		{
			$tipo_nuevo = Request::input('tipo_nuevo');
			if ($tipo_nuevo==0)
			{
				$tipo_contratista = Request::input('tipo_contratista');
			}
			else
			{
				// Alta en led_tipo_contratista 
				$alta_contratista = SQLConnection::backendStoreProcedure('led_tipos_contratista_', array('insert',$nombre_familia,Session::get('usuario')->user_id), 'selectOne');
				$tipo_contratista = $alta_contratista->tipo_contratista; 
			}
		}

		//$uso_familia = ( $prod == 10 ) ? 'I' : 'P';
		//$uso_familia  = Request::input('uso_familia');
		$uso_familia = 'P';
		$country_code = Request::input('country_code');
		$temp = SQLConnection::backendStoreProcedure('LN_familias_sc', array('insert',NULL,$nombre_familia,$cli,$country_code,$vis,Session::get('usuario')->user_id, $set, 0, $modologin, $uso_familia, $servicio, $tipo_contratista), 'selectOne');
		return view('/led/led_familias_after')->with(compact(['cli', 'prod','servicio']));
	}

	public static function ledFamiliasEdit() {
		$fam = Request::input('familia');
		$prod = (NULL !== Request::input('producto_fidelitas')) ? Request::input('producto_fidelitas') : 47;
		$servicio = (NULL != Request::input('servicio')) ? Request::input('servicio') : 47;
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$fdata = SQLConnection::backendStoreProcedure('LN_familias_sc', array('select',$fam,null,null,null,null,Session::get('usuario')->user_id), 'selectOne');
		$setdoc = SQLConnection::backendStoreProcedure('LN_set_docs_', array('cliente',null,null,null,$fdata->cliente, 1, NULL), 'select');

		// check si el cliente tiene o no el producto inquiro
		$inquirovitae = SQLConnection::backendStoreProcedure('LN_demo_', array('check_inquirovitae_cliente', NULL, $fdata->cliente), 'selectOne');

		$tipos_contratista = SQLConnection::backendStoreProcedure('led_tipos_contratista_', array('select'), 'select');
		return view('/led/led_familias_edit')->with(compact(['country', 'fdata', 'setdoc', 'prod', 'inquirovitae','servicio','tipos_contratista']));
		//dd($fdata);
	}

	public static function ledFamiliasUpdate() {
		$fam = Request::input('familia');
		$cli = Request::input('cliente');
		$prod = (NULL !== Request::input('producto_fidelitas')) ? Request::input('producto_fidelitas') : 47;
		$vis = Request::input('visible') == 1 ? 1 : 0;
		$servicio = (NULL != Request::input('servicio')) ? Request::input('servicio') : 47;
		$set = ('' != Request::input('set_doc')) ? Request::input('set_doc') : NULL;
		$modologin = Request::input('modalidad_login');
		//$uso_familia = ( $prod == 10 ) ? 'I' : 'P';
		//$uso_familia = Request::input('uso_familia');
		$uso_familia = 'P'; 
		$country_code = Request::input('country_code');
		$nombre_familia = strtoupper(Request::input('nombre_familia')); 
		if ($servicio == '73')
		{
			$tipo_contratista = Request::input('tipo_contratista');
		}
		else
		{
			$tipo_contratista = null; 
		}
		$temp = SQLConnection::backendStoreProcedure('LN_familias_sc', array('update',$fam,$nombre_familia,$cli,$country_code,$vis,Session::get('usuario')->user_id, $set, 0, $modologin, $uso_familia, $servicio, $tipo_contratista), 'selectOne');

		return view('/led/led_familias_after')->with(compact(['cli', 'prod','servicio']));		
	}

	public static function ledFamiliaSubfamilias() {
		$fam = Request::input('familia');
		$familia = SQLConnection::backendStoreProcedure('LN_familias_', array('select',$fam,null,null,null,null,Session::get('usuario')->user_id), 'selectOne');
		$subfamilias = SQLConnection::backendStoreProcedure('LN_subfamilias_', array('children',null,$fam), 'select');
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$familia->cliente,NULL,NULL,NULL), 'selectOne');

		return view('/led/led_familia_subf')->with(compact(['cli', 'familia', 'subfamilias']));
	}

	public static function ledFamiliasDelete() {
		$fam = Request::input('familia');
		$fdata = SQLConnection::backendStoreProcedure('LN_familias_', array('select',$fam,null,null,null,null,Session::get('usuario')->user_id), 'selectOne');
		return view('/led/led_familias_delete')->with(compact(['fdata']));
	}

	public static function ledFamiliasDeleteKey() {
		$fam = Request::input('familia');
		$cli = Request::input('cliente');
		$temp = SQLConnection::backendStoreProcedure('LN_familias_', array('delete',$fam,null,$cli,null,null,Session::get('usuario')->user_id), 'selectOne');
		return view('/led/led_familias_after')->with(compact(['cli']));			
	}


	public static function ledFamiliaProductos() {
		$cli = Request::input('cliente');
		$fam = Request::input('familia');
		$producto_fidelitas = Request::input('producto_fidelitas');

		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cli,NULL,NULL,NULL, $producto_fidelitas), 'selectOne');
		$familia = SQLConnection::backendStoreProcedure('LN_familias_', array('select',$fam,null,null,null,null,Session::get('usuario')->user_id), 'selectOne');
		$prodcli = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('PRODUCTOS_PAIS', $cli, null, null, /*$familia->country_code*/ null, null, Session::get('usuario')->user_id), 'select');
		$famprod = SQLConnection::backendStoreProcedure('LN_familia_productos_', array('SEARCH', $fam, null, null, Session::get('usuario')->user_id), 'select');

		return view('/led/led_familia_productos')->with(compact(['cliente', 'familia', 'prodcli', 'famprod', 'producto_fidelitas']));
	}

	public static function ledFamiliaProductosUpdate() {
		$accion = Request::input('accion');
		$cli = Request::input('cliente');
		$fam = Request::input('familia');
		/* del hidden */
		$prod = Request::input('prod');
		/* del selector para suscribir */
		$producto = Request::input('producto');
		$producto_fidelitas = Request::input('producto_fidelitas');

		if($accion == 'suscribe') {
			$temp = SQLConnection::backendStoreProcedure('LN_familia_productos_', array('insert', $fam, $producto, 1, Session::get('usuario')->user_id), 'selectOne');
		}
		else {

			if($accion == 'status') {
				$famprod = SQLConnection::backendStoreProcedure('LN_familia_productos_', array('search', $fam, $prod, null, Session::get('usuario')->user_id), 'selectOne');
				$nv = $famprod->activo == 1 ? 0 : 1;
				$temp = SQLConnection::backendStoreProcedure('LN_familia_productos_', array('update', $fam, $prod, $nv, Session::get('usuario')->user_id), 'selectOne');
			}
			else {
				$temp = SQLConnection::backendStoreProcedure('LN_familia_productos_', array('delete', $fam, $prod, null, Session::get('usuario')->user_id), 'selectOne');
			}
		}


		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cli,NULL,NULL,NULL, $producto_fidelitas), 'selectOne');
		$familia = SQLConnection::backendStoreProcedure('LN_familias_', array('select',$fam,null,null,null,null,Session::get('usuario')->user_id), 'selectOne');
		$prodcli = SQLConnection::backendStoreProcedure('LN_cliente_productos_', array('search', $cli, null, null, null,null,Session::get('usuario')->user_id), 'select');
		$famprod = SQLConnection::backendStoreProcedure('LN_familia_productos_', array('SEARCH', $fam, null, null, Session::get('usuario')->user_id), 'select');


		return view('/led/led_familia_productos')->with(compact(['cliente', 'familia', 'prodcli', 'famprod', 'producto_fidelitas']));
	}

	public static function ledSubfamiliaAdd() {
		$prod = Request::input('prod');
		$cliente = Request::input('cliente');
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cliente,NULL,NULL,NULL, $prod), 'selectOne');
		$familias = SQLConnection::backendStoreProcedure('LN_familias_', array('search',NULL,NULL,Request::input('cliente'),NULL,NULL,NULL), 'select');
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$setdoc = SQLConnection::backendStoreProcedure('LN_set_docs_', array('cliente',null,null,null,$cliente, NULL, 1), 'select');
		return view('/led/led_subfamilia_add')->with(compact(['cliente', 'cli', 'familias', 'country', 'setdoc', 'prod']));
	}

	public static function ledSubfamiliaInsert() {
		$prod = Request::input('prod');
		$cli = Request::input('cliente');
		$vis = Request::input('visible') == 1 ? 1 : 0;
		$set = ('' != Request::input('set_doc')) ? Request::input('set_doc') : NULL;
		$temp = SQLConnection::backendStoreProcedure('LN_familias_', array('insert',NULL,Request::input('nombre_familia'),$cli,Request::input('country_code'),$vis,Session::get('usuario')->user_id, $set, 1), 'selectOne');
		$parent = Request::input('familia_padre');

		if($temp->familia > 0 AND !empty($parent)) {
			$subf = $temp->familia;
			foreach ($parent as $k => $id) {
				$dummy = SQLConnection::backendStoreProcedure('LN_subfamilias_', array('insert', $subf, $id), 'selectOne');
			}
		}
		return view('/led/led_familias_after')->with(compact(['cli', 'prod']));		
	}

	public static function ledSubfamiliaEdit() {
		$prod = Request::input('prod');
		$cliente = Request::input('cliente');
		$subf = Request::input('familia');
		$subfamilia = SQLConnection::backendStoreProcedure('LN_familias_', array('select',$subf,NULL,$cliente,NULL,NULL,NULL), 'selectOne');
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cliente,NULL,NULL,NULL, $prod), 'selectOne');
		$familias = SQLConnection::backendStoreProcedure('LN_familias_', array('search',NULL,NULL,$cliente,NULL,NULL,NULL), 'select');
		$padres = SQLConnection::backendStoreProcedure('LN_subfamilias_', array('parents',$subf), 'select');
		$parents = null;
		foreach ($padres as $y => $f) {
			$parents[] = $f->familia;
		}
		//dd($parents);
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$setdoc = SQLConnection::backendStoreProcedure('LN_set_docs_', array('cliente',null,null,null,$cliente, NULL, 1), 'select');

		return view('/led/led_subfamilia_edit')->with(compact(['cliente', 'cli', 'familias', 'subfamilia', 'parents', 'country', 'setdoc', 'subf', 'prod']));
	}

	public static function ledSubfamiliaUpdate() {
		$prod = Request::input('prod');
		$cli = Request::input('cliente');
		$subf = Request::input('familia');
		$vis = Request::input('visible') == 1 ? 1 : 0;
		$set = ('' != Request::input('set_doc')) ? Request::input('set_doc') : NULL;
		$temp = SQLConnection::backendStoreProcedure('LN_familias_', array('update',$subf,Request::input('nombre_familia'),$cli,Request::input('country_code'),$vis,Session::get('usuario')->user_id, $set, 1), 'selectOne');

		$dummy = SQLConnection::backendStoreProcedure('LN_subfamilias_', array('empty', $subf), 'selectOne');
		$parent = Request::input('familia_padre');
		if(!empty($parent)) {
			foreach ($parent as $k => $id) {
				$dummy = SQLConnection::backendStoreProcedure('LN_subfamilias_', array('insert', $subf, $id), 'selectOne');
			}
		}

		return view('/led/led_familias_after')->with(compact(['cli', 'prod']));		
	}


	/****/

	public static function ledTiposDocumento() {
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$tipos = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('search', null, null, null, null, null, null, null, null, null, null), 'select');
		//dd($tipos);
		return view('configuracion-facon-tipo-doc/tipos_de_documento')->with(compact(['country', 'tipos']));
		// return view('/led/led_tipos_documento')->with(compact(['country', 'tipos']));
	}

	public static function ledTiposDocumentoNew() {
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('configuracion-facon-tipo-doc/tipo_doc_nuevo')->with(compact('country'));
		}
		return view('/led/led_tipos_documento_new')->with(compact(['country']));
	}

	public static function ledTiposDocumentoInsert() {
		$nombre = Request::input('nombre_tipo_doc');
		$cc = Request::input('country_code');
		$mod = Request::input('modalidad');
		$vig = Request::input('tipo_vigencia');
		
		if($vig == 'D' || $vig == 'F') {
			$dia = Request::input('dia_vigencia');
		}
		else {
			$dia = NULL;
		}
		if($vig == 'F') {
			$mes = Request::input('mes_vigencia');
		}
		else {
			$mes = NULL;
		}
		$bal = Request::input('es_balance');
		$mb = ($bal == 1) ? Request::input('es_manif_bienes') : 0;
		$pj = (null !== Request::input('aplica_pj')) ? Request::input('aplica_pj') : 0;
		$pfm = (null !== Request::input('aplica_pf_mono')) ? Request::input('aplica_pf_mono') : 0;
		$pfa = (null !== Request::input('aplica_pf_auto')) ? Request::input('aplica_pf_auto') : 0;
		$foto = (null !== Request::input('es_foto_perfil')) ? Request::input('es_foto_perfil') : 0;
		$es_evidencia = (null !== Request::input('es_evidencia')) ? Request::input('es_evidencia') : 0;
		$es_consentimiento = (null !== Request::input('es_consentimiento')) ? Request::input('es_consentimiento') : 0;
		$es_dni = (null !== Request::input('es_dni')) ? Request::input('es_dni') : 0;
		$es_personalizable = (null !== Request::input('es_personalizable')) ? 1 : 0;
		//
		$temp = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('insert', null, $nombre, $cc, $mod, $vig, $dia, $mes, null, $bal, Session::get('usuario')->user_id, $mb, $pj, $pfm, $pfa, $foto, $es_consentimiento, $es_dni, $es_evidencia,null,$es_personalizable), 'selectOne');
		//
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$tipos = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('search', null, null, null, null, null, null, null, null, null, null, null), 'select');
		return redirect('/led/led-tipos-documento');
	}
	
	//Formulario edit nuevo
	public static function ledTiposDocumentoEdit() {
		$id = Request::input('tipo_doc');
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$tipodoc = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('select', $id, null, null, null, null, null, null, null, null, null), 'selectOne');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('configuracion-facon-tipo-doc/tipo_doc_editar')->with(compact('country', 'tipodoc'));
		}
		return view('/led/led_tipos_documento_edit')->with(compact(['country', 'tipodoc']));
	}

	public static function ledTiposDocumentoUpdate() {
		$id = Request::input('tipo_doc');
		$nombre = Request::input('nombre_tipo_doc');
		$cc = Request::input('country_code');
		$mod = Request::input('modalidad');
		$vig = Request::input('tipo_vigencia');
		
		if($vig == 'D' || $vig == 'F') {
			$dia = Request::input('dia_vigencia');
		}
		else {
			$dia = NULL;
		}
		if($vig == 'F') {
			$mes = Request::input('mes_vigencia');
		}
		else {
			$mes = NULL;
		}
		$bal = Request::input('es_balance');
		$mb = ($bal == 1) ? Request::input('es_manif_bienes') : 0;
		$pj = (null !== Request::input('aplica_pj')) ? Request::input('aplica_pj') : 0;
		$pfm = (null !== Request::input('aplica_pf_mono')) ? Request::input('aplica_pf_mono') : 0;
		$pfa = (null !== Request::input('aplica_pf_auto')) ? Request::input('aplica_pf_auto') : 0;
		$foto = (null !== Request::input('es_foto_perfil')) ? Request::input('es_foto_perfil') : 0;
		$es_evidencia = (null !== Request::input('es_evidencia')) ? Request::input('es_evidencia') : 0;
		$es_consentimiento = (null !== Request::input('es_consentimiento')) ? Request::input('es_consentimiento') : 0;
		$es_dni = (null !== Request::input('es_dni')) ? Request::input('es_dni') : 0;
		$es_personalizable = (null !== Request::input('es_personalizable')) ? 1 : 0;
		//
		$temp = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('update', $id, $nombre, $cc, $mod, $vig, $dia, $mes, null, $bal, Session::get('usuario')->user_id, $mb, $pj, $pfm, $pfa, $foto, $es_consentimiento, $es_dni, $es_evidencia, null, $es_personalizable), 'selectOne');

		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$tipos = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('search', null, null, null, null, null, null, null, null, null, null, null), 'select');

		return redirect('/led/led-tipos-documento');
	}

	/******/

	public static function ledTipoDocSecciones() {
		$id = Request::input('tipo_doc');
		$tipodoc = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('select', $id, null, null, null, null, null, null, null, null, null), 'selectOne');
		$secciones = SQLConnection::backendStoreProcedure('LN_tipo_doc_secciones_', array('SEARCH', null, $id, null, null, null, null, null, null), 'select');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_doc_secciones')->with(compact(['tipodoc', 'secciones']));
		}
		return view('/led/led_tipo_doc_secciones')->with(compact(['tipodoc', 'secciones']));
	}

	public static function ledTipoDocSeccionesNew() {
		$id = Request::input('tipo_doc');
		$tipodoc = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('select', $id, null, null, null, null, null, null, null, null, null), 'selectOne');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_doc_secciones_nuevo')->with(compact(['tipodoc']));
		}
		return view('/led/led_tipo_doc_secciones_new')->with(compact(['tipodoc']));
	}

	public static function ledTipoDocSeccionesInsert() {
		$td = 						Request::input('tipo_doc');
		$titulo =					Request::input('titulo_seccion');
		$bajada =					Request::input('texto_bajada');
		$pie =						Request::input('texto_pie');
		$visible =					Request::input('seccion_visible');

		$secc = SQLConnection::backendStoreProcedure('LN_tipo_doc_secciones_', array('insert', null, $td, $titulo, $bajada, $pie, null, $visible, Session::get('usuario')->user_id), 'selectOne');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_doc_secciones_back')->with(['tipo_doc' => $td]);
		}	
		return view('/led/led_tipo_doc_secciones_back')->with(['tipo_doc' => $td]);
	}

	public static function ledTipoDocSeccionesAccion() {
		$secc = Request::input('seccion');
		$accion = Request::input('accion');
		$data = SQLConnection::backendStoreProcedure('LN_tipo_doc_secciones_', array('select', $secc, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$td = $data->tipo_doc;

		$temp = SQLConnection::backendStoreProcedure('LN_tipo_doc_secciones_', array($accion, $secc, $td, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_doc_secciones_back')->with(['tipo_doc' => $td]);
		}
		return view('/led/led_tipo_doc_secciones_back')->with(['tipo_doc' => $td]);
	}

	public static function ledTipoDocSeccionesEdit() {
		$secc = Request::input('seccion');
		$data = SQLConnection::backendStoreProcedure('LN_tipo_doc_secciones_', array('select', $secc, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_doc_secciones_edit')->with(compact('data'));
		}
		return view('/led/led_tipo_doc_secciones_edit')->with(compact('data'));
	}

	public static function ledTipoDocSeccionesUpdate() {
		$secc = 					Request::input('seccion');
		$td = 						Request::input('tipo_doc');
		$titulo =					Request::input('titulo_seccion');
		$bajada =					Request::input('texto_bajada');
		$pie =						Request::input('texto_pie');		
		$visible =					Request::input('seccion_visible');
		$temp = SQLConnection::backendStoreProcedure('LN_tipo_doc_secciones_', array('update', $secc, $td, $titulo, $bajada, $pie, null, $visible, Session::get('usuario')->user_id), 'selectOne');
	
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_doc_secciones_back')->with(['tipo_doc' => $td]);
		}	
		return view('/led/led_tipo_doc_secciones_back')->with(['tipo_doc' => $td]);

	}
	/******/


	public static function ledTipoDocCampos() {
		$id = Request::input('tipo_doc');
		$tipodoc = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('select', $id, null, null, null, null, null, null, null, null, null), 'selectOne');
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		$camposdoc = SQLConnection::backendStoreProcedure('LN_tipo_doc_campos_', array('search', $id, null, null, null, null, null, null, null, null), 'select');
		$array_campos = [];
		foreach ($camposdoc as $key => $fld) {
			$array_campos[$fld->seccion][] = $fld;
		}
		//dd($array_campos);

		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_doc_campos')->with(compact(['tipodoc', 'campos', 'camposdoc', 'array_campos']));
		}
		return view('/led/led_tipo_doc_campos')->with(compact(['tipodoc', 'campos', 'camposdoc', 'array_campos']));
	}


	public static function ledTipoDocCamposAdd() {
		$id = Request::input('tipo_doc');
		$tipodoc = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('select', $id, null, null, null, null, null, null, null, null, null), 'selectOne');

		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_doc_campos_add')->with(compact(['tipodoc', 'campos', 'camposdoc', 'array_campos']));
		}		
		return view('/led/led_tipo_doc_campos_add')->with(compact(['tipodoc']));
	}

	public static function ledTipoDocCamposNew() {
		$td = Request::input('tipo_doc');
		/*$secc = Request::input('seccion');*/
		$tipodoc = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('select', $td, null, null, null, null, null, null, null, null, null), 'selectOne');
		$fld = SQLConnection::backendStoreProcedure('LN_campos_', array('select', Request::input('campo'), null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		/*$tdfld = SQLConnection::backendStoreProcedure('LN_tipo_doc_campos_', array('select', $td, $secc, Request::input('campo'), null, null, null, null, null), 'selectOne');*/
		$secciones = SQLConnection::backendStoreProcedure('LN_tipo_doc_secciones_', array('SEARCH', null, $td, null, null, null, null, null, null), 'select');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){		
			return view('/configuracion-facon-tipo-doc/tipo_doc_campo_new')->with(compact(['tipodoc', 'fld', 'secciones']));
		}
		return view('/led/led_tipo_doc_campo_new')->with(compact(['tipodoc', 'fld', 'secciones']));
	}

	public static function ledTipoDocCamposInsert() {
		$tipodoc = Request::input('tipo_doc');
		$ca = Request::input('campo');
		$sec = Request::input('seccion');
		$col = Request::input('columnas');
		$nl = Request::input('nueva_linea');
		$vis = Request::input('visible');
		$id = Request::input('campo_id');
		$oblig = null !== Request('obligatorio') ? 1 : 0;

		$temp = SQLConnection::backendStoreProcedure('LN_tipo_doc_campos_', array('insert', $tipodoc, $sec, $ca, $col, $nl, $vis, $id, $oblig, null), 'selectOne');
		
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){		
			return view('/configuracion-facon-tipo-doc/tipo_doc_campos_back')->with(compact(['tipodoc']));
		}
		return view('/led/led_tipo_doc_campos_back')->with(compact(['tipodoc']));
	}

	public static function ledTipoDocCamposEdit() {
		$id = Request::input('tipo_doc');
		$sec = Request::input('seccion');
		$ca = Request::input('campo');
		$tdfld = SQLConnection::backendStoreProcedure('LN_tipo_doc_campos_', array('select', $id, $sec, $ca, null, null, null, null, null, null), 'selectOne');
		$secciones = SQLConnection::backendStoreProcedure('LN_tipo_doc_secciones_', array('SEARCH', null, $id, null, null, null, null, null, null), 'select');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){		
			return view('/configuracion-facon-tipo-doc/tipo_doc_campos_edit')->with(compact(['tdfld', 'secciones']));		
		}
		return view('/led/led_tipo_doc_campos_edit')->with(compact(['tdfld', 'secciones']));
	}

	public static function ledTipoDocCamposUpdate() {

		$tipodoc = Request::input('tipo_doc');
		$ca = Request::input('campo');
		$sec = Request::input('seccion');
		$cell = Request::input('celdas');
		$nl = Request::input('nueva_linea');
		$vis = Request::input('visible');
		$id = Request::input('campo_id');
		$oblig = null !== Request('obligatorio') ? 1 : 0;

		$temp = SQLConnection::backendStoreProcedure('LN_tipo_doc_campos_', array('update', $tipodoc, $sec, $ca, $cell, $nl, $vis, $id, $oblig, null), 'selectOne');
		
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){		
			return view('/configuracion-facon-tipo-doc/tipo_doc_campos_back')->with(compact(['tipodoc']));
		}
		return view('/led/led_tipo_doc_campos_back')->with(compact(['tipodoc']));		
	}


	public static function ledTipoDocCamposAccion() {
		$tipodoc = Request::input('tipo_doc');
		$seccion = Request::input('seccion');
		$campo = Request::input('campo');
		$accion = Request::input('accion');
		$temp = SQLConnection::backendStoreProcedure('LN_tipo_doc_campos_', array($accion, $tipodoc, $seccion, $campo, null, null, null, null, null, null), 'selectOne');

		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){		
			return view('/configuracion-facon-tipo-doc/tipo_doc_campos_back')->with(compact(['tipodoc']));
		}
		return view('/led/led_tipo_doc_campos_back')->with(compact(['tipodoc']));
	}


	public static function ledTipoDocCamposSearch() {
		$tipo = Request::input('tipo_doc');
		$tipodoc = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('select', $tipo, null, null, null, null, null, null, null, null, null), 'selectOne');
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/agregar_campo_tipo_documento')->with(compact(['tipodoc', 'campos']));
		}
		return view('/led/led_tipo_doc_campos_search')->with(compact(['tipodoc', 'campos']));
	}


	/*****/

	public static function ledProductoTipoDocumento() {
		$id = Request::input('producto');
		$producto = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
		$tiposdoc = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('search', null, null, null, null, null, null, null, null, null, null), 'select');
		$prodtipodoc = SQLConnection::backendStoreProcedure('LN_producto_tipo_doc_', array('search', $id, null, null, null, null, null, null, null, null), 'select');

		return view('/led/led_producto_tipo_doc')->with(compact(['producto', 'tiposdoc', 'prodtipodoc']));
	}

	public static function ledProductoTipoDocumentoAdd() {
		$prod = Request::input('producto');
		$td = Request::input('tipo_doc');
		$ru = null !== Request::input('requiere_upload') ? 1 : 0;
		$rv = null !== Request::input('requiere_verificacion') ? 1 : 0;
		$vb = null !== Request::input('verifica_backend') ? 1 : 0;
		$vc = null !== Request::input('verifica_cliente') ? 1 : 0;
		$tc = null !== Request::input('tolerancia_carga') ? Request::input('tolerancia_carga') : 1;
		$act = 1;
		$temp = SQLConnection::backendStoreProcedure('LN_producto_tipo_doc_', array('insert', $prod, $td, $ru, $rv, $vb, $vc, $tc, $act, Session::get('usuario')->user_id), 'selectOne');
		return view('/led/led_producto_tipo_doc_back')->with(compact(['prod']));
	}

	public static function ledProductoTipoDocumentoEdit() {
		$accion = Request::input('accion');
		$prod = Request::input('producto');
		$td = Request::input('tipo_doc');
		$prodtipodoc = SQLConnection::backendStoreProcedure('LN_producto_tipo_doc_', array('select', $prod, $td, null, null, null, null, null, null, null), 'selectOne');
		return view('/led/led_producto_tipo_doc_edit')->with(compact(['accion', 'prodtipodoc']));
	}

	public static function ledProductoTipoDocumentoUpdate() {
		//dd(Request::input());
		$accion = Request::input('accion');
		$prod = Request::input('producto');
		$td = Request::input('tipo_doc');

		if($accion == 'editar') {
			$ru = Request::input('requiere_upload') == 1 ? 1 : 0;
			$rv = Request::input('requiere_verificacion') == 1 ? 1 : 0;
			$vb = Request::input('verifica_backend') == 1 ? 1 : 0;
			$vc = Request::input('verifica_cliente') == 1 ? 1 : 0;
			$tc = Request::input('tolerancia_carga');
			$act = Request::input('activo') == 1 ? 1 : 0;
			$temp = SQLConnection::backendStoreProcedure('LN_producto_tipo_doc_', array('update', $prod, $td, $ru, $rv, $vb, $vc, $tc, $act, Session::get('usuario')->user_id), 'selectOne');
		}

		if($accion == 'borrar') {
			$temp = SQLConnection::backendStoreProcedure('LN_producto_tipo_doc_', array('delete', $prod, $td, null, null, null, null, null, null, null), 'selectOne');
		}

		if($accion == 'activar' OR $accion == 'up' OR $accion == 'down') {
			// cambiar activo/no-activo
			$temp = SQLConnection::backendStoreProcedure('LN_producto_tipo_doc_', array($accion, $prod, $td, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		}


		return view('/led/led_producto_tipo_doc_back')->with(compact(['prod']));
	}

	public static function ledProductoTipoDocumentoPonderacion() {
		$prod = Request::input('producto');
		$prodtipodoc = SQLConnection::backendStoreProcedure('LN_producto_tipo_doc_', array('search', $prod, null, null, null, null, null, null, null, null), 'select');
		foreach ($prodtipodoc as $ptd) {
			if(null !== Request::input('ponderacion_' . $ptd->tipo_doc)) {
				$temp = SQLConnection::backendStoreProcedure('LN_producto_tipo_doc_ponderacion', array($prod, $ptd->tipo_doc, Request::input('ponderacion_' . $ptd->tipo_doc), Session::get('usuario')->user_id), 'selectOne');
			}		
		}
		$resultado = array( 'result' => 0, 'errortext' => 'Sin error' );
		return json_encode($resultado);

	}



	public static function ledCampos() {
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		return view('/configuracion-facon-tipo-doc/tipos_de_campo')->with(compact('campos'));
		//Vista Vieja
		// return view('/led/led_campos')->with(compact('campos'));
		
	}

	public static function ledCamposNew() {
		return view('/configuracion-facon-tipo-doc/tipo_campo_nuevo_campo');
		//Vista vieja
		// return view('/led/led_campos_new');
	}

	public static function ledCamposBuscar() {
		$nom = Request::input('nombre_campo');
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, $nom, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		return json_encode($campos);
	}

	public static function ledCamposInsert() {
		$nombre = Request::input('nombre_campo');
		$etiq = Request::input('etiqueta');
		$tipo = Request::input('tipo_campo');
		$long = Request::input('longitud');
		$decim = Request::input('decimales');
		$labels = Request::input('etiq_post');
		$values = Request::input('valor_post');
		$opciones = NULL;
		$valid = null;
		if($tipo == 'C' || $tipo == 'S' || $tipo == 'R') {
			$opciones = implode('|', $labels).'^'.implode('|', $values);
			$long = null;
			$decim = null;
		}
		else {
			if($tipo == 'L') {
				$opciones = Request::input('opciones');
				$valid = Request::input('validacion');
			}

		}

		$temp = SQLConnection::backendStoreProcedure('LN_campos_', array('insert', null, $nombre, $etiq, $tipo, $long, $decim, $opciones, $valid, null, null, Session::get('usuario')->user_id), 'selectOne');
		/*return redirect()->back();*/
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		return redirect('/led/led-campos');
		/* if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipos_de_campo')->with(compact('campos'));
		}
		return view('/led/led_campos')->with(compact('campos')); */
	}

	public static function ledCamposEdit() {
		$accion = Request::input('accion');
		$tipo = Request::input('tipo_campo');		
		$data = SQLConnection::backendStoreProcedure('LN_campos_', array('select', Request::input('campo'), null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		
		if($tipo != 'G') {
			$etiq = [];
			$vals = [];
			$tipo = $data->tipo_campo;
			if($tipo == 'C' || $tipo == 'S' || $tipo == 'R') {
				if($data->opciones != null) {
					$op = explode("^", $data->opciones);
					$etiq = explode("|", $op[0]);
					$vals = explode("|", $op[1]);			
				}
			}
			//
			if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
				return view('/configuracion-facon-tipo-doc/tipo_campo_editar')->with(compact(['accion', 'data', 'etiq', 'vals']));
			}
			return view('/led/led_campos_edit')->with(compact(['accion', 'data', 'etiq', 'vals']));
		} else {
			/* Edición de campo tipo tabla */
			
			$cant = $data->columnas;
			$cols = SQLConnection::backendStoreProcedure('LN_campos_col_', array('search', Request::input('campo'), null, null, null, null, null, null), 'select');
			$etiq_vals = [];

			foreach ($cols as $i => $columna) {
				$etiq = [];
				$vals = [];
				$tipo = $columna->tipo_campo;
				if($tipo == 'C' || $tipo == 'S' || $tipo == 'R') {
					if($columna->opciones != null) {
						$op = explode("^", $columna->opciones);
						$etiq = explode("|", $op[0]);
						$vals = explode("|", $op[1]);			
					}
				}
				$etiq_vals[] = $etiq;
				$etiq_vals[] = $vals;

			}
			//
			if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
				return view('/configuracion-facon-tipo-doc/tipo_campos_editDos')->with(compact(['data', 'cant', 'cols', 'etiq_vals']));
			}
			return view('/led/led_campos_col_edit')->with(compact(['data', 'cant', 'cols', 'etiq_vals']));
			
		}
	}

	public static function ledCamposEditOrg() {
		$accion = Request::input('accion');
		$tipo = Request::input('tipo_campo');		
		$data = SQLConnection::backendStoreProcedure('LN_campos_', array('select', Request::input('campo'), null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		
		if($tipo != 'G') {
			$etiq = [];
			$vals = [];
			$tipo = $data->tipo_campo;
			if($tipo == 'C' || $tipo == 'S' || $tipo == 'R') {
				if($data->opciones != null) {
					$op = explode("^", $data->opciones);
					$etiq = explode("|", $op[0]);
					$vals = explode("|", $op[1]);			
				}
			}
			//
			if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
				return view('/configuracion-facon-tipo-doc/tipo_campo_editar')->with(compact(['accion', 'data', 'etiq', 'vals']));
			}
			return view('/led/led_campos_edit')->with(compact(['accion', 'data', 'etiq', 'vals']));
		} else {
			/* Edición de campo tipo tabla */
			
			$cant = $data->columnas;
			$cols = SQLConnection::backendStoreProcedure('LN_campos_col_', array('search', Request::input('campo'), null, null, null, null, null, null), 'select');
			$etiq_vals = [];

			foreach ($cols as $i => $columna) {
				$etiq = [];
				$vals = [];
				$tipo = $columna->tipo_campo;
				if($tipo == 'C' || $tipo == 'S' || $tipo == 'R') {
					if($columna->opciones != null) {
						$op = explode("^", $columna->opciones);
						$etiq = explode("|", $op[0]);
						$vals = explode("|", $op[1]);			
					}
				}
				$etiq_vals[] = $etiq;
				$etiq_vals[] = $vals;

			}
			//
			if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
				return view('/configuracion-facon-tipo-doc/tipo_campos_editDos')->with(compact(['data', 'cant', 'cols', 'etiq_vals']));
			}
			return view('/led/led_campos_col_edit')->with(compact(['data', 'cant', 'cols', 'etiq_vals']));
			
		}
	}

	public static function ledCamposUpdate() {
		$accion = Request::input('accion');
		$campo = Request::input('campo');

		if($accion == 'edit') {		
			$nombre = Request::input('nombre_campo');
			$etiq = Request::input('etiqueta');
			$tipo = Request::input('tipo_campo');
			$long = Request::input('longitud');
			$decim = Request::input('decimales');
			//$labels = Request::input('etiq_post');
			//$values = Request::input('valor_post');

			$labels = Request::input('etiq_post', []);
			$values = Request::input('valor_post', []);

			$opciones = NULL;
			$valid = NULL;
			if($tipo == 'C' || $tipo == 'S' || $tipo == 'R') {
				$opciones = implode('|', $labels).'^'.implode('|', $values);
				$long = null;
				$decim = null;			
			}
			else {
				if($tipo == 'L') {
					$opciones = Request::input('opciones');
					$valid = Request::input('validacion');
				}

			}

			$temp = SQLConnection::backendStoreProcedure('LN_campos_', array('update', $campo, $nombre, $etiq, $tipo, $long, $decim, $opciones, $valid, null, null, Session::get('usuario')->user_id), 'selectOne');
		}

		if($accion == 'delete') {
			$temp = SQLConnection::backendStoreProcedure('LN_campos_', array('delete', $campo, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		}

		//return redirect()->back();
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipos_de_campo')->with(compact('campos'));
		}
		return view('/led/led_campos')->with(compact('campos'));

	}

	/***/

	public static function ledCamposColStep() {
		$nombre = null !== Request::input('nombre_campo') ? Request::input('nombre_campo') : '';
		$etiqueta = null !== Request::input('etiqueta') ? Request::input('etiqueta') : '';
		$filas = null !== Request::input('filas') ? Request::input('filas') : 1;
		$columnas = null !== Request::input('columnas') ? Request::input('columnas') : 1;
		//
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_campo_nuevo_tabla')->with(compact(['nombre', 'etiqueta', 'filas', 'columnas']));
		}
		return view('/led/led_campos_col_step')->with(compact(['nombre', 'etiqueta', 'filas', 'columnas']));
	}


	public static function ledCamposColNew() {
		$nombre = Request::input('nombre_campo');
		$etiqueta = Request::input('etiqueta');

		$anual = ('true' == Request::input('anual_vencida') ? 1 : 0);
		$filas = ($anual == 1) ? 12 : Request::input('filas');
		$columnas = Request::input('columnas');
		
		if(isset($_POST['iv_new']) && $_POST['iv_new'] == '1'){
			return view('/configuracion-facon-tipo-doc/tipo_campos_col_new')->with(compact(['nombre', 'etiqueta', 'filas', 'columnas', 'anual']));
		}
		return view('/led/led_campos_col_new')->with(compact(['nombre', 'etiqueta', 'filas', 'columnas', 'anual']));
	}

	public static function ledCamposColInsert() {
		$nombre = Request::input('nombre_campo');
		$etiqueta = Request::input('etiqueta');
		$filas = Request::input('filas');
		$columnas = Request::input('columnas');
		$anual = Request::input('anual_vencida');

		$new = SQLConnection::backendStoreProcedure('LN_campos_', array('insert', null, $nombre, $etiqueta, 'G', null, null, null, null, $filas, $columnas, Session::get('usuario')->user_id, $anual), 'selectOne');

		if($anual == 1) {
			$temp = SQLConnection::backendStoreProcedure('LN_campos_col_', array('insert', $new->campo, 0, 'Mes / Año', 'D', NULL, NULL, NULL));
		}

		for ($i=1; $i <= $columnas ; $i++) { 

			$etiqueta = Request::input('etiqueta_'.$i);
			$tipo_campo = Request::input('tipo_campo_'.$i);
			$longitud = Request::input('longitud_'.$i);
			$decimales = Request::input('decimales_'.$i);
			$tipoArchivo = Request::input('selectTipoArch_'.$i);
			$archivoMultiple = Request::input('archivoMultiple_'.$i);
			
			if( isset($archivoMultiple) ){
				$archivoMultiple = 1;
			}else{
				$archivoMultiple = 0;
			}			

			$labels = Request::input('etiq_post_'.$i);
			$values = Request::input('valor_post_'.$i);
			$opciones = NULL;
			if($tipo_campo == 'C' || $tipo_campo == 'S' || $tipo_campo == 'R') {
				$opciones = implode('|', $labels).'^'.implode('|', $values);
				$long = null;
				$decim = null;			
			}

			$temp = SQLConnection::backendStoreProcedure('LN_campos_col_', array('insert', $new->campo, $i, $etiqueta, $tipo_campo, $longitud, $decimales, $opciones, $tipoArchivo, $archivoMultiple));
			
		}

		//return redirect()->back();
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		return view('/led/led_campos')->with(compact('campos'));

	}

	public static function ledCamposColInsertOrg() {
		$nombre = Request::input('nombre_campo');
		$etiqueta = Request::input('etiqueta');
		$filas = Request::input('filas');
		$columnas = Request::input('columnas');
		$anual = Request::input('anual_vencida');

		$new = SQLConnection::backendStoreProcedure('LN_campos_', array('insert', null, $nombre, $etiqueta, 'G', null, null, null, null, $filas, $columnas, Session::get('usuario')->user_id, $anual), 'selectOne');

		if($anual == 1) {
			$temp = SQLConnection::backendStoreProcedure('LN_campos_col_', array('insert', $new->campo, 0, 'Mes / Año', 'D', NULL, NULL, NULL));
		}

		for ($i=1; $i <= $columnas ; $i++) { 

			$etiqueta = Request::input('etiqueta_'.$i);
			$tipo_campo = Request::input('tipo_campo_'.$i);
			$longitud = Request::input('longitud_'.$i);
			$decimales = Request::input('decimales_'.$i);

			$labels = Request::input('etiq_post_'.$i);
			$values = Request::input('valor_post_'.$i);
			$opciones = NULL;
			if($tipo_campo == 'C' || $tipo_campo == 'S' || $tipo_campo == 'R') {
				$opciones = implode('|', $labels).'^'.implode('|', $values);
				$long = null;
				$decim = null;			
			}

			$temp = SQLConnection::backendStoreProcedure('LN_campos_col_', array('insert', $new->campo, $i, $etiqueta, $tipo_campo, $longitud, $decimales, $opciones));
			
		}

		//return redirect()->back();
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		return view('/led/led_campos')->with(compact('campos'));

	}

	public static function ledCamposColUpdate() {
		$id = Request::input('campo');
		$nombre = Request::input('nombre_campo');
		$etiqueta = Request::input('etiqueta');
		$filas = Request::input('filas');
		$columnas = Request::input('columnas');
		$anual = Request::input('anual_vencida');			

		$temp = SQLConnection::backendStoreProcedure('LN_campos_', array('update', $id, $nombre, $etiqueta, 'G', null, null, null, null, $filas, $columnas, Session::get('usuario')->user_id, $anual), 'selectOne');
		for ($i=1; $i <= $columnas ; $i++) { 

			$etiqueta = Request::input('etiqueta_'.$i);
			$tipo_campo = Request::input('tipo_campo_'.$i);
			$longitud = Request::input('longitud_'.$i);
			$decimales = Request::input('decimales_'.$i);
			$labels = Request::input('etiq_post_'.$i);
			$values = Request::input('valor_post_'.$i);
			$tipo_archivo = null;
			$archivoMultiple = 0;
			if($tipo_campo == 'F'){
				$tipo_archivo = Request::input('selectTipoArch_'.$i);
				$archivoMultiple = Request::input('archivoMultiple_'.$i);

				if( isset($archivoMultiple) ){
					$archivoMultiple = 1;
				}else{
					$archivoMultiple = 0;
				}
			}			

			$opciones = NULL;
			if($tipo_campo == 'C' || $tipo_campo == 'S' || $tipo_campo == 'R') {

				$opciones = implode('|', $labels).'^'.implode('|', $values);
				$long = null;
				$decim = null;			
			}
						
			$temp = SQLConnection::backendStoreProcedure('LN_campos_col_', array('update', $id, $i, $etiqueta, $tipo_campo, $longitud, $decimales, $opciones, $tipo_archivo, $archivoMultiple));
			
		}

		//return redirect()->back();	
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
				
		//return view('/led/led_campos')->with(compact('campos'));
		return redirect('/led/led-campos');
	}

	public static function ledCamposColUpdateOrg() {
		$id = Request::input('campo');
		$nombre = Request::input('nombre_campo');
		$etiqueta = Request::input('etiqueta');
		$filas = Request::input('filas');
		$columnas = Request::input('columnas');
		$anual = Request::input('anual_vencida');			

		$temp = SQLConnection::backendStoreProcedure('LN_campos_', array('update', $id, $nombre, $etiqueta, 'G', null, null, null, null, $filas, $columnas, Session::get('usuario')->user_id, $anual), 'selectOne');

		for ($i=1; $i <= $columnas ; $i++) { 

			$etiqueta = Request::input('etiqueta_'.$i);
			$tipo_campo = Request::input('tipo_campo_'.$i);
			$longitud = Request::input('longitud_'.$i);
			$decimales = Request::input('decimales_'.$i);
			$labels = Request::input('etiq_post_'.$i);
			$values = Request::input('valor_post_'.$i);
			$opciones = NULL;
			if($tipo_campo == 'C' || $tipo_campo == 'S' || $tipo_campo == 'R') {

				$opciones = implode('|', $labels).'^'.implode('|', $values);
				$long = null;
				$decim = null;			
			}

			$temp = SQLConnection::backendStoreProcedure('LN_campos_col_', array('update', $id, $i, $etiqueta, $tipo_campo, $longitud, $decimales, $opciones));
			
		}

		//return redirect()->back();	
		$campos = SQLConnection::backendStoreProcedure('LN_campos_', array('search', null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		return view('/led/led_campos')->with(compact('campos'));

	}


	/********/

	public static function ledSetDocumentos() {
		$sets = SQLConnection::backendStoreProcedure('LN_set_docs_', array('search'));

		return view('/led/led_set_docs')->with(compact(['sets']));
	}

	public static function ledSetDocumentosNew() {
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL,0), 'select');
		return view('/led/led_set_docs_new')->with(compact(['clientes']));
	}

	public static function ledSetDocumentosAdd() {
		$temp = SQLConnection::backendStoreProcedure('LN_set_docs_', array('insert', NULL,
																													('' != Request::input('nombre_set')) ? Request::input('nombre_set') : null,
																													('' != Request::input('descripcion_set')) ? Request::input('descripcion_set') : null,
																													('' != Request::input('cliente')) ? Request::input('cliente') : null,
																													(null != Request::input('hab_contratista')) ? 1 : 0,
																													(null != Request::input('hab_subcontratista')) ? 1 : 0,
																													Session::get('usuario')->user_id), 'selectOne' );
		return redirect('/led/led-set-documentos');
	}

	public static function ledSetDocumentosEdit() {
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL,0), 'select');
		$set = SQLConnection::backendStoreProcedure('LN_set_docs_', array('select', Request::input('set_doc')), 'selectOne');
		return view('/led/led_set_docs_edit')->with(compact(['clientes', 'set']));
	}

	public static function ledSetDocumentosUpdate() {
		$temp = SQLConnection::backendStoreProcedure('LN_set_docs_', array('update', Request::input('set_doc'),
																													('' != Request::input('nombre_set')) ? Request::input('nombre_set') : null,
																													('' != Request::input('descripcion_set')) ? Request::input('descripcion_set') : null,
																													('' != Request::input('cliente')) ? Request::input('cliente') : null,
																													(null != Request::input('hab_contratista')) ? 1 : 0,
																													(null != Request::input('hab_subcontratista')) ? 1 : 0,
																													Session::get('usuario')->user_id), 'selectOne' );
		return redirect('/led/led-set-documentos');		
	}

	public static function ledSetDocumentosConfirm() {
		$set = SQLConnection::backendStoreProcedure('LN_set_docs_', array('select', Request::input('set_doc')), 'selectOne');
		return view('/led/led_set_docs_confirm')->with(compact(['set']));
	}

	public static function ledSetDocumentosDelete() {
		$temp = SQLConnection::backendStoreProcedure('LN_set_docs_', array('delete', Request::input('set_doc')), 'selectOne');	
		return redirect('/led/led-set-documentos');	
	}



	public static function ledSetTipoDocumento() {
		$id = Request::input('set_doc');
		$set = SQLConnection::backendStoreProcedure('LN_set_docs_', array('select', $id), 'selectOne');
		$tipos = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('search', $id), 'select');

		return view('/led/led_set_tipo_doc')->with(compact(['set', 'tipos']));
	}

	public static function ledSetTipoDocumentoSearch() {
		$id = Request::input('set_doc');
		$set = SQLConnection::backendStoreProcedure('LN_set_docs_', array('select', $id), 'selectOne');
		$avail = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('available', $id), 'select');
		return view('/led/led_set_tipo_doc_search')->with(compact(['set', 'avail']));
	}

	public static function ledSetTipoDocumentoNew() {
		$id = Request::input('set_doc');
		$td = Request::input('tipo_doc');
		$set = SQLConnection::backendStoreProcedure('LN_set_docs_', array('select', $id), 'selectOne');
		$tipodoc = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('select', $td, null, null, null, null, null, null, null, null, null), 'selectOne');
		return view('/led/led_set_tipo_doc_new')->with(compact(['set', 'tipodoc']));
	}

	public static function ledSetTipoDocumentoAdd() {
		$id = Request::input('set_doc');
		$td = Request::input('tipo_doc');
		$toler = Request::input('tolerancia_carga');
		//$vb = (null != Request::input('verifica_backend')) ? 1 : 0;
		//$vc = (null != Request::input('verifica_cliente')) ? 1 : 0;
		$carga = Request::input('carga');
		$verifica = Request::input('verifica');
		$vb = ($verifica=='F') ? 1 : 0;
		$vc = ($verifica=='C') ? 1 : 0;
		$peso = ('' != Request::input('peso_score')) ? Request::input('peso_score') : NULL;
		$killer = (null != Request::input('killer')) ? 1 : 0;
		$act = (null != Request::input('activo')) ? 1 : 0;

		$temp = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('insert', $id, $td, $toler, $vb, $vc, $peso, $act, Session::get('usuario')->user_id, $killer,$carga,$verifica), 'selectOne');
		return json_encode( array('result' => $temp->error) );
	}

	public static function ledSetTipoDocumentoEdit() {
		$id = Request::input('set_doc');
		$td = Request::input('tipo_doc');
		$data = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('select', $id, $td), 'selectOne');
		return view('/led/led_set_tipo_doc_edit')->with(compact(['data']));
	}

	public static function ledSetTipoDocumentoUpdate() {
		$id = Request::input('set_doc');
		$td = Request::input('tipo_doc');
		$toler = Request::input('tolerancia_carga');
		//$vb = (null != Request::input('verifica_backend')) ? 1 : 0;
		//$vc = (null != Request::input('verifica_cliente')) ? 1 : 0;
		$carga = Request::input('carga');
		$verifica = Request::input('verifica');
		$vb = ($verifica=='F') ? 1 : 0;
		$vc = ($verifica=='C') ? 1 : 0;
		$peso = ('' != Request::input('peso_score')) ? Request::input('peso_score') : NULL;
		$killer = (null != Request::input('killer')) ? 1 : 0;
		$act = (null != Request::input('activo')) ? 1 : 0;

		$temp = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('update', $id, $td, $toler, $vb, $vc, $peso, $act, Session::get('usuario')->user_id, $killer,$carga,$verifica), 'selectOne');
		return json_encode( array('result' => $temp->error) );
	}

	public static function ledSetTipoDocumentoConfirm() {
		$id = Request::input('set_doc');
		$td = Request::input('tipo_doc');
		$data = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('select', $id, $td), 'selectOne');
		return view('/led/led_set_tipo_doc_confirm')->with(compact(['data']));		
	}

	public static function ledSetTipoDocumentoDelete() {
		$id = Request::input('set_doc');
		$td = Request::input('tipo_doc');
		$temp = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('delete', $id, $td), 'selectOne');
		return json_encode( array('result' => $temp->error) );		
	}

	public static function ledSetTipoDocumentoMoveUp() {
		$id = Request::input('set_doc');
		$td = Request::input('tipo_doc');
		$temp = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('up', $id, $td), 'selectOne');
		return json_encode( array('result' => $temp->error) );		
	}

	public static function ledSetTipoDocumentoMoveDown() {
		$id = Request::input('set_doc');
		$td = Request::input('tipo_doc');
		$temp = SQLConnection::backendStoreProcedure('LN_set_tipo_doc_', array('down', $id, $td), 'selectOne');
		return json_encode( array('result' => $temp->error) );				
	}


	/*******************************/

	public static function ledContrapartes($cliente=null) { 
		if ($cliente == null)
			{
				$cliente = Request::input('cliente'); 
			}
			
		$prod = !empty(Request::input('producto_fidelitas')) ? Request::input('producto_fidelitas') : 47;

		$servicios = [];
		$servicios = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cliente), 'select');
		$key = sizeof($servicios);
		$servicios[$key] = new stdClass(); 
		$servicios[$key]->producto = "00";
		$servicios[$key]->nombre_producto = "TODOS";
		
		$contrap = [];
		foreach($servicios as $key => $ser) {
				$contrap[$ser->producto] = []; 
		}
		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cliente,NULL,NULL,NULL, $prod), 'selectOne');
		//$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_informes_contraparte', null, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, $prod), 'select');
		
		$contrap1 = SQLConnection::backendStoreProcedure('LN_contrapartes_DEV', array('search_informes_contraparte', null, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null), 'select');
		
		// Si hay contrapartes de un servicio que tiene inactivo no se van a ver, solo toma la de los servicios activos.
		$cantidad_contrapartes = 0;
		$tiene_de = 0;
		$tiene_lcs = 0;
		$tiene_mlcs = 0;
		$tiene_pp = 0;

		foreach($contrap1 as $key => $cont) {
			foreach($servicios as $ser) {
				if ($ser->producto == $cont->servicio_contratado) 
				{
				$contrap[$cont->servicio_contratado][$key] = $contrap1[$key];
				$contrap["00"][$key] = $contrap1[$key];
				$cantidad_contrapartes += 1;
				if ($cont->tiene_de == 1)  { $tiene_de = 1; }
				if ($cont->tiene_lcs == 1) { $tiene_lcs = 1; }
				if ($cont->tiene_mlcs == 1) { $tiene_mlcs = 1; }
				if ($cont->tiene_pp == 1) { $tiene_pp = 1; }
				
				//83613
				$pendiente = SQLConnection::backendStoreProcedure('LN_scores_VRM', array('SOLICITAR_DDR_PENDIENTE', $cont->contraparte), 'selectOne');
				$contrap[$cont->servicio_contratado][$key]->ddr_pendiente = new stdClass; 
				$contrap[$cont->servicio_contratado][$key]->ddr_pendiente = $pendiente->solicitar_ddr_pendiente ?? '';
				
				}
			}
		}
		$tiene_exterior = SQLConnection::backendStoreProcedure('LN_demo_', array('TIENE_SCORE_IC', NULL, $cli->cliente), 'select');
		/* chequeo de producto Dossier / Business Report */
		$dossierdemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_dossier_cliente', NULL, $cli->cliente), 'selectOne');
		$businessreport = SQLConnection::backendStoreProcedure('LN_demo_', array('check_business_report_cliente', NULL, $cli->cliente), 'selectOne');
		$inquirovitae = SQLConnection::backendStoreProcedure('LN_demo_', array('check_inquirovitae_cliente', NULL, $cli->cliente), 'selectOne');


		/* chequeo de producto Fidecheck demo */
		$fidecheckdemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_fidecheck_cliente', NULL, $cli->cliente), 'selectOne');
			
		/* chequeo de producto wordcheck demo */
		$wordcheck = SQLConnection::backendStoreProcedure('LN_demo_', array('check_wordcheck_cliente', NULL, $cli->cliente), 'selectOne');
		$familias_wordcheck = SQLConnection::backendStoreProcedure('LN_demo_', array('check_wordcheck_familias', NULL, $cli->cliente), 'select');

		/* chequeo de producto Score VRM demo */
		$scorevrm = SQLConnection::backendStoreProcedure('LN_demo_', array('check_scorevrm_cliente', NULL, $cli->cliente), 'selectOne');
		$familias_scorevrm = SQLConnection::backendStoreProcedure('LN_demo_', array('check_scorevrm_familias', NULL, $cli->cliente), 'select'); 



		/* chequeo de producto Informe del Exterior demo */
		$infexterior = SQLConnection::backendStoreProcedure('LN_demo_', array('check_infexterior_cliente', NULL, $cli->cliente), 'selectOne');

		/* chequeo de producto Rep.Risk */
		$reprisk = SQLConnection::backendStoreProcedure('LN_demo_', array('check_reprisk_cliente', NULL, $cli->cliente), 'selectOne');
		$familias_reprisk = SQLConnection::backendStoreProcedure('LN_demo_', array('check_reprisk_familias', NULL, $cli->cliente), 'select'); 
		

		
		/* chequeo de producto Prensa */
		$prensa = SQLConnection::backendStoreProcedure('LN_demo_', array('check_prensa_cliente', NULL, $cli->cliente), 'selectOne');
		/* check recomendador credito */
		$recomend = SQLConnection::backendStoreProcedure('recomendadorCredito_',array($cli->cliente), 'selectOne');
		/*
		$recomend = DB::selectOne("select LN_cliente_productos.producto 
													from LN_cliente_productos 
			 										inner join LN_productos on
														LN_cliente_productos.producto = LN_productos.producto
													where LN_cliente_productos.activo = 1
													and LN_productos.visible = 1
													and LN_productos.producto_id = 'recomendadorCredito'
													and LN_cliente_productos.cliente = " . $cli->cliente); 
		*/
		$monedas = DB::select('EXEC obtener_Monedas', array());

		
		return view('/led/led_contrapartes')->with(compact(['cli', 'contrap', 'dossierdemo', 'businessreport', 'inquirovitae', 'fidecheckdemo', 'infexterior', 'recomend','tiene_exterior','prensa', 'prod','servicios','cantidad_contrapartes','tiene_de','tiene_lcs','tiene_mlcs','tiene_pp','monedas','cliente','reprisk','wordcheck','familias_wordcheck','scorevrm','familias_scorevrm','familias_reprisk']));
	}

	public static function ledContrapartesDE() {
		
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$depecon = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'select', $id, $cliente), 'select');
		$productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
		$id_producto     = $productos->producto;
		$nombre_producto = $productos->nombre_producto; 
		return json_encode(array('id_producto' => $id_producto, 'tabla' => view('/led/led_contrapartes_de_tabla')->with(compact('cliente','depecon','id_producto','nombre_producto'))->render()));
		//return view('/led/led_contrapartes_de_tabla')->with(compact('cliente','contraparte','depecon','id_producto','nombre_producto'));
	}

	public static function ledContrapartesDeleteDE() {
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$producto 	= Request::input('producto');
		$iden       = Request::input('id');

		$del = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'delete',$id,null,null,null,null,null,null,null,$iden), 'selectOne');
		$depecon = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'select', $id, $cliente), 'select');
		$productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
		$id_producto     = $productos->producto;
		$nombre_producto = $productos->nombre_producto; 
		return json_encode(array('id_producto' => $id_producto, 'tabla' => view('/led/led_contrapartes_de_tabla')->with(compact('cliente','depecon','id_producto','nombre_producto'))->render()));
	}

	public static function ledContrapartesInsertDE() {
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$producto 	= Request::input('producto_de');
		$desde 		= Request::input('periodo_desde_de');
		if ($desde !== null) { $desde = $desde . '-01';}
		$hasta 		= Request::input('periodo_hasta_de');
		if ($hasta !== null) { $hasta = $hasta . '-01';}
		$monto 	    = Request::input('monto');
		$moneda 	= Request::input('moneda');
		$visible 	= 1;
		$insert = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'insert', $id, $cliente,$producto,$desde,$hasta,$visible,$monto,$moneda), 'selectOne');
		$depecon = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'select', $id, $cliente), 'select');
		$productos = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('DE', 'productos', $id, $cliente), 'selectOne');
		$id_producto     = $productos->producto;
		$nombre_producto = $productos->nombre_producto; 
		return json_encode(array('id_producto' => $id_producto, 'tabla' => view('/led/led_contrapartes_de_tabla')->with(compact('cliente','depecon','id_producto','nombre_producto'))->render()));
	}

	public static function ledContrapartesLCS() {
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$lcs_mlcs   = 'LCS'; 
		$lcs = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('LCS', 'select', $id, $cliente), 'select');
		return view('/led/led_contrapartes_lcs_tabla')->with(compact('cliente','lcs','lcs_mlcs'));
	}

	public static function ledContrapartesMLCS() {
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$lcs_mlcs   = 'MLCS'; 
		$lcs = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array('MLCS', 'select', $id, $cliente), 'select');
		return view('/led/led_contrapartes_lcs_tabla')->with(compact('cliente','lcs','lcs_mlcs'));
	}

	public static function ledContrapartesPP() {
		$contraparte= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$pp = SQLConnection::backendStoreProcedure('LN_contrapartes_PP', array('select', $contraparte), 'select');
		return view('/led/led_contrapartes_pp_tabla')->with(compact('cliente','contraparte','pp'));
		
	}
	public static function ledContrapartesInsertPP() {
		$cliente 	= Request::input('cliente');
		$contraparte 		= Request::input('contraparte');
		$fecha 		= Request::input('fecha');
		if ($fecha !== null) { $fecha = $fecha . '-01';}
		$monto 	    = Request::input('monto');
		$moneda 	= Request::input('moneda');
		$visible 	= 1;

		$insert = SQLConnection::backendStoreProcedure('LN_contrapartes_PP', array('insert', $contraparte, $fecha,$monto,$moneda,'1'), 'selectOne');
		$pp = SQLConnection::backendStoreProcedure('LN_contrapartes_PP', array('select', $contraparte), 'select');
		return view('/led/led_contrapartes_pp_tabla')->with(compact('cliente','contraparte','pp'));
	}
	public static function ledContrapartesDeletePP() {
		$cliente 	= Request::input('cliente');
		$contraparte 		= Request::input('contraparte');
		$id      = Request::input('id');
		$del = SQLConnection::backendStoreProcedure('LN_contrapartes_PP',array('delete',$contraparte,null,null,null,$id), 'selectOne');
		$pp = SQLConnection::backendStoreProcedure('LN_contrapartes_PP', array('select', $contraparte), 'select');
		return view('/led/led_contrapartes_pp_tabla')->with(compact('cliente','contraparte','pp'));
	}


	public static function ledContrapartesDeleteLCS() {
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$producto 	= Request::input('producto');
		$iden       = Request::input('id');
		$lcs_mlcs 	= Request::input('lcs_mlcs');
		$del = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS',array($lcs_mlcs, 'delete', $id,null,null,null,null,null,null,null,$iden), 'selectOne');
		$lcs = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array($lcs_mlcs, 'select', $id, $cliente), 'select');
		return view('/led/led_contrapartes_lcs_tabla')->with(compact('cliente','contraparte','lcs','lcs_mlcs'));
	}

	public static function ledContrapartesInsertLCS() {
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');
		$producto 	= Request::input('producto');
		$desde 		= Request::input('periodo_desde_lcs'); 
		$hasta 		= null;
		$monto 	    = Request::input('monto');
		$moneda 	= Request::input('moneda');
		$texto 		= Request::input('texto');
		$lcs_mlcs 	= Request::input('lcs_mlcs');
		if ($texto == '') { $texto = null; }
		$visible 	= 1;
		$insert = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array($lcs_mlcs, 'insert', $id, $cliente,$producto,$desde,$hasta,$visible,$monto,$moneda,null,$texto), 'selectOne');
		$lcs = SQLConnection::backendStoreProcedure('LN_contrapartes_DE_LCS', array($lcs_mlcs, 'select', $id, $cliente), 'select');
		return view('/led/led_contrapartes_lcs_tabla')->with(compact('cliente','contraparte','lcs','lcs_mlcs'));
	}


	public static function ledContrapartesPrensa() {
		$accion 	= Request::input('accion');
		$id 		= Request::input('contraparte');
		$cliente 	= Request::input('cliente');

		$contrap 			= SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, Request::input('cliente'), null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$prensa 			= SQLConnection::backendStoreProcedure('LN_contraparte_prensa', array('backend_obtener_prensa',$id,Session::get('usuario')->user_id), 'selectOne');
		$valor_valoracion 	= SQLConnection::backendStoreProcedure('LN_contraparte_prensa', array('backend_obtener_valoracion',$id,Session::get('usuario')->user_id,null,null,$cliente), 'selectOne');
		$valoracion 		= SQLConnection::backendStoreProcedure('LN_contraparte_prensa', array('backend_obtener_valoracion_todas',$id,Session::get('usuario')->user_id,null,null,$cliente), 'select');

		return view('/led/led_contrapartes_prensa')->with(compact('accion', 'contrap','prensa','valoracion','valor_valoracion'));
		
	}
	
	public static function ledContrapartesPrensaAgregar() {

		$publicado 		= Request::input('publicado');
		if(!empty($publicado)){
			$publicado = 1;
		}else{
			$publicado = 0;			
		}
		//$texto  		= Request::input('editor-prensa');
		$texto  		= Request::input('resenia');
		$contraparte  	= Request::input('contraparte');
		$gestion  		= Request::input('gestion');
		$valoracion		= Request::input('valoracion');
		$cliente 		= Request::input('cliente');

		/* echo("Publicado: ".$publicado." Texto: ".$texto." Contraparte: ".$contraparte." Gestion: ".$gestion." Valoracion: ".$valoracion." Cliente: ".$cliente);
		die(); */

		$texto = str_replace("􀁿",' ',$texto);
		$imgs = preg_match_all('~(https?://[^/\s]+/\S+\.)(jpe?g|png|[tg]iff?|svg)~', $texto, $matches);
		
		
		/** bajada de imágenes **/
		if($imgs > 0) {
			$source_array = [];
			$replace_array = [];
			foreach ($matches[0] as $k => $img_url) {
				$file_name = basename($img_url);
				if(!strpos($img_url, 'fidelitas') !== false){
					$img_content = Misc::CURLCall($img_url, NULL, 'GET');
					if (!empty($img_content)) {
						if ( !(preg_match('(https?://)', $img_content, $m) > 0) ) {
							$path = env('PATH_DOCUMENTOS') . '/prensa/' .$contraparte.'/';
							if (!file_exists($path)) {
								mkdir($path, 0777, true);
							}
							file_put_contents($path. $file_name, $img_content);
							$source_array[] = $img_url;
							$replace_array[] = env('RUTA_DOCUMENTOS') . '/prensa/'.$contraparte.'/' . $file_name;							
						}
					}
				}
			}	

			if (sizeof($source_array) == sizeof($replace_array) AND sizeof($source_array) > 0) {
				$texto = str_replace($source_array, $replace_array, $texto);
			}
		}
		$texto = str_replace("'",' ',$texto);
		$texto = str_replace("􀁿",' ',$texto);
		$prensa = SQLConnection::backendStoreProcedure('LN_contraparte_prensa', array('backend_agregar_prensa',$contraparte,Session::get('usuario')->user_id,$texto,$gestion,$cliente,$valoracion,$publicado), 'selectOne');
		//return view('/led/led_contrapartes_prensa')->with(compact('accion', 'contraparte','prensa'));
		return 'true';
	}

	public static function ledContrapartesEdit() {
		$accion = Request::input('accion');
		$id = Request::input('contraparte');
		$servicio = Request::input('servicio');

		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, Request::input('cliente'), null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		// dd($contrap);	
		/* las clasificaciones habilitadas para el cliente */
		$clasif = SQLConnection::backendStoreProcedure('LN_clasificaciones_', array('search', null, $contrap->cliente, null, null, null), 'select');
		/* los items de todas las clasificaciones del cliente con la información de asignados a la contraparte */
		$items = SQLConnection::backendStoreProcedure('LN_clasificacion_items_', array('search', null, null, null, $id, null), 'select');
		$total = sizeof($clasif);

		$logo_name = null;
		$file_exists = false;
		if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png') )  {
			$logo_name = $id . '.png';
		}
		if(null == $logo_name) {
			if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg') )  {
				$logo_name = $id . '.jpg';
			}			
		}
		if(null == $logo_name) {
			if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif') )  {
				$logo_name = $id . '.gif';
			}			
		}

		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $contrap->cliente), 'select');
		$cliTipoServicio = SQLConnection::backendStoreProcedure('LN_cliente_tipo_servicio', array('LISTAR', $contrap->cliente,$servicio,NULL), 'select');
		
		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 
		$idiomas = DB::select("EXEC LED_idiomas 'search',null,null,null");

		$familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('ALL', $contrap->contraparte, null, null, null, 1, null), 'select');
		// Solo deja los datos de las familias del servicio que estamos trabajando
		foreach ($familias as $key => $fam) {
			if ($fam->servicio_contratado !== $servicio)
				{ unset ($familias[$key]);}
		}

		return view('/led/led_contrapartes_edit')->with(compact('accion', 'contrap', 'clasif', 'items', 'total', 'logo_name', 'file_exists', 'familias', 'cliente_paises', 'idiomas','servicio','cliTipoServicio'));

	}



	public static function ledContrapartesUpdate() {
		
		$accion = Request::input('accion');
		$cli = Request::input('cliente');
		$contrap = Request::input('contraparte');
		$estado_anterior = Request::input('estado_anterior');
		$activo = Request::input('activo');
		$servicio = Request::input('servicio');
		$sector = !empty(Request::input('sector')) ?? null;
		$tipo_servicio = Request::input('tipo_servicio');
		$responsable = Request::input('responsable');
		$referencia = Request::input('referencia');

		// dd($responsable);
		if ($accion == 'editar') {
			$data = [];
			$data[] = 'UPDATE_BACKEND';
			$data[] = $contrap;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = Request::input('datos_comerciales');
			$data[] = $activo;
			$data[] = Request::input('nombre_contacto');
			//$data[] = Request::input('email_contacto');
			//$data[] = Request::input('telefono_contacto');
			$data[] = NULL;
			$data[] = NULL; 
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			//$data[] = DateTime::createFromFormat('d/m/Y', Request::input('vigencia_desde'));
			//$data[] = DateTime::createFromFormat('d/m/Y', Request::input('vigencia_hasta'));
			$data[] = Session::get('usuario')->user_id;	
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = NULL;
			$data[] = !empty(Request::input('pais_servicio')) ? Request::input('pais_servicio') : 'AR';
			$data[] = NULL;
			$data[] = !empty(Request::input('codigo_idioma')) ? Request::input('codigo_idioma') : 'spa';
			$data[] = NULL;
			$data[] = $sector;
			$data[] = $responsable;
			$data[] = $tipo_servicio;
			$data[] = 'C';
			$data[] = 0;
			$data[] = null;
			$data[] = $referencia;

			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', $data, 'selectOne');

			$iniact = ('' != Request::input('inicio_actividades')) ? Request::input('inicio_actividades') : NULL;
			$empl = ('' != Request::input('empleados')) ? Request::input('empleados') : "NULL";
			$resenia = ('' != Request::input('resenia')) ? "'" . Request::input('resenia') . "'" : "NULL";
			//
			$resenia = str_replace("'","",$resenia);
			$resenia = str_replace('"','',$resenia);
			//
			$fini = (NULL != $iniact) ? "'" . date_format(date_create_from_format('!d/m/Y', $iniact), "Y-m-d") . "'" : "NULL";


			DB::select("update LN_contrapartes set inicio_actividades = " . $fini . ", empleados = " .  $empl . ", resenia = " . $resenia . " where contraparte = " . $contrap);

			if (!empty($_FILES['archivo']) && $_FILES['archivo']['name'] !== '') {
				$userfile_name = $_FILES['archivo']['name'];
				$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);

				$ftype = strtolower($userfile_extn); 
				if($ftype == 'png' OR $ftype == 'jpg' OR $ftype == 'gif') {

					if( basename($_FILES['archivo']['name']) !='' ) {
						$path = env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.' . $ftype;
						$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
						if($ftype == 'png' OR $ftype == 'jpg' OR $ftype == 'gif') { 
							move_uploaded_file($_FILES['archivo']['tmp_name'], $path);

							if($ftype == 'png') {
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg' );
								}			
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif' );
								}							
							}

							if($ftype == 'jpg') {
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . 'png') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.png' );
								}			
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.gif' );
								}							
							}

							if($ftype == 'gif') {
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.png') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.png' );
								}			
								if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg') )  {
									unlink( env('PATH_DOCUMENTOS') . '/logos/' . $contrap . '.jpg' );
								}							
							}

						}
					}

				}


			}

			$user_id = Session::get('usuario')->user_id;

			/* Actualización de familias */
			$familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('ALL', $contrap, null, null, null, 1, null), 'select');
			
			$famselec = (!empty(Request::input('familia'))) ? Request::input('familia') : NULL;
			$ingresar_una_vez = true;
			foreach ($familias as $todas) {
				/* Busco setup de la contraparte. status = 0 indica que no está previamente asignada a la contraparte */
				$status = 0;
				$found = FALSE;
				foreach ($famselec as $marked) {
					if($marked == $todas->familia) {
						$status = $todas->asignada;
						$found = TRUE;
						break;
					}
				}
				if ($status == 0) {
					
					if($found && $ingresar_una_vez == true){
						//Trazabilidad agregar familia.
						$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se agregó una familia', $cli, 'AGREGAR_FAMILIA_CONTRAPARTE_BACK','BACK', $contrap,Session::get('usuario')->user_id), 'selectOne');
						$ingresar_una_vez = false;
					}
					//die();
					$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('insert' , $contrap, $marked , NULL, NULL, 1, Session::get('usuario')->user_id), 'selectOne');

					if ($servicio == '73') 
						{
						$temp2 = SQLConnection::backendStoreProcedure('LN_alta_Contratistas', array('update', $cli, null, $marked, null, null, $contrap, $user_id), 'selectOne');
						}

				}

				if (!$found) {
					
					$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('delete' , $contrap, $todas->familia, NULL, NULL, 1, Session::get('usuario')->user_id), 'selectOne');
				}

			}



			/* Actualización de las clasificaciones dependientes del cliente */

			$temp = SQLConnection::backendStoreProcedure('LN_contraparte_clasificacion_', array('delete_all', $contrap, null), 'selectOne');
			$clasif = SQLConnection::backendStoreProcedure('LN_clasificaciones_', array('search', null, $cli, null, null, null), 'select');
			foreach ($clasif as $key => $cla) {				
				$id = $cla->clasificacion;
				$varname = 'clasificacion_'.$id;
				$item = Request::input($varname);
				if($item > 0) {
					$temp = SQLConnection::backendStoreProcedure('LN_contraparte_clasificacion_', array('insert', $contrap, $item), 'selectOne');
				}
			}

			// Reprocesa indicadores por posible actualización de familias 
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null, $contrap), 'selectOne');
			// Regenera documentos, por si el cambio de familia le cambió el set de documentos 
			$temp2 = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($contrap, null, Session::get('usuario')->user_id));
			
			// TRAZABILIDAD ACTUALIZAR CONTRAPARTE
			$temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se actualizo la Contraparte', $cli, 'UPDATE_CONTRAPARTE_BACK','BACK', $contrap,Session::get('usuario')->user_id), 'selectOne');

		}
		else {
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('delete', $contrap, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
			
			// TRAZABILIDAD BORRAR CONTRAPARTE
			$temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se borró la Contraparte', $cli, 'BORRAR_CONTRAPARTE_BACK','BACK', $contrap,Session::get('usuario')->user_id), 'selectOne');
		}
		if($activo != $estado_anterior){
			//Trazabilidad actualizar estado.
			if($activo == 1){
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se habilitó la Contraparte', $cli, 'HABILITACION_CONTRAPARTE_BACK','BACK', $contrap,Session::get('usuario')->user_id), 'selectOne');
			}else{
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se deshabilitó la Contraparte', $cli, 'DESHABILITACION_CONTRAPARTE_BACK','BACK', $contrap,Session::get('usuario')->user_id), 'selectOne');
			}
		}
		return view('/led/led_contrapartes_update')->with(compact(['cli']));
	}

	//

	public static function ledContrapartesAdd() {
		$cli = Request::input('cliente');
		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cli, NULL, NULL, NULL), 'selectOne');
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');

		//return view('/led/led_contrapartes_add')->with(compact(['cliente', 'country']));
		return view('/led/led_contrapartes_buscar')->with(compact(['cliente', 'country']));
	}

	public static function ledContrapartesBusqueda() {
		$country = Request::input('country_code');
		if($country == 'AR' AND env('LED_VERIFICACION_PADRON_AFIP') == TRUE) {
			//TODO: AFIPController no existe
			AFIPController::obtenerPadron(Request::input('numero'));
		}
		$ident = !empty(Request::input('identificador')) ? Request::input('identificador') : null;
		$nro = !empty(Request::input('numero')) ? Request::input('numero') : null;
		$nro = preg_replace('/[^a-zA-Z0-9]/', '', $nro);

		$padron = DB::select('EXEC dbo.LN_busqueda_padron ?,?', array($ident, $nro));
		return json_encode($padron);	
	}

	// busqueda generar Fidelitas por nombre o tax id
	public static function ledContrapartesBusquedaPadron() {
		$input_autocomplete = Misc::parsearBusquedaPadron(Request::input('input_autocomplete'));
		if ($input_autocomplete != "") {
			$data = DB::select('EXEC dbo.busqueda_padron_autocompletar ?,?', array($input_autocomplete,1));
			$vista = \View::make('/led/led_contrapartes_tabla_busqueda')->with(compact(['data']))->render();
			return json_encode( array('view' => $vista) );
		}
	}
/*
	public static function ledContrapartesNew() {
		$cliente 		 =	Request::input('cliente');
		$datos_cliente 	 = 	SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron 		 =	Request::input('id_padron');
		$country_code 	 =	Request::input('country_code');
		$identificador 	 =	Request::input('ídentificador');
		$numero 		 =	Request::input('numero');
		$nombre_persoona =	Request::input('nombre_persona');
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;
		$modalidad_pago  =	(!empty(Request::input('modalidad_pago'))) ? Request::input('modalidad_pago') : NULL;

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		//$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$country_code,NULL,NULL));
		$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,null,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $cliente), 'select');
		
		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 
		

		// Verifico por ID padron que no esté duplicada la contraparte dentro del LED del cliente  
		//$datoscontrap = DB::select('EXEC dbo.LN_contrapartes_sc ?,?,??,?,?,?,?,?,?,?,?,?,?,?', array('search',null,$id_padron,$cliente,null,1,null,null,null,null,null,null,null,null,null));	
		$datoscontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_sc',
		array('search',null,$id_padron,$cliente,null,1,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,$servicio));

		$qcontrap = sizeof($datoscontrap);		

		$contraparte = (sizeof($datoscontrap) > 0) ? $datoscontrap[0]->contraparte : NULL;

		// Existe la contraparte bajo el cliente, verifico los datos de la gestión activa
		if ($qcontrap > 0) {	
			$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $contraparte, NULL, NULL, NULL, NULL), 'selectOne');
		}

		$datos_comerciales = '';
		$nombre_contacto =	'';
		$email_contacto =		'';
		$telefono_contacto =	'';
		$input_range =	'';
		$vigencia_desde =	'';
		$vigencia_hasta =	'';
		$activo =					1;
		$cliente_pais = '';


		return view('/led/led_contrapartes_new')->with(compact(['cliente', 'datos_cliente', 'padron', 'familias', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago','cliente_paises','servicio','cliente_pais']));

	}
	*/

	public static function ledContrapartesNew() {
		/* 	Se fija si existe o no una contraparte para el cuit elegido
			si no exists: hace el alta normal
			si existe: pasa por una pantalla intermedia, para ver si es una nueva gestion, y quiere duplicar la contaparte
		*/
		$cliente 		 =	Request::input('cliente');
		$datos_cliente 	 = 	SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron 		 =	Request::input('id_padron');
		$country_code 	 =	Request::input('country_code');
		$identificador 	 =	Request::input('ídentificador');
		$numero 		 =	Request::input('numero');
		$nombre_persoona =	Request::input('nombre_persona');
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;
		$modalidad_pago  =	(!empty(Request::input('modalidad_pago'))) ? Request::input('modalidad_pago') : NULL;

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		//$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$country_code,NULL,NULL));
		$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,null,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $cliente), 'select');
		$cliTipoServicio = SQLConnection::backendStoreProcedure('LN_cliente_tipo_servicio', array('LISTAR', intval($cliente),$servicio,NULL), 'select');

		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 
		
		/* Verifico por ID padron que no esté duplicada la contraparte dentro del LED del cliente */
		//$datoscontrap = DB::select('EXEC dbo.LN_contrapartes_sc ?,?,??,?,?,?,?,?,?,?,?,?,?,?', array('search',null,$id_padron,$cliente,null,1,null,null,null,null,null,null,null,null,null));	
		$datoscontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_sc',
		//array('search',null,$id_padron,$cliente,null,1,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,$servicio));
		//El parametro activo lo mandamos null para que traiga los activos y los no activos 
		array('search',null,$id_padron,$cliente,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,$servicio));

		$qcontrap = sizeof($datoscontrap);		

		if (sizeof($datoscontrap) > 0)
		{
		$contrapartes = [];
			foreach ($datoscontrap as $key => $value) {
				$contrapartes[$key] = new stdClass; 
				$contrapartes[$key]->contraparte  = $value->contraparte; 
				if ($value->activo==1)
				{
					$contrapartes[$key]->estado =  'ACTIVO';
				} 
				else 
				{
					$contrapartes[$key]->estado = 'NO ACTIVO';
				} 

				$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $value->contraparte, NULL, NULL, NULL, NULL), 'selectOne');
				$family = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $value->contraparte, null, null, null, null, null), 'select');
				if (!isset($datosgestion) || sizeof($family) == 0) 
					  { unset($datoscontrap[$key]);
					    unset($contrapartes[$key]); 
					 	$qcontrap -=1; }
				else 
				{
					$familia = $family[0]; 
					$contrapartes[$key]->fecha_desde     = null; 
					$contrapartes[$key]->fecha_hasta     = null; 
					$contrapartes[$key]->nombre_familia  = null; 
					if (  is_object($datosgestion)  or sizeof($datosgestion) > 0 ) {
						$contrapartes[$key]->fecha_desde  = $datosgestion->fecha_desde; 
						$contrapartes[$key]->fecha_hasta  = $datosgestion->fecha_hasta; 
					}
					if ( is_object($familia) or sizeof($familia) > 0) {
						$contrapartes[$key]->nombre_familia  = $familia->nombre_familia; 
					}
				}
 			}
		}

		if (sizeof($datoscontrap) == 0)
		{
			$datos_comerciales = '';
			$nombre_contacto =	'';
			$email_contacto =	'';
			$telefono_contacto = '';
			$input_range =	'';
			$vigencia_desde =	'';
			$vigencia_hasta =	'';
			$activo = 1;
			$cliente_pais = '';
			$contraparte = null; 
			$datosgestion = null;
			return view('/led/led_contrapartes_new')->with(compact(['cliente', 'datos_cliente', 'padron', 'familias', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago','cliente_paises','servicio','cliente_pais','cliTipoServicio']));
		}
		else
		{ 
			return view('/led/led_contrapartes_new_gestion_contraparte')->with(compact(['cliente', 'datos_cliente', 'padron','contrapartes','modalidad_pago','cliente_paises','servicio']));
		}

	}

	public static function ledContrapartesNewContraparte() {
		$cliente 		 =	Request::input('cliente');
		$datos_cliente 	 = 	SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron 		 =	Request::input('id_padron');
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;
		$modalidad_pago  =	(!empty(Request::input('modalidad_pago'))) ? Request::input('modalidad_pago') : NULL;

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		//$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$country_code,NULL,NULL));
		$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,null,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $cliente), 'select');
		$cliTipoServicio = SQLConnection::backendStoreProcedure('LN_cliente_tipo_servicio', array('LISTAR', intval($cliente),$servicio,NULL), 'select');

		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 

		$datos_comerciales = '';
		$nombre_contacto = '';
		$email_contacto = '';
		$telefono_contacto = '';
		$input_range = '';
		$vigencia_desde = '';
		$vigencia_hasta = '';
		$activo = 1;
		$cliente_pais = '';
		$contraparte = null; 

		return view('/led/led_contrapartes_new')->with(compact(['cliente', 'datos_cliente', 'padron', 'familias', 'contraparte','datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago','cliente_paises','servicio','cliente_pais','cliTipoServicio']));

	}

	public static function ledContrapartesNewGestion() {
		$cliente 		 =	Request::input('cliente');
		$datos_cliente 	 = 	SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron 		 =	Request::input('id_padron');
		$contraparte     =  Request::input('contraparte');
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		//$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$country_code,NULL,NULL));
		$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,null,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $cliente), 'select');
		$cliTipoServicio = SQLConnection::backendStoreProcedure('LN_cliente_tipo_servicio', array('LISTAR', intval($cliente),$servicio,NULL), 'select');

		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 
		
		$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $contraparte, NULL, NULL, NULL, NULL), 'selectOne');
		$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_datos', array($contraparte), 'selectOne');
		$datos_comerciales = $qcontrap->datos_comerciales;
		$nombre_contacto =	$qcontrap->nombre_contacto;
		$email_contacto = $qcontrap->email_contacto;
		$telefono_contacto = $qcontrap->telefono_contacto; 
		$modalidad_pago    = $qcontrap->modalidad_pago; 
		$input_range =	'';
		$vigencia_desde =	'';
		$vigencia_hasta =	'';
		$activo = 1;
		$cliente_pais = $qcontrap->pais_servicio; 

		return view('/led/led_contrapartes_new')->with(compact(['cliente', 'datos_cliente', 'padron', 'familias', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago','cliente_paises','servicio','cliente_pais','cliTipoServicio']));

	}
	



	public static function ledContrapartesStep() {
		$cliente         =Request::input('cliente');
		$datos_cliente   = SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron       = Request::input('id_padron');
		$nombre_contacto = Request::input('nombre_contacto');
		$email_contacto  = Request::input('email_contacto');
		$modalidad_pago  = Request::input('modalidad_pago');
		$cliente_pais    = Request::input('cliente_pais');
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;
		
		$sector = Request::input('sector');
		$responsable = Request::input('responsable');
		$tipo_servicio = Request::input('tipo_servicio');
		
		$familia = !empty(Request::input('familia')) ? Request::input('familia') : null;

		// Es null si no existe previamente o no nulo si se va a abrir nueva gestion
		$familias_asignadas = NULL;
		$contraparte = Request::input('contraparte');
		if($contraparte > 0) {
			$datacont = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
			//$nombre_contacto = $datacont->nombre_contacto;
			//$email_contacto = $datacont->email_contacto;
			//$modalidad_pago = $datacont->modalidad_pago;

			$familias_asignadas = SQLConnection::backendStoreProcedure('Ln_contraparte_familias_', array('search',$contraparte,null,null,null,null,null), 'select');
		}

		$datos_comerciales =	Request::input('datos_comerciales');
		$telefono_contacto =	Request::input('telefono_contacto');
		$vigencia_desde	   =	Request::input('vigencia_desde');
		$vigencia_hasta	   =	Request::input('vigencia_hasta');
		$activo 		   =	Request::input('activo');

		$input_range 	   = 	(null !== Request::input('input_range')) ? 1 : 0;

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);

		$items = DB::select('EXEC dbo.LN_clasificacion_items_ ?, ?, ?, ?, ?, ?', array('SEARCH', null, null, $cliente, null, null));

		$array_items = [];
		foreach ($items as $key => $item) {
			$array_items[$item->clasificacion][] = $item;
		}


		/*$familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$padron->country_code,1,NULL));
		$familias_todas = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,NULL,1,NULL));*/
		$familias = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,$padron->country_code,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		$familias_todas = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$cliente,NULL,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		/* Para carga de informes y productos del tipo report en el alta */		
		$reports = SQLConnection::backendStoreProcedure('LN_demo_', array('reports', NULL, $cliente), 'select');
		/* Los tipos de informe de blue que se pueden asociar */
		$tipos_informe = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe_cliente', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $cliente), 'select');
		$hoy = new DateTime('today');
		$fecha_exp = date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y');
		$fecha_ent = date_format(date_add($hoy, date_interval_create_from_date_string("14 days")), 'd/m/Y');
	
		return view('/led/led_contrapartes_step')->with(compact(['cliente', 'datos_cliente', 'padron', 'contraparte', 'familias_asignadas','datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'activo', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'familias', 'familias_todas', 'array_items', 'reports', 'tipos_informe', 'fecha_exp','fecha_ent','modalidad_pago', 'familia','cliente_pais','servicio','sector','responsable','tipo_servicio']));
	}

	public static function ledContrapartesBack() {

		$cliente       = Request::input('cliente');
		$datos_cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron     = Request::input('id_padron');

		// Es null si no existe previamente o no nulo si se va a abrir nueva gestion
		$contraparte =	Request::input('contraparte');
		$servicio    =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;


		$datosgestion = null;
		if (NULL != $contraparte) {	
			$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $contraparte, NULL, NULL, NULL, NULL), 'selectOne');
		}

		$datos_comerciales = Request::input('datos_comerciales');
		$nombre_contacto   = Request::input('nombre_contacto');
		$email_contacto    = Request::input('email_contacto');
		$telefono_contacto = Request::input('telefono_contacto');
		$activo            = Request::input('activo');
		$input_range	   = Request::input('input_range');
		$vigencia_desde	   = Request::input('vigencia_desde');
		$vigencia_hasta	   = Request::input('vigencia_hasta');
		$qcontrap 		   = (NULL != $contraparte) ? 1 : 0;
		$modalidad_pago    = Request::input('modalidad_pago');
		$cliente_pais      = Request::input('cliente_pais');

		$familia = !empty(Request::input('familia')) ? Request::input('familia') : null;

		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $cliente), 'select');
		$cliTipoServicio = SQLConnection::backendStoreProcedure('LN_cliente_tipo_servicio', array('LISTAR', intval($cliente),$servicio,NULL), 'select');

		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
		return view('/led/led_contrapartes_new')->with(compact(['cliente', 'datos_cliente', 'padron', 'qcontrap', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago', 'familia','servicio','cliente_paises','cliente_pais','cliTipoServicio']));
	
	}

	public static function ledContrapartesSelectInforme() {
		$cliente       = Request::input('cliente');
		$datos_cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $cliente, NULL, NULL, NULL), 'selectOne');
		$id_padron     = Request::input('id_padron');
		$tipo_servicio = Request::input('tipo_servicio');
		$responsable = Request::input('responsable');
		$sector = Request::input('sector');
		
		// Es null si no existe previamente o no nulo si se va a abrir nueva gestion
		$contraparte =		Request::input('contraparte');
		$datosgestion = null;
		if (NULL != $contraparte) {	
			$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $contraparte, NULL, NULL, NULL, NULL), 'selectOne');
		}

		$datos_comerciales= Request::input('datos_comerciales');
		$nombre_contacto =	Request::input('nombre_contacto');
		$email_contacto =	Request::input('email_contacto');
		$telefono_contacto= Request::input('telefono_contacto');
		$activo =			Request::input('activo');
		$input_range	 =	Request::input('input_range');
		$vigencia_desde	 =	Request::input('vigencia_desde');
		$vigencia_hasta	=	Request::input('vigencia_hasta');
		$qcontrap = 		(NULL != $contraparte) ? 1 : 0;
		$modalidad_pago =	Request::input('modalidad_pago');
		$cliente_pais 	=	!empty(Request::input('cliente_pais')) ? Request::input('cliente_pais') : 'AR';
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;

		$padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);

		$familia = !empty(Request::input('familia')) ? Request::input('familia') : null;
		$familia = (is_array($familia) != 1) ? explode(',', Request::input('familia')) : $familia;
		$reports = [];
		foreach ($familia as $ix => $fam) {
			/* Para carga de informes y productos del tipo report en el alta */		
			$reports = SQLConnection::backendStoreProcedure('LN_demo_', array('reports', NULL, $cliente,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,$fam), 'select');
		}

		var_dump($cliente);die();
		/* Los tipos de informe de blue que se pueden asociar */
		$tipos_informe = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe_cliente', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $cliente), 'select');
		$hoy = new DateTime('today');
		$fecha_exp = date_format(date_add($hoy, date_interval_create_from_date_string("5 days")), 'd/m/Y');
		$fecha_ent = date_format(date_add($hoy, date_interval_create_from_date_string("14 days")), 'd/m/Y');
		$idiomas = DB::select("EXEC LED_idiomas 'search',null,null,null");
		return view('/led/led_contrapartes_seleccionar_informe')->with(compact(['cliente', 'datos_cliente', 'padron', 'qcontrap', 'contraparte', 'datosgestion', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo', 'modalidad_pago', 'familia', 'reports', 'tipos_informe', 'fecha_exp', 'fecha_ent','cliente_pais', 'idiomas','servicio','tipo_servicio','sector','responsable']));
	}


	public static function ledContrapartesInsert() {
		$cliente =								Request::input('cliente');
		$id_padron =							Request::input('id_padron');

		// Es null si no existe previamente o no nulo si se va a abrir nueva gestion
		$contraparte =							Request::input('contraparte');

		$datos_comerciales =					Request::input('datos_comerciales');
		$nombre_contacto =						Request::input('nombre_contacto');
		$email_contacto =						Request::input('email_contacto');
		$telefono_contacto =					Request::input('telefono_contacto');
		$activo =								Request::input('activo');
		$cliente_pais =							Request::input('cliente_pais');

		$modalidad_pago =						(!empty(Request::input('modalidad_pago'))) ? Request::input('modalidad_pago') : 'CC';
		$servicio        =	(!empty(Request::input('servicio'))) ? Request::input('servicio') : 47;

		$tipo_servicio = Request::input('tipo_servicio');
		$responsable = Request::input('responsable');
		$sector = Request::input('sector');
		

		$input_range =	!empty(Request::input('input_range')) ? Request::input('input_range') : 0;
		if($input_range == 1) {
			$vigencia_desde = date_create_from_format('!d/m/Y', Request::input('vigencia_desde'));
			$vigencia_hasta = date_create_from_format('!d/m/Y', Request::input('vigencia_hasta'));
			
		}
		else {
			$vigencia_desde = new DateTime('today');
			$vigencia_hasta = date_create_from_format('!d/m/Y', '31/12/2099');
		}

		/*
		$vigencia_desde = new DateTime('today');
		$vigencia_hasta = date_create_from_format('!d/m/Y', '31/12/2099');
		print_r($input_range);
		print_r($vigencia_desde);
		print_r($vigencia_hasta);
		die(); 
		*/
		
		$familias =	( null != Request::input('familia') ) ? Request::input('familia') : [];
		$familias = (is_array($familias) != 1) ? explode(',', Request::input('familia')) : $familias;
		$family = $familias[0]; 

		$items    =	( null != Request::input('item') ) ? Request::input('item') : [];

		/** Creación de un report : Dossier / Business Report / etc. **/
		$no_informe = ( null != Request::input('no_informe') ) ? Request::input('no_informe') : 0;

		/*var_dump("no_informe = "); var_dump($no_informe);
		var_dump("ALTA DE LA CONTRAPARTE"); die();*/

		//if ($no_informe == 0) {
			$producto_led = !empty(Request::input('producto')) ? Request::input('producto') : NULL;
			$id_tipo_informe = !empty(Request::input('id_tipo_informe')) ? Request::input('id_tipo_informe') : NULL;
			$enviar_mail_alta = (NULL !== Request::input('enviar_mail_alta')) ? 1 : 0;

			if (NULL != $producto_led AND NULL != $id_tipo_informe AND $id_tipo_informe != '0' ) {
				$prioridad = Request::input('prioridad');
				$solicitado_por = Request::input('solicitado_por');
				$datamanager = Request::input('datamanager');
				$estado_informe = Request::input('estado_informe');
				$asignado = Request::input('asignado');

				if ($enviar_mail_alta > 0) {
					$fecha_limite_doc = Request::input('fecha_limite_doc');
					$asignado_tarea = Request::input('asignado_tarea');
				}
			}
		//}
		/**/
		$user_id = Session::get('usuario')->user_id;
		
		$codigo_idioma = ( null != Request::input('idioma') ) ? Request::input('idioma') : 'spa';

		// Contraparte NUEVA:
		if (NULL == $contraparte) {
			$clave = Misc::generateRandomString(6);
			//$thiscontr = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('insert', NULL, $id_padron, $cliente, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, $clave, $vigencia_desde, $vigencia_hasta, Session::get('usuario')->user_id, NULL, NULL, $modalidad_pago));
			$thiscontr = SQLConnection::backendStoreProcedure('LN_contrapartes_sc', array('insert', NULL, $id_padron, $cliente, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, $clave, $vigencia_desde, $vigencia_hasta, $user_id, 0, NULL, $modalidad_pago,NULL,NULL,$cliente_pais,null,$codigo_idioma,$servicio,$family,$sector,$responsable,$tipo_servicio), 'selectOne');
			$contraparte = $thiscontr->contraparte;
		
			/*
			if ($servicio == '73') // Lo hacemos en el stored LN_contrapartes_sc ('insert') 
			{
			$temp2 = SQLConnection::backendStoreProcedure('LN_alta_Contratistas', array('insert', $cliente, $id_padron, $family, $vigencia_desde, $vigencia_hasta, $contraparte, $user_id), 'selectOne');
			}
			*/

			$gest = DB::selectOne('EXEC dbo.LN_gestiones_  ?,?,?,?,?,?,?,?', array('insert', null, null, $contraparte, $vigencia_desde, $vigencia_hasta, null, $user_id));
			$txt_nuevo = 'Alta de Contraparte'; 
		}
		else 
		{
			// Contraparte preexistente : apertura de nueva gestión y cambia datos de contacto y estado ACTIVO
			$gest = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('NUEVA_GESTION', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $vigencia_desde, $vigencia_hasta, Session::get('usuario')->user_id), 'selectOne');
			$txt_nuevo = 'Nueva gestion de Contraparte'; 

			$datos = SQLConnection::backendStoreProcedure('LN_contrapartes_sc', array('UPDATE_CONTACTO', $contraparte,NULL, NULL, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, NULL, NULL, NULL, $user_id, NULL, NULL, $modalidad_pago,NULL,NULL,$cliente_pais,NULL,$codigo_idioma,$servicio,NULL,$sector,$responsable,$tipo_servicio), 'selectOne');
		}

		// Contraparte Nueva, o nueva gestión de una existente
			foreach ($items as $key => $item) {
				$temp = DB::selectOne('EXEC dbo.LN_contraparte_clasificacion_ ?,?,?', array('insert', $contraparte, $item));
			}

			$family = null; 	
			/* Solo va a tener una familia (por eso son radios no checkbox)
				solo da de alta esa familia, borra si tiene otra */

			foreach ($familias as $ix => $fam) {
				$family = $fam;
				$temp = DB::selectOne('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('insert', $contraparte, $fam, NULL, 'N', 1, $user_id));
				$temp2 = DB::selectOne('EXEC dbo.LN_contraparte_familias_delete_otras ?,?', array($contraparte, $fam));
			}
			
			/* Antes de actualizar el legajo por primera vez pongo a la contraparte en estado de carga inicial */
			$temp = DB::selectOne('update LN_contrapartes set carga_inicial = 1 WHERE contraparte = ' . $contraparte);

			/* Generación de los documentos, todos con la tolerancia de carga inicial */
			$temp = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($contraparte, $gest->gestion, Session::get('usuario')->user_id));

			$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, $user_id));

			/* Evalúo si la contraparte tiene asociado el producto balances */
			$tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $contraparte);

			// 10/12/2019 : generación de prepagos en caso de ser necesario
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('generar_prepagos', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, $user_id), 'selectOne');

			// Lo mandamos a LN_Contrapartes_queue en vez de hacer todo aca. 
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $contraparte), 'selectOne');

			/*
			// Lo hacemos en el stored LN_contrapartes_sc ('insert') 
			//Trazabilidad Insert Contraparte

			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($txt_nuevo, $cliente, 'ALTA_CONTRAPARTE_BACKEND','BACK', $contraparte,$user_id), 'selectOne');
			*/
			foreach ($familias as $ix => $fam) {
				$texto = '';
				$nombre_familia = SQLConnection::backendStoreProcedure('ln_familias_',array('select',$fam), 'selectOne');
				$texto = 'Familia asignada: ' . $nombre_familia->nombre_familia ?? $fam; 
				$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($texto, $cliente, 'FAMILIA_ASIGNADA_BACKEND','BACK', $contraparte,$user_id), 'selectOne');
			}

			//Trazabilidad Insert Contraparte - Tipo de Informe 
			$texto = '';
			if (NULL != $producto_led AND NULL != $id_tipo_informe AND $id_tipo_informe != '0' ) {
				$tipos_informe = SQLConnection::backendStoreProcedure('LN_informes', array('tipos_informe_cliente', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $cliente), 'select');
			
				foreach ($tipos_informe as $key => $tipo) {
					if ($tipo->id_tipo_informe == $id_tipo_informe)
					{
						$texto = $tipo->tipo_informe . $tipo->version;
						break;
					}
				}
			}
			if (NULL != $producto_led) 
			{
				if ($id_tipo_informe == '0' ) { $texto = 'SIN INFORME en el Blue'; }
				if (NULL == $id_tipo_informe) { $texto = 'No se seleccionó ningún tipo de informe';	}
			}
			else 
			{ 
				$texto = 'Sin Producto LED';
			}
			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($texto, $cliente, 'TIPO_INFORME_BACKEND','BLUE', $contraparte,$user_id), 'selectOne');

/*
			// 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', $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($contraparte);
						}
						else {
							$score_informe = self::actualizarScoreComercialConBalance($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($contraparte);
						//}
						break;

					
					// Documentos 
					case 'CUMPL_DOC':
						self::actualizarCumplimientoDocumentos($contraparte);				
						break;
					case 'SCORE_DOC':
						self::actualizarScoreDocumentos($contraparte);
						break;

					// Balances 
					case 'SCORE_BAL':
						self::actualizarScoreBalance($contraparte);
						// Estos van por suscripción específica al cliente
						// self::actualizarIndicadoresBalance($contraparte); 
						break;

					// Subcontratistas 
					case 'SUBCONT':
						self::actualizarSubcontratistas($contraparte);
						break;

					// Fidecheck 
					case 'SCORE_FIDECHECK':
						self::actualizarFidecheck($contraparte);
						break;

					// Alertas BCRA 
					case 'CHEQUES_RECH':
					case 'SITUACION_CD':
						self::actualizarAlertasBCRA($contraparte);
						break;
					
					case 'SCORE_JUDICIAL':
						self::actualizarScoreJudicial($contraparte);
						break;

					// Control de ingreso - homologación 
					case 'CTRL_ETICO';
						self::actualizarControlEtico($contraparte);
						break;
					case 'CTRL_CALIDAD';
						self::actualizarControlCalidad($contraparte);
						break;
					case 'CTRL_COMERCIAL';
						self::actualizarControlComercial($contraparte);
						break;
					case 'HOMOLOG':
						self::actualizarHomologacionSubcontratista($contraparte);							
						break;

					// Recomendador de crédito
					case 'LC_DIAS_VENTAS':
					case 'LC_RENTABILIDAD':
					case 'LC_RENTABILIDAD_FECHA':
						self::actualizarRentabilidadOperativa($contraparte);												
						break;

					// Dependencia Económica Calculada 
					case 'DEP_ECON_CALC':
						self::actualizarDependenciaEconomica($contraparte);							
						break;

					// Score final 
					case 'SCORE_FINAL':
						self::actualizarScoreFinal($contraparte);
						break;

					// Límite de crédito calculado clientes BBVA, Ingredion, Novartis, Black & Decker
					case 'MONTO_SOLICITADO':
						self::actualizarMontoSolicitadoLC($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($contraparte);
						self::actualizarMontoOtorgadoLC($contraparte);
						break;



				}
			}
			*/

		/** Ingreso el informe **/
		if ($no_informe == 0 AND NULL != $producto_led AND NULL != $id_tipo_informe) {

			$fecha_limite_doc = Request::input('fecha_limite_doc');
			$fecha_comprometida = Request::input('fecha_comprometida');
			$objeto_informe = Request::input('objeto_informe');
			$nuevo = ReportsController::ReportsIngresarInforme($contraparte, $producto_led, $id_tipo_informe, $solicitado_por, $prioridad, $datamanager, $estado_informe, $asignado, $fecha_limite_doc, $fecha_comprometida, $objeto_informe);

			if (!empty($nuevo)) {

				$informe = $nuevo;

				/* Si hay que poner el informe en gestión, asignando la tarea correspondiente a solicitud de documentación **/

				if (null !== Request::input("enviar_mail_alta")) {
					if (Request::input("enviar_mail_alta") == 1) {

						$fecha_limite_doc = Request::input('fecha_limite_doc');
						$fecha_entrega_doc = Request::input('fecha_comprometida');
						$asignado_tarea = Request::input('asignado_tarea');

						ReportsController::ReportsInformeEnGestion($informe, $fecha_limite_doc, $asignado_tarea,$fecha_entrega_doc);

						//self::ledEnviarEmailContraparte($contraparte, $fecha_limite_doc);

						$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

						$modalidad_login = $modo_login->modalidad_login;

						$blade = ($modalidad_login == 'T') ? 'ALTA-TAXID' : 'ALTA-LINK';
						$subject = ($modalidad_login == 'T') ? 'ALTA-TAXID-SUBJECT' : 'ALTA-LINK-SUBJECT';

						$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $fecha_limite_doc, NULL, NULL, NULL, NULL), 'selectOne');

						DB::selectOne("update LN_contrapartes set
											clave = '" . $clave . "', clave_temporal = 1, 
											clave_cambio = NULL, modified = GETDATE(), modified_by = ". Session::get('usuario')->user_id .
											", clave_expira = '" . $fecha_limite_doc . "' where contraparte = " . $contraparte);

						/* 24/02/2021 Cambiamos el envio de mail de alta, usando EmailController en vez de LEDEmailController
						LEDEmailController::enviarMailLED($blade, $subject, $contraparte, $fecha_limite_doc);
						*/
						EmailController::enviarMail('EMAIL-LED','ALTA','',$contraparte, $fecha_limite_doc,'',false);
					}
				}


			}
		}

		return view('/led/led_contrapartes_redir')->with(compact(['cliente','cliente_pais']));
	}


	//

	public static function ledContraparteFamilias() {
		$cli = Request::input('cliente');
		$id = Request::input('contraparte');

		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, Request::input('cliente'), null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$familias = SQLConnection::backendStoreProcedure('LN_familias_', array('search',NULL,NULL,$cli,$contrap->country_code,NULL,NULL), 'select');
		$clasif = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $id, null, null, null, null, null), 'select');

		return view('/led/led_contraparte_familias')->with(compact(['contrap', 'familias', 'clasif']));

	}

	public static function ledContraparteFamiliasInsert() {
		$data = [];
		$data[] = "insert";
		$data[] = Request::input('contraparte');
		$data[] = Request::input('familia');
		$data[] = Request::input('codigo_agrupacion');
		$data[] = Request::input('estado_homologacion');
		$data[] = Request::input('activo');
		$data[] = Session::get('usuario')->user_id;

		$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', $data, 'selectOne');

		$id = Request::input('contraparte');
		$cli = Request::input('cliente');

		/*$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, Request::input('cliente'), null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$familias = SQLConnection::backendStoreProcedure('LN_familias_', array('search',NULL,NULL,$cli,$contrap->country_code,NULL,NULL), 'select');
		$clasif = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $id, null, null, null, null, null), 'select');*/

		return view('/led/led_contraparte_familias_back')->with(compact(['cli', 'id']));
		
	}

	public static function ledContraparteFamiliasEdit() {
		$accion = Request::input('accion');
		$cliente = Request::input('cliente');
		$contraparte = Request::input('contraparte');
		$familia = Request::input('familia');

		$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',Request::input('cliente'),NULL,NULL,NULL), 'selectOne');
		$clasif = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('select', $contraparte, $familia, null, null, null, null), 'selectOne');

		return view('/led/led_contraparte_familias_edit')->with(compact(['accion', 'cli', 'clasif']));
	}

	public static function ledContraparteFamiliasUpdate() {
		$accion = Request::input('accion');
		$cli = Request::input('cliente');
		$id = Request::input('contraparte');
		$fam = Request::input('familia');
		$usr = Session::get('usuario')->user_id;

		if($accion == 'editar')	{
			$cod = Request::input('codigo_agrupacion');
			$hom = Request::input('estado_homologacion');
			$act = Request::input('activo');

			$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('update', $id, $fam, $cod, $hom, $act, $usr), 'selectOne');
		}
		else {
			$temp = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('delete', $id, $fam, null, null, null, $usr), 'selectOne');
		}
		
		// Agregado 19/06/2020: si hay cambio de familia hago LN_actualizar_legajo, por si cambian los documentos a pedir.
		$temp = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($id, null, Session::get('usuario')->user_id));
		// 

		// reproceso los indicadores
		$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $id), 'selectOne');

		return view('/led/led_contraparte_familias_back')->with(compact(['cli', 'id']));

	}

	///


	public static function ledContraparteDeleteLogo() {
		$id = Request::input('contraparte');
		$producto = Request::input('producto');
		if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png') )  {
			unlink( env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png' );
		}
		if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg') )  {
			unlink( env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg' );
		}			
		if( file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif') )  {
			unlink( env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif' );
		}			
		//TODO: UNKNOW METHOD NO EXISTE EN PROYECTO
		return self::ledContraparteDossierData($id, $producto, false , false);
	}

	//
	
	public static function ledContrapartesEmail() {
		$cli = Request::input('cliente');
		$servicio = Request::input('servicio');
		$todos_pendientes = Request::input('todos_pendientes') ?? 'T';
		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cli,NULL,NULL,NULL), 'selectOne');	
		//var_dump($cliente);die;

		/* 20/05/2022: Para hacer una tanda especial de mail, mandamos 1 como 3er parametro, ver en el SP que es lo que hace cuando especial = 1 */
        // 01/09/2022
        /* AGB - El tercer parámentro va en 0 y debe modificarse si el cliente es BANCO FRANCES y la familia VRM */	
        if ($todos_pendientes == 'T')
        {
			$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_lista_email', array($cli,$servicio,0), 'select');
        }
        else 
        {
        	// Sola las contrapartes que deben documentacion 
			$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_lista_email', array($cli,$servicio,2), 'select');
			foreach ($contrap as $key => $value) {
				if ($value->total_documentos == 0 || $value->total_documentos == $value->total_cumplidos)
				{	
				 	unset($contrap[$key]);
				}
			}
        }
		/* 18/04/2023: Se hace el envio de mails de alta para amx (por cada pais, cambiar el primer paraetro. Ver el SP, por el tema de la fecha de gestion que se quiere mandar*/
		//$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_lista_email_AMX', array('PY',$cli,$servicio), 'select');

        // dd($contrap);
						
		return view('/led/led_contrapartes_email')->with(compact(['cliente', 'contrap','servicio','todos_pendientes']));
	}

	


public static function ledContrapartesEmailEnviar() {
/* 16/10/2020 Gusrda total de correctos y erroneos para mostrar en pantalla */
		$total = 0;
		$error = 0;
		$correctos = []; 
		$errores = []; 
		$expira_dmy = (NULL !== Request::input('fecha_expira')) ? Request::input('fecha_expira') : date('d/m/Y');
		$expira_ymd = date_format(date_create_from_format('d/m/Y', $expira_dmy), 'Y-m-d');

		if(!empty(Request::input('contraparte'))) {
			foreach (Request::input('contraparte') as $k => $contraparte) {

				$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id));

				// Determinar si se loguea por tax ID o por Link 
				$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

				$tipo_mail = '';
				
				if ($modo_login->modalidad_login == 'T') {

					// Login por Tax ID
					$clave = Misc::generateRandomString(6);
					
					/*
					$hoy = new DateTime('today');
					$fecha_exp = date_format(date_add($hoy, date_interval_create_from_date_string("15 days")), 'd/m/Y');
					$hoy = new DateTime('today');
					$clave_exp = date_format(date_add($hoy, date_interval_create_from_date_string("15 days")), 'Y-m-d');
					*/
					$fecha_exp = $expira_dmy;
					$clave_exp = $expira_ymd;

					$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $clave_exp, NULL, NULL, NULL, NULL), 'selectOne');


					DB::selectOne("update LN_contrapartes set
											clave = '" . $clave . "', clave_temporal = 1, 
											clave_cambio = NULL, modified = GETDATE(), modified_by = ". Session::get('usuario')->user_id .
											", clave_expira = '" . $clave_exp . "' where contraparte = " . $contraparte);

					/*$texto_adicional = NULL;
					$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id));

					$ncliente = $dataprov->nombre_cliente;

					if ($dataprov->cliente == 5546348) {

						//$texto_adicional = 'Usted tendrá tiempo para la carga de información hasta el día viernes 5 de Abril.';
						$texto_adicional = 'Usted tendrá tiempo para la carga de información hasta el día ' .$dataprov->limite_carga_inicial;

						// Chanchada para cambiar el nombre del cliente en caso de ser AMX 
						$ncliente = ($dataprov->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($dataprov->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $dataprov->nombre_cliente );

					}

					$content = array('nombre_cliente' => $ncliente,
												'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'),
												'texto_adicional' => $texto_adicional );

					$from = 'servicio@fidelitas.com.ar';
					$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : trim($dataprov->email_contacto);
					//$to = 'maria.soria@fidelitas.com.ar'; 
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
					$replyto = 'soporteled@fidelitas.com.ar';
					$attach = ($dataprov->cliente == 5546348 OR $dataprov->cliente == 3920694 OR $dataprov->cliente == 2254875) ? env('PATH_COMPARTIDO') . '/legajos/descargas/5546348/Instructivo LED - Contratistas AMX Claro.pdf' : '';

					//Misc::enviarMailLED('/led/led_contrapartes_email_content' , $from, $to, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Alta de contrapartes", $attach);
					//$total++;				
					
					if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
						Misc::enviarMailLED('/led/led_contrapartes_email_content' , $from, $to, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Alta de contrapartes", $attach);
	          			$correctos[$total] = new stdClass(); 
						$correctos[$total]->contraparte = trim($dataprov->nombre_persona); 
						$correctos[$total]->mail = $to; 
						$total++;
					}
					else { 
						$errores[$error] = new stdClass(); 
						$errores[$error]->contraparte = trim($dataprov->nombre_persona); 
						$errores[$error]->mail = $to; 
						$error++;
					}*/
					//Trazabilidad primer Mail.
					//$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se envió el mail inicial', $cli, 'EMAIL_1_TAXID','BACK', $contraparte), 'selectOne');
					$tipo_mail = 'ALTA-TAXID';
					/* 24/02/2021 Cambiamos el envio de mail de alta, usando EmailController en vez de LEDEmailController
					$enviar = LEDEmailController::enviarMailLED('ALTA-TAXID', 'ALTA-TAXID-SUBJECT', $contraparte, $fecha_exp);
					*/
					//AGB
				//	dd($tipo_mail);
					$enviar = EmailController::enviarMail('EMAIL-LED','ALTA','',$contraparte, $fecha_exp,'',false);

				}
				else {
					
					//$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se envió el mail inicial', $cli, 'EMAIL_1_LINK','BACK', $contraparte), 'selectOne');
					// Login por Link 
					
					
					$familia = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search',$contraparte,null,null,null,1,null), 'selectOne');

					if (!empty($familia)) {
						$hoy = new DateTime('today');

						$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id));

						if ($familia->uso_familia != 'I' && $dataprov->servicio_contratado != '10') {
							if ($expira_dmy == null)
							{
								$fecha_exp = date_format(date_add($hoy, date_interval_create_from_date_string("15 days")), 'd-m-Y');		
							}
							else 
							{
								$fecha_exp = str_replace('/','-',$expira_dmy);
							}

							$limite_carga_inicial = date_add(date_add( date_create_from_format('!d-m-Y', $fecha_exp), date_interval_create_from_date_string("1 day")), date_interval_create_from_date_string('-1 second'));
							/*var_dump($fecha_exp);
							var_dump($limite_carga_inicial);
							 die(); */
							$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $limite_carga_inicial, NULL, NULL, NULL, NULL), 'selectOne');
							$tipo_mail = 'ALTA-LINK';
							/* 24/02/2021 Cambiamos el envio de mail de alta, usando EmailController en vez de LEDEmailController
							$enviar = LEDEmailController::enviarMailLED('ALTA-LINK', 'ALTA-LINK-SUBJECT', $contraparte, $fecha_exp);
							*/
							//dd(var_dump($contraparte));

							$enviar = EmailController::enviarMail('EMAIL-LED','ALTA','',$contraparte, $fecha_exp,'',false);
						}
						else 
						{
							/*echo(var_dump($expira_dmy));
							echo(var_dump($expira_ymd));
							
							die();
							*/

//							$fecha_exp = date_format(date_add($hoy, date_interval_create_from_date_string("1 day")), 'd-m-Y');
//							$limite_carga_inicial = date_add(date_add( date_create_from_format('!d-m-Y', $fecha_exp), date_interval_create_from_date_string("1 day")), date_interval_create_from_date_string('-1 second'));
							$fecha_exp = $expira_dmy;

							$limite_carga_inicial = date_format(date_create_from_format('Y-m-d',$expira_ymd),'Y-m-d 23:59:59');
							//$limite_carga_inicial = date_time_set($limite_carga_inicial,23,59,59);

//							echo(var_dump($limite_carga_inicial));
//							echo(var_dump($fecha_exp));
							//echo(var_dump($temp));
							
//							die();

							$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $limite_carga_inicial, NULL, NULL, NULL, NULL), 'selectOne');
							$tipo_mail = 'ALTA-LINK-INQUIROVITAE';
							
							
							
							
							/* 24/02/2021 Cambiamos el envio de mail de alta, usando EmailController en vez de LEDEmailController
							$enviar = LEDEmailController::enviarMailLED('ALTA-LINK-INQUIROVITAE', 'ALTA-LINK-SUBJECT-INQUIROVITAE', $contraparte, $fecha_exp);
							*/
							$enviar = EmailController::enviarMail('EMAIL-LED','ALTA','',$contraparte, $fecha_exp,'',false);
						}
					
					}	

				}

				$tipo_mail = str_replace('-', ' ', $tipo_mail); 
				if (!$enviar)
				{
					$errores[$error] = new stdClass(); 
					$errores[$error]->contraparte = trim($dataprov->nombre_persona); 
					$errores[$error]->mail = $dataprov->email_contacto;
					$errores[$error]->tipo = $tipo_mail;
					$error++;
				}
				else 
				{
					$correctos[$total] = new stdClass(); 
					$correctos[$total]->contraparte = trim($dataprov->nombre_persona); 
					$correctos[$total]->mail = $dataprov->email_contacto;
					$correctos[$total]->tipo = $tipo_mail;
					$total++;
				}
			}
		}

		//return view('/led/led_contrapartes_email_enviar')->with(compact(['total','correctos','error','errores']));
		//var_dump("acaaaa"); die(); 		
		return view('/led/led_emails_enviados')->with(compact(['total','correctos','error','errores']));

	}

	//


	public static function ledContraparteFidecheck() {
		$cl = Request::input('cliente');
		$id = Request::input('contraparte');

		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cl,NULL,NULL,NULL), 'selectOne');	
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		
		$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_fidecheckdemo')->with(compact(['cliente', 'contrap', 'socios', 'relac', 'direct','propio']));
	}

	public static function ledContraparteFidecheck2() {
		//$cl = Request::input('cliente');
		$cl = 2046807993; 
		//$id = Request::input('contraparte');
		$id = 32103; 
		$inicio = (null !== Request::input('inicio')) ?  Request::input('inicio') : 'inicio';

		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cl,NULL,NULL,NULL), 'selectOne');	
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$completa = SQLConnection::backendStoreProcedure('LN_completa_fidecheck', array($id), 'selectOne');

		$socios = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('searchall', null, $id, null, 'S'), 'select');
		$relac  = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('searchall', null, $id, null, 'R'), 'select');
		$direct = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('searchall', null, $id, null, 'D'), 'select');
		$propio = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('searchall', null, $id, null, 'P'), 'selectOne');
		return view('/led/led_fidecheckdemo2')->with(compact(['cliente', 'contrap', 'socios', 'relac', 'direct','propio','inicio']));
	}




	/*-----------------------*/
	/* INFORMES DEL EXTERIOR */
 	/*-----------------------*/

	public static function ledContraparteInfExt() {
		$id = Request::input('contraparte');
		$prod = Request::input('producto');
		$cdata = DB::selectOne('select cliente, contraparte, gestion from LN_gestiones where contraparte = ' . $id . ' and desde <= GETDATE() and hasta >= GETDATE() and vigente = 1');
		$hay_archivo = false; 

		/*
		if (!empty($_FILES['archivo_infexterior']) && $_FILES['archivo_infexterior']['name'] !== '') {
			$userfile_name = $_FILES['archivo_infexterior']['name'];
			$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);
			$ftype = strtolower($userfile_extn); 
			if($ftype == 'pdf') {
				if( basename($_FILES['archivo_infexterior']['name']) !='' ) {
					//$path = env('PATH_DOCUMENTOS') . '/informe_exterior/' . $id . '.' . $ftype;
		      $path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf';
					$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
					if($ftype == 'pdf') { 
						move_uploaded_file($_FILES['archivo_infexterior']['tmp_name'], $path);
						chmod($path, 0777);
					}
				}
			}
		}
		*/
		return self::ledContraparteInfExtData($id,$prod);

	}

	public static function ledContraparteInfExtData($id,$prod) {
		$cdata = DB::selectOne('select cliente, contraparte, gestion from LN_gestiones where contraparte = ' . $id . ' and desde <= GETDATE() and hasta >= GETDATE() and vigente = 1');
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$infexterior_file = '';
		$infexterior_url  = '';
		if( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf') )  {
			$infexterior_file = $id . '.pdf';
			$infexterior_url = env('RUTA_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf?v='.(rand());
		}

		$infexteriordemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_infexterior_contraparte', $id), 'selectOne');

		$score_res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'SCORE_IC'), 'selectOne');
		$score = ''; 
		$motivo = ''; 
		if (isset($score_res)) {
		   $score = $score_res->valor; 
 		   $motivo = $score_res->valor_memo; 
    	}

		$hay_archivo = false; 
		/*var_dump(env('PATH_DOCUMENTOS'));
		var_dump(env('RUTA_DOCUMENTOS')); die(); */
		if( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf') )  {
			$hay_archivo = true; 
		}
		//
		$vista = \View::make('/led/led_inf_ext')->with(compact(['contrap', 'score', 'motivo', 'prod', 'infexteriordemo',  'infexterior_file', 'infexterior_url','hay_archivo']));
		return $vista;
	}

	/* Elimina el archivo pdf del Inf Exterior 
	public static function ledContraparteDeleteInfExtFile() {
		$prod = Request::input('producto');
		$id = Request::input('contraparte');
		$cdata = DB::selectOne('select cliente, contraparte, gestion from LN_gestiones where contraparte = ' . $id . ' and desde <= GETDATE() and hasta >= GETDATE() and vigente = 1');
		if( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf') )  {
			$infexterior_file = $id . '.pdf';
			unlink( env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf' );
		}
		return self::ledContraparteInfExtData($id);
	} 
  	*/

	public static function ledContraparteInfExtDelete() {
		$id = Request::input('contraparte');
		$prod = Request::input('producto');
		$cdata = DB::selectOne('select cliente, contraparte, gestion from LN_gestiones where contraparte = ' . $id . ' and desde <= GETDATE() and hasta >= GETDATE() and vigente = 1');
		If( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf') )  {
			  unlink( env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf' );
		}

		$temp = SQLConnection::backendStoreProcedure('LN_demo_', array('BORRAR_SCORE_IC', $id), 'selectOne');
	
		return self::ledContrapartes($cdata->cliente); 

	}

	public static function ledContraparteInfExtUpdate() {
		$id 	 = Request::input('contraparte');
		$score = ('' != Request::input('score')) ? Request::input('score') : NULL;
		$motivo = ('' != Request::input('motivo')) ? Request::input('motivo') : NULL;
		$prod = Request::input('producto');
		$cdata = DB::selectOne('select cliente, contraparte, gestion from LN_gestiones where contraparte = ' . $id . ' and desde <= GETDATE() and hasta >= GETDATE() and vigente = 1');
	  	$modo = (null != Request::input('modoupload')) ? Request::input('modoupload') : 'R';
		
		$temp  = SQLConnection::backendStoreProcedure('LN_demo_', array('UPDATE_SCORE_IC', $id, NULL, NULL,
																											NULL, NUll, NULL,
																											NULL, NUll, NULL,
																											NULL, NUll, NULL,
																											NULL, NUll, NULL,
																											NULL, $motivo, $score), 'selectOne'); 
		if (!empty($_FILES['archivo_infexterior']) && $_FILES['archivo_infexterior']['name'] !== '') {
			$userfile_name = $_FILES['archivo_infexterior']['name'];
			$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);
			$ftype = strtolower($userfile_extn); 
			if($ftype == 'pdf') {
				if( basename($_FILES['archivo_infexterior']['name']) !='' ) {
					if ($modo=="R")
					{
			      		$path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf';
						$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
						if(!is_dir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion)){
						   mkdir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion, 0777,true);
				    	}
					 	move_uploaded_file($_FILES['archivo_infexterior']['tmp_name'], $path);
						chmod($path, 0777);
					}
					else 
					{
						// Archivo preexistente - Modo append 
		      			$path  = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf';
						$path2 = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '_merge.pdf';
					  	if (move_uploaded_file($_FILES['archivo_infexterior']['tmp_name'], $path2))
					  	{
							chmod($path2, 0777);														
							$joinedpdf = PdfMerger::init();
                            $joinedpdf->addPDF($path, 'all');
                            $joinedpdf->addPDF($path2, 'all');
                            $joinedpdf->merge('file');
                            $joinedpdf->save($path);
							//unlink( env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '_merge.pdf');
					  	} 
					}
				}
			}
		}

		//return self::ledContraparteInfExtData($id,$prod);
		return "true"; 
	}
 	/*-----------------------*/

	/*-----------------------*/
 	/* REP RISK */
 	/*-----------------------*/


	public static function ledContraparteRepRisk() {
		$id = Request::input('contraparte');
		$prod = Request::input('producto');
		$cdata = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('GESTION', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$hay_archivo = false; 
		return self::ledContraparteRepRiskData($id,$prod);

	}

	public static function ledContraparteRepRiskData($id,$prod) {
		$cdata = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('GESTION', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$infexterior_file = '';
		$infexterior_url  = '';
		if( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf') )  {
			$infexterior_file = $id . '.pdf';
			$infexterior_url = env('RUTA_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf';
		}

		$infexteriordemo = SQLConnection::backendStoreProcedure('LN_demo_', array('check_reprisk_contraparte', $id), 'selectOne');

		$score_res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_valor_numerico', NULl, NULL, NULL, $id, 'SCORE_RR'), 'selectOne');
		$score = ''; 
		if (isset($score_res)) {
		   $score = $score_res->valor; 
    	}

		$hay_archivo = false; 
	    If( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf') )  
	    {
			$hay_archivo = true; 
		}
		$reprisk = []; 
		$valores = SQLConnection::backendStoreProcedure('LN_RepRisk_clasificacion', array($id), 'select');
		foreach ($valores as $key => $value) {
			$key1 =  $value->score; 
   			$reprisk[$key1] = new stdClass();
			$reprisk[$key1]->score = $value->score;
			$reprisk[$key1]->texto = $value->texto;
			$reprisk[$key1]->memo  = $value->texto_largo;
			$reprisk[$key1]->color  = $value->color_fondo;
		}

		$vista = \View::make('/led/led_rep_risk')->with(compact(['contrap', 'score','reprisk', 'prod', 'infexteriordemo',  'infexterior_file', 'infexterior_url','hay_archivo']));
		return $vista;
	}

	public static function ledContraparteRepRiskDelete() {
		$id = Request::input('contraparte');
		$prod = Request::input('producto');
		$cdata = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('GESTION', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		If( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf') )  {
			  unlink( env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf' );
		}

		$temp = SQLConnection::backendStoreProcedure('LN_demo_', array('BORRAR_SCORE_RR', $id), 'selectOne');
		return self::ledContrapartes($cdata->cliente); 

	}

	public static function ledContraparteRepRiskUpdate() {
		$id 	 = Request::input('contraparte');
		$score = ('' != Request::input('score')) ? Request::input('score') : NULL;
		$motivo = ('' != Request::input('motivo')) ? Request::input('motivo') : NULL;
		$prod = Request::input('producto');
		$cdata = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('GESTION', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
	    $modo = (null != Request::input('modoupload')) ? Request::input('modoupload') : 'R';
	  
		$temp  = SQLConnection::backendStoreProcedure('LN_demo_', array('UPDATE_SCORE_RR', $id, NULL, NULL,
																											NULL, NUll, NULL,
																											NULL, NUll, NULL,
																											NULL, NUll, NULL,
																											NULL, NUll, NULL,
																											NULL, NULL, $score), 'selectOne'); 
		if (!empty($_FILES['archivo_infexterior']) && $_FILES['archivo_infexterior']['name'] !== '') {
			$userfile_name = $_FILES['archivo_infexterior']['name'];
			$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);
			$ftype = strtolower($userfile_extn); 
			if($ftype == 'pdf') {
				if( basename($_FILES['archivo_infexterior']['name']) !='' ) {
					if ($modo=="R")
					{
			      $path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf';
						$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
						if(!is_dir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion)){
						   mkdir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion, 0777,true);
				    }
					  move_uploaded_file($_FILES['archivo_infexterior']['tmp_name'], $path);
						chmod($path, 0777);
					}
					else 
					{
						// Archivo preexistente - Modo append 
		      	$path  = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '.pdf';
						$path2 = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '_merge.pdf';
					  if (move_uploaded_file($_FILES['archivo_infexterior']['tmp_name'], $path2))
					  {						
						chmod($path2, 0777);														
						$joinedpdf = PdfMerger::init();
                        $joinedpdf->addPDF($path, 'all');
                        $joinedpdf->addPDF($path2, 'all');
                        $joinedpdf->merge('file');
                        $joinedpdf->save($path);
						
						//unlink( env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/' . $prod . '_merge.pdf');
					  } 
					}
				}
			}
		}

		//return self::ledContraparteInfExtData($id,$prod);
		return "true"; 
	}

	/* -------------------------- */

 	


	public static function ledFidecheckAdd() {
		$id = Request::input('contraparte');
		$seccion = Request::input('seccion');
		$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		return view('/led/led_fidecheck_add')->with(compact(['seccion', 'qcontrap']));
	}

	public static function ledFidecheckEdit() {
		$id = Request::input('id_fidecheck');
		$seccion = Request::input('seccion');
		$contraparte = Request::input('contraparte');
		$fidecheck = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('select', $id, $contraparte, '',$seccion), 'selectOne');
		return view('/led/led_fidecheck_edit')->with(compact(['fidecheck']));
	}

	public static function ledFidecheckMove() {
		$id = Request::input('id_fidecheck');
		$move = Request::input('move');
		$fidecheck = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('select', $id), 'selectOne');
		if (!empty($fidecheck)) {
			if ( !($fidecheck->orden == 1 AND $move == 'up') ) {
				$temp = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array($move, $id), 'selectOne');
			}
			$cliente = $fidecheck->cliente;
			$contraparte = $fidecheck->contraparte;

			return view('/led/led_fidecheck_back')->with(compact(['cliente', 'contraparte']));
		}
	}

	public static function ledFidecheckInsert() {
		$contraparte = Request::input('contraparte');
		$cliente = Request::input('cliente');
		$seccion = Request::input('seccion');

		$nombre = ('' != Request::input('nombre')) ? Request::input('nombre') : NULL;
		$tax_id = ('' != Request::input('tax_id')) ? Request::input('tax_id') : NULL;
		$nacionalidad = ('' != Request::input('nacionalidad')) ? Request::input('nacionalidad') : NULL;
		$fidecheck = ('' != Request::input('fidecheck')) ? Request::input('fidecheck') : NULL;

		$porcentaje = (NULL !== Request::input('porcentaje')) ? ('' != Request::input('porcentaje') ? Request::input('porcentaje') : NULL) : NULL;
		$cargo = (NULL !== Request::input('cargo')) ? ('' != Request::input('cargo') ? Request::input('cargo') : NULL) : NULL;
		$tipo_relacion = (NULL !== Request::input('tipo_relacion')) ? ('' != Request::input('tipo_relacion') ? Request::input('tipo_relacion') : NULL) : NULL;

		$detalle = ('' != Request::input('detalle')) ? Request::input('detalle') : NULL;


		$temp = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', 
																					array('insert', NULL, $contraparte, $nombre, $seccion, $tax_id,
																							$nacionalidad, $porcentaje, $tipo_relacion, $cargo, $fidecheck, $detalle), 
																					'selectOne');

		return view('/led/led_fidecheck_back')->with(compact(['cliente', 'contraparte']));
	}

	public static function ledFidecheckUpdate() {
		$id = Request::input('id_fidecheck');
		$fcheck = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('select', $id), 'selectOne');

		if (!empty($fcheck)) {

			$contraparte = $fcheck->contraparte;
			$cliente = $fcheck->cliente;
			$seccion = $fcheck->seccion;

			$nombre = ('' != Request::input('nombre')) ? Request::input('nombre') : NULL;
			$tax_id = ('' != Request::input('tax_id')) ? Request::input('tax_id') : NULL;
			$nacionalidad = ('' != Request::input('nacionalidad')) ? Request::input('nacionalidad') : NULL;
			$check = ('' != Request::input('fidecheck')) ? Request::input('fidecheck') : '';

			$porcentaje = (NULL !== Request::input('porcentaje')) ? ('' != Request::input('porcentaje') ? Request::input('porcentaje') : NULL) : NULL;
			$cargo = (NULL !== Request::input('cargo')) ? ('' != Request::input('cargo') ? Request::input('cargo') : NULL) : NULL;
			$tipo_relacion = (NULL !== Request::input('tipo_relacion')) ? ('' != Request::input('tipo_relacion') ? Request::input('tipo_relacion') : NULL) : NULL;

			$detalle = ('' != Request::input('detalle')) ? Request::input('detalle') : NULL;

			$temp = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', 
																						array('UPDATE', $id, $contraparte, $nombre, $seccion, $tax_id,
																								$nacionalidad, $porcentaje, $tipo_relacion, $cargo, $check, $detalle), 
																						'selectOne');

			return view('/led/led_fidecheck_back')->with(compact(['cliente', 'contraparte']));
		}
	}

	public static function ledFidecheckDelete() {
		$id = Request::input('id_fidecheck');
		$fcheck = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('select', $id), 'selectOne');

		if (!empty($fcheck)) {

			$contraparte = $fcheck->contraparte;
			$cliente = $fcheck->cliente;
			$temp = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('DELETE', $id), 'selectOne');

			return view('/led/led_fidecheck_back')->with(compact(['cliente', 'contraparte']));

		}
	}

	public static function ledFidecheckDelete2() {
		$id = Request::input('id_fidecheck');
		$fcheck = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('select', $id), 'selectOne');
		if (!empty($fcheck)) {

			$contraparte = $fcheck->contraparte;
			$cliente = $fcheck->cliente;
			$temp = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('CAMBIARESTADO', $id), 'selectOne');

			return view('/led/led_fidecheck_back2')->with(compact(['cliente', 'contraparte']));

		}
	}



	//


	public static function ledLimiteCredito() {
		$id = Request::input('contraparte');
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$lc = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $id), 'selectOne');

		/* estos 2 indicadores van al panel de control */
		$ventas_lc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_VENTAS'), 'selectOne');
		$fecha_ventas = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_VENTAS_FECHA'), 'selectOne');

		/* ventas promedio post balance */
		$ventas_ppb_lc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'LC_VENTAS_PPB'), 'selectOne');

		/* 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');
		$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');


		$dbalances = SQLConnection::backendStoreProcedure('LN_balances', array('balances_contraparte', $id), '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);

		$file_lc = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('doc_lc', $id), 'selectOne');		
		$file_exists = (!empty($file_lc)) ? (file_exists(env('PATH_DOCUMENTOS') . $file_lc->ruta_archivo) ? true : false) : false;
		$file_url = (!empty($file_lc)) ? (file_exists(env('PATH_DOCUMENTOS') . $file_lc->ruta_archivo) ? env('PATH_DOCUMENTOS') . $file_lc->ruta_archivo : NULL) : NULL;

		return view('/led/led_limite_credito')->with(compact(['contrap', 'lc', 'ventas_lc', 'fecha_ventas', 'ventas_ppb_lc', 'ind1', 'ind2', 'ind5', 'ind6', 'ind7', 'ind8', 'ind9', 'ind0', 'balances', 'datos_balances', 'file_lc', 'file_exists', 'file_url']));
	}


	public static function ledLimiteCreditoUpdate() {
		$id = Request::input('contraparte');
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$lc = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $id), 'selectOne');
		$ln_gestion = SQLConnection::backendStoreProcedure('LN_gestiones_',array('verificar_gestion_activa',null,null,$id,null,null,null,null), 'selectOne');
		$cliente = $contrap->cliente;

		$maximo_recomendado = (''!= Request::input('maximo_recomendado')) ? Request::input('maximo_recomendado') : NULL;

		$recomendacion = Request::input('recomendacion');
		
		$monto_ventas_lc = ('' != Request::input('monto_ventas_lc')) ? Request::input('monto_ventas_lc') : NULL;
		$fecha_ventas = ('' != Request::input('fecha_ventas')) ? Request::input('fecha_ventas') : NULL;

		$monto_ventas_ppb_lc = ('' != Request::input('monto_ventas_ppb_lc')) ? Request::input('monto_ventas_ppb_lc') : NULL;

		$score_balance = ('' != Request::input('score_balance')) ? Request::input('score_balance') : NULL;
		$tendencia_balance = ('' != Request::input('tendencia_balance')) ? Request::input('tendencia_balance') : NULL;
		$escenarios_futuros = ('' != Request::input('escenarios_futuros')) ? Request::input('escenarios_futuros') : NULL;
		$tendencia_escenarios = ('' != Request::input('tendencia_escenarios')) ? Request::input('tendencia_escenarios') : NULL;
		$situacion_socios = ('' != Request::input('situacion_socios')) ? Request::input('situacion_socios') : NULL;
		$tendencia_socios = ('' != Request::input('tendencia_socios')) ? Request::input('tendencia_socios') : NULL;
		

		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('monto_recomendado', NULL, NULL, NULL, $id, NULL, NULL, $maximo_recomendado), 'selectOne');

		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ventas_limite_credito', NULL, NULL, NULL, $id, NULL, NULL, $monto_ventas_lc), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ventas_limite_credito_fecha', NULL, NULL, NULL, $id, NULL, NULL, NULL, $fecha_ventas), 'selectOne');

		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ventas_ppb_limite_credito', NULL, NULL, NULL, $id, NULL, NULL, $monto_ventas_ppb_lc), 'selectOne');

		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_balance_lc', NULL, NULL, NULL, $id, NULL, NULL, $score_balance), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('tendencia_balance_lc', NULL, NULL, NULL, $id, NULL, NULL, NULL, $tendencia_balance), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('escenarios_futuros', NULL, NULL, NULL, $id, NULL, NULL, $escenarios_futuros), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('tendencia_escenarios', NULL, NULL, NULL, $id, NULL, NULL, NULL, $tendencia_escenarios), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('situacion_socios', NULL, NULL, NULL, $id, NULL, NULL, NULL, $situacion_socios), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('tendencia_situacion', NULL, NULL, NULL, $id, NULL, NULL, NULL, $tendencia_socios), 'selectOne');


		$post_activo_caja_bancos = ('' != Request::input('post_activo_caja_bancos')) ? Request::input('post_activo_caja_bancos') : NULL;
		$post_activo_inversiones = ('' != Request::input('post_activo_inversiones')) ? Request::input('post_activo_inversiones') : NULL;
		$post_activo_corriente = ('' != Request::input('post_activo_corriente')) ? Request::input('post_activo_corriente') : NULL;
		$post_activo_total = ('' != Request::input('post_activo_total')) ? Request::input('post_activo_total') : NULL;
		
		$post_pasivo_corriente = ('' != Request::input('post_pasivo_corriente')) ? Request::input('post_pasivo_corriente') : NULL;
		$post_prestamos_corrientes = ('' != Request::input('post_prestamos_corrientes')) ? Request::input('post_prestamos_corrientes') : NULL;
		$post_prestamos_no_corrientes = ('' != Request::input('post_prestamos_no_corrientes')) ? Request::input('post_prestamos_no_corrientes') : NULL;
		$post_pasivo_total = ('' != Request::input('post_pasivo_total')) ? Request::input('post_pasivo_total') : NULL;

		$post_patrimonio = ('' != Request::input('post_patrimonio')) ? Request::input('post_patrimonio') : NULL;

		$post_patrimonio_integrado = ('' != Request::input('post_patrimonio_integrado')) ? Request::input('post_patrimonio_integrado') : NULL;
		
		$post_resultados_acumulados = ('' != Request::input('post_resultados_acumulados')) ? Request::input('post_resultados_acumulados') : NULL;

		$post_capital_trabajo = ('' != Request::input('post_capital_trabajo')) ? Request::input('post_capital_trabajo') : NULL;
		$post_rel_capital_trabajo_pasivo = ('' != Request::input('post_rel_capital_trabajo_pasivo')) ? Request::input('post_rel_capital_trabajo_pasivo') : NULL;
		$post_rel_capital_trabajo_ventas = ('' != Request::input('post_rel_capital_trabajo_ventas')) ? Request::input('post_rel_capital_trabajo_ventas') : NULL;

		$post_rel_compras_ventas	= ('' != Request::input('post_rel_compras_ventas')) ? Request::input('post_rel_compras_ventas') : NULL;

		$post_ventas = ('' != Request::input('post_ventas')) ? Request::input('post_ventas') : NULL;
		$post_compras = ('' != Request::input('post_compras')) ? Request::input('post_compras') : NULL;
		$post_ganancia = ('' != Request::input('post_ganancia')) ? Request::input('post_ganancia') : NULL;

		$post_rentabilidad_final = ('' != Request::input('post_rentabilidad_final')) ? Request::input('post_rentabilidad_final') : NULL;
		$post_resultado_operativo = ('' != Request::input('post_resultado_operativo')) ? Request::input('post_resultado_operativo') : NULL;
		$post_rentabilidad_operativa = ('' != Request::input('post_rentabilidad_operativa')) ? Request::input('post_rentabilidad_operativa') : NULL;

		
		$post_ebitda = ('' != Request::input('post_ebitda')) ? Request::input('post_ebitda') : NULL;
		$post_otros_ingresos = ('' != Request::input('post_otros_ingresos')) ? Request::input('post_otros_ingresos') : NULL;
		$post_otros_egresos = ('' != Request::input('post_otros_egresos')) ? Request::input('post_otros_egresos') : NULL;

		$post_rel_ebitda_ventas = ('' != Request::input('post_rel_ebitda_ventas')) ? Request::input('post_rel_ebitda_ventas') : NULL;

		$post_fondos = ('' != Request::input('post_fondos')) ? Request::input('post_fondos') : NULL;

		$temp = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('actualizar_recomendacion', $id, NULL, $recomendacion, Session::get('usuario')->user_id), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('actualizar_post_balance', $id, NULL, NULL, Session::get('usuario')->user_id,
																														$post_activo_caja_bancos,
																														$post_activo_inversiones,
																														$post_activo_corriente,
																														$post_activo_total,
																														$post_pasivo_corriente,
																														$post_prestamos_corrientes,
																														$post_prestamos_no_corrientes,
																														$post_pasivo_total,
																														$post_patrimonio,
																														$post_patrimonio_integrado,																														
																														$post_resultados_acumulados,
																														$post_capital_trabajo,
																														$post_rel_capital_trabajo_pasivo,
																														$post_rel_capital_trabajo_ventas,
																														$post_rel_compras_ventas,
																														$post_ventas,
																														$post_compras,
																														$post_ganancia,
																														$post_rentabilidad_final,
																														$post_resultado_operativo,
																														$post_rentabilidad_operativa,
																														$post_ebitda,
																														$post_otros_ingresos,
																														$post_otros_egresos,
																														$post_rel_ebitda_ventas,
																														$post_fondos), 'selectOne');




		$ruta_archivo = '';

		//dd($_FILES);

		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($_FILES['archivo']['error'] == 0) {
						if (!file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $contrap->cliente)) {
							mkdir(env('PATH_DOCUMENTOS') . '/limite-credito/' . $contrap->cliente, 0777, true);
						}
						if (!file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $contrap->cliente . '/' . $id)) {
							mkdir(env('PATH_DOCUMENTOS') . '/limite-credito/' . $contrap->cliente . '/' . $id, 0777, true);
						}

						$ruta_archivo = '/limite-credito/' . $contrap->cliente . '/' . $id . '/' . $ln_gestion->gestion . '-'.  $userfile_name;

						$path = env('PATH_DOCUMENTOS') . $ruta_archivo;
						$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
						move_uploaded_file($_FILES['archivo']['tmp_name'], $path);

						$temp = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('delete_file_lc', $id), 'select');						
						$nuevo = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('insert', $id, 'Recomendador de Crédito', $ruta_archivo, Session::get('usuario')->user_id, NULL, 1), 'select');	
					}				
				}
			}
		}


		$accion = (NULL !== Request::input('visible')) ? 'activar' : 'desactivar';
		$temp = SQLConnection::backendStoreProcedure('LN_limite_credito_', array($accion, $id), 'selectOne');

		$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $id), 'selectOne');

		return view('/led/led_limite_credito_back')->with(compact(['cliente']));
	}

	public static function ledLimiteCreditoDeleteFile() {
		$id = Request::input('contraparte');
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$cliente = $contrap->cliente;
		
		$temp = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('delete_file_lc', $id), 'select');
		return view('/led/led_limite_credito_back')->with(compact(['cliente']));
	}


	public static function ledLimiteCreditoPreview() {
		$id = Request::input('contraparte');
		$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$limite_credito = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $id), 'selectOne');


		$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';
			}			
		}

		/* 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::obtenerGarantiasBancos($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');

		return view('/led/led_limite_credito_preview')->with(compact(['id', 'qcontrap', 'file_exists' , 'logo_name' , 'limite_credito', 'cendeu_trimestral', 'totalcendeu', 'balances', 'datos_balances',
																									'ind1', 'ind2', 'ind3', 'ind4', 'ind5', 'ind6', 'ind7', 'ind8', 'ind9', 'ind0', 'inda', 'indb', 'indc' , 'indd' , 'inde', 'archivos', 'notas']));
	}


	//

	public static function ledClasificaciones() {
		$cli = Request::input('cliente');
		$usr = Session::get('usuario')->user_id;
		$cliente = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',$cli,NULL,NULL,NULL), 'selectOne');
		$clas = SQLConnection::backendStoreProcedure('LN_clasificaciones_', array('search', null, $cli, null, null, $usr), 'select');

		return view('/led/led_clasificaciones')->with(compact(['cliente', 'clas']));
	}

	public static function ledClasificacionesInsert() {
		$cliente = Request::input('cliente');
		$data = [];
		$data[] = 'insert';
		$data[] = NULL;
		$data[] = $cliente;
		$data[] = Request::input('nombre_clasificacion');
		$data[] = Request::input('tipo_clasificacion');
		$data[] = Session::get('usuario')->user_id;

		$temp = SQLConnection::backendStoreProcedure('LN_clasificaciones_', $data, 'selectOne');
		return view('/led/led_clasificaciones_back')->with(compact(['cliente']));
	}

	public static function ledClasificacionesEdit() {
		$accion = Request::input('accion');
		$clasif = Request::input('clasificacion');
		$data = [];
		$data[] = 'select';
		$data[] = $clasif;
		$data[] = null;
		$data[] = null;
		$data[] = null;
		$data[] = Session::get('usuario')->user_id;
		$clasificacion = SQLConnection::backendStoreProcedure('LN_clasificaciones_', $data, 'selectOne');

		$items = SQLConnection::backendStoreProcedure('LN_clasificacion_items_', array('search', null, $clasif, null, null, null), 'select');

		$opciones = view('/led/led_clasificacion_items')->with(compact('clasificacion', 'items'));

		return view('/led/led_clasificaciones_edit')->with(compact('accion', 'clasificacion', 'items', 'opciones'));
	}

	public static function ledClasificacionesUpdate() {
		$accion = Request::input('accion');
		$cliente = Request::input('cliente');
		$clasif = Request::input('clasificacion');
		$data = [];
		if($accion == 'editar') {
			$data[] = 'update';
			$data[] = $clasif;
			$data[] = $cliente;
			$data[] = Request::input('nombre_clasificacion');
			$data[] = Request::input('tipo_clasificacion');
			$data[] = Session::get('usuario')->user_id;

		}
		else {
			$data[] = 'delete';
			$data[] = $clasif;
			$data[] = $cliente;
			$data[] = null;
			$data[] = null;
			$data[] = Session::get('usuario')->user_id;

		}

		$temp = SQLConnection::backendStoreProcedure('LN_clasificaciones_', $data, 'selectOne');

		return view('/led/led_clasificaciones_back')->with(compact(['cliente']));
	}

	public static function ledClasificacionItemsUpdate() {
		$accion = Request::input('accion');
		$cliente = Request::input('cliente');
		$clasif = Request::input('clasificacion');

		if($accion == 'add') {
			$temp = SQLConnection::backendStoreProcedure('LN_clasificacion_items_', array('insert', null, $clasif, null, null, Request::input('valor')), 'selectOne');
		}
		else {
			$id = explode(',', Request::input('items'));
			foreach ($id as $item) {
				$temp = SQLConnection::backendStoreProcedure('LN_clasificacion_items_', array('delete', $item, null, null, null, null), 'selectOne');	
			}
		}

		$items = SQLConnection::backendStoreProcedure('LN_clasificacion_items_', array('search', null, $clasif, null, null, null), 'select');
		return view('/led/led_clasificacion_items')->with(compact(['clasif', 'items']));
	}

	/*******************************************************************/

	public static function ledBalances() {
		$bal = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array(null), 'select');


		return view('/led/led_balances')->with(compact(['bal']));
	}

	public static function ledBalancesPDF() {
		$docid = Request::input('doc_id');
		$bal = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');
		$pdf_url = (null != $bal->ruta_archivo) ? env('RUTA_COMPARTIDO') . $bal->ruta_archivo : null;
		return view('/led/led_balances_pdf')->with(compact(['pdf_url']));
	}


	public static function ledBalancesVerificar() {
		
		$docid = Request::input('doc_id');
		$bal = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');

		$token_por_secciones = Misc::obtenerTokenSeccion('contables');

		$user_id 		    = Session::get("usuario")->user_id;
		$balanceid = SQLConnection::backendStoreProcedure('backend_balances_contables',array($bal->id_balance,null,null,null,null,$user_id),"selectOne");

		$tarea = SQLConnection::backendStoreProcedure('LN_Buscar_tareas', array($bal->id_balance), 'selectOne');
		$pdf_url = (null != $bal->ruta_archivo) ? env('RUTA_ARCHIVO_PDF') . $bal->ruta_archivo : null;
		//$balances = SQLConnection::backendStoreProcedure('backend_balances_contables', array(null, $bal->identificacion, 5, 1, null));
		$balances = SQLConnection::backendStoreProcedure('backend_balances_contables', array(null, $bal->identificacion, 5, 1, null,$user_id));
		
		self::$usuarios = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas', array());
		$usuarios = self::$usuarios;

		$pub = 0;
		foreach ($balances as $k => $balance) {
			if($balance->estado == 'PUBLICADO') {
				$pub++;
			}
		}

		return view('/led/led_balances_verificar')->with(compact(['docid', 'bal', 'pdf_url', 'balances', 'balanceid', 'pub','usuarios','tarea','user_id','token_por_secciones']));
	}

	public static function ledAsignarTareaCarga() {
		$user_id 				= Request::input('user_id');
	 	$created_by 		= Session::get("usuario")->user_id;
	 	$doc_id 				= '0';
	 	$cuit 					= Request::input('cuit_asi'); 
	 	$vigencia_desde	= Request::input('vigencia_desde');
	 	$vigencia_hasta	= Request::input('vigencia_hasta');
	 	$tipo 					= Request::input('tipo_asi');
	 	if ($tipo=='balance')
	 	{
	 	  $id_balance     = Request::input('id_balance_asi');
	 	  $fecha_bal			= Request::input('fecha_bal_asi');
	 		$resp 					= SQLConnection::backendStoreProcedure('agregar_tarea', array($user_id,$doc_id,$cuit,$created_by,$vigencia_desde,$vigencia_hasta,$tipo,$id_balance),'selectOne');
	 		if($resp){
	 			$id = SQLConnection::backendStoreProcedure('modificar_task_id_balance', array($id_balance,$resp->task_id),'selectOne');
	 		}
	 	}
	 	else
	 	{
	 		$contraparte 	= Request::input('contraparte_asi'); 
	 		$id_balance = ''; 
 
	 		$resp					= SQLConnection::backendStoreProcedure('agregar_tarea', array($user_id,$doc_id,$cuit,$created_by, $vigencia_desde,$vigencia_hasta,$tipo,$id_balance,$contraparte),'selectOne');
	 	}
	  self::enviarMailTarea($user_id, $cuit, $tipo); 
}

	public static function enviarMailTarea($user_id, $cuit,$tipo, $caso='asignacion',$texto=''){
		//dd($user_id."-".$cuit);
		$data = SQLConnection::backendStoreProcedure('backend_mails_tareas',array($user_id,$cuit),"selectOne");
    $content 						= new stdClass();
    $content->username  = $data->usuario;
    $content->empresa   = $data->empresa; 
    $content->cuit      = $cuit; 
    $content->caso      = $caso; 
    $content->tipo      = $tipo;   
    $content->texto     = $texto; 
    Misc::enviarMail("mails/asignacion_tareas",$data->email,$content,"Asignación de Tarea Fidelitas"); 
    //Misc::enviarMail("mails/asignacion_tareas","maria.soria@fidelitas.com.ar",$content,"Asignación de Tarea Fidelitas"); 
	}


	public static function ledBalancesVerificarConfirm() {
		$docid = Request::input('doc_id');
		$bal = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');

		return view('/led/led_balances_verificar_confirm')->with(compact(['bal']));
	}

	public static function ledBalancesVerificacion() {
		$docid = Request::input('doc_id');
		$doc = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');
		if(!empty($doc)) {
			$temp = SQLConnection::backendStoreProcedure('LN_balances_verificar', array($docid, Session::get('usuario')->user_id), 'selectOne');
		
			/* Chequeo de iniciar la tarea de análisis de balances en caso de existir un report activo en gestión en producción y todos los documentos balance verificados / publicados */
			$temp = SQLConnection::backendStoreProcedure('LN_informes', array('check_tarea_balances', $doc->contraparte, NULL, Session::get('usuario')->user_id), 'selectOne');

			/* Chequeo de finalización de carga en caso de existir un report activo en gestión en producción */
			$temp = SQLConnection::backendStoreProcedure('LN_informes', array('check_docs_ok', $doc->contraparte, NULL, Session::get('usuario')->user_id), 'selectOne');

		}
		return redirect('/led/led-documentos');

	}


	public static function ledBalancesReemplazarConfirm() {
		$docid = Request::input('doc_id');
		$idbal = Request::input('id_balance');

		$doc = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');

		//$bal = SQLConnection::backendStoreProcedure('backend_balances_contables', array($idbal, null, null, null, null), 'selectOne');
		$user_id 		    = Session::get("usuario")->user_id;
		$bal = SQLConnection::backendStoreProcedure('backend_balances_contables', array($idbal, null, null, null, null,$user_id), 'selectOne');

		return view('/led/led_balances_reemplazar_confirm')->with(compact(['doc', 'bal']));
	}


	public static function ledBalancesReemplazo() {
		$docid = Request::input('doc_id');
		$idbal = Request::input('id_balance');

		$doc = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');
		if(!empty($doc)) {
			$temp = SQLConnection::backendStoreProcedure('LN_balances_reemplazar', array($docid, $idbal, Session::get('usuario')->user_id), 'selectOne');

			/* Chequeo de iniciar la tarea de análisis de balances en caso de existir un report activo en gestión en producción y todos los documentos balance verificados / publicados */
			$temp = SQLConnection::backendStoreProcedure('LN_informes', array('check_tarea_balances', $doc->contraparte, NULL, Session::get('usuario')->user_id), 'selectOne');

			/* Chequeo de finalización de carga en caso de existir un report activo en gestión en producción */
			$temp = SQLConnection::backendStoreProcedure('LN_informes', array('check_docs_ok', $doc->contraparte, NULL, Session::get('usuario')->user_id), 'selectOne');

		}

		return redirect('/led/led-documentos');
	}

		public static function ledBalancesEliminarConfirm() {
		$docid = Request::input('doc_id');
		$idbal = Request::input('id_balance');
		$doce = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');
		//$bal = SQLConnection::backendStoreProcedure('backend_balances_contables', array($idbal, null, null, null, null), 'selectOne');
		$user_id 		    = Session::get("usuario")->user_id;
		$bale = SQLConnection::backendStoreProcedure('backend_balances_contables', array($idbal, null, null, null, null,$user_id), 'selectOne');

		return view('/led/led_balances_eliminar_confirm')->with(compact(['doce', 'bale']));
	}

	public static function ledBalancesEliminar() {
		$id_balance = Request::Input('id_balance'); 
		$user_id 		= Session::get("usuario")->user_id;
		$temp = SQLConnection::backendStoreProcedure('backend_eliminar_activar_balances', array($id_balance,'0',$user_id), 'selectOne');

		return redirect('/led/led-documentos');
	}




	public static function ledBalancesRechazarConfirm() {
		$docid = Request::input('doc_id');
		$doc = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');

		return view('/led/led_balances_rechazar_confirm')->with(compact(['doc']));
	}


	public static function ledBalancesRechazo() {
		$docid = Request::input('doc_id');
		$texto = Request::input('texto_rechazo');
		$doc = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');
		if(!empty($doc)) {
			$temp = SQLConnection::backendStoreProcedure('LN_balances_rechazar', array($docid, $texto, Session::get('usuario')->user_id), 'selectOne');
/* 26/02/2021 Se cambio por el nuevo Controller 
			$temp = LEDEmailController::enviarMailLED('DOCUMENTACION-RECHAZADA', 'DOCUMENTACION-RECHAZADA-SUBJECT', $doc->contraparte, NULL, NULL, NULL, $docid);
			*/
			$temp = EmailController::enviarMail('EMAIL-LED','DOCUMENTACION-RECHAZADA', 'DOCUMENTACION-RECHAZADA-SUBJECT', $doc->contraparte, NULL, NULL, NULL, $docid);
		}

		return redirect('/led/led-documentos');
	}



	public static function ledBalancePopup() {
		$id_balance = Request::input('id_balance');

		//$bal = SQLConnection::backendStoreProcedure('backend_balances_contables', array($id_balance, null, null, null, null), 'selectOne');
		$user_id 		    = Session::get("usuario")->user_id;
		$bal = SQLConnection::backendStoreProcedure('backend_balances_contables', array($id_balance, null, null, null, null,$user_id), 'selectOne');

		$fn = (!empty($bal->ruta_archivo)) ? $bal->ruta_archivo : '/balances/' . $bal->cuit . '/' . $bal->fecha_balance . '.pdf';

		//$pdf_url = (null != $bal->ruta_archivo) ? env('RUTA_COMPARTIDO') . $bal->ruta_archivo : null;

		$pdf_url = env('PATH_COMPARTIDO') . $fn;

		if (file_exists($pdf_url)){
			$pdf_url = ENV('RUTA_COMPARTIDO'). $fn; 
		}
		else
		{
			$pdf_url = ENV('RUTA_COMPARTIDO').'/balances/generico.pdf'; 
		}

		return view('/led/led_balances_pdf')->with(compact(['pdf_url']));
	}


	public static function ledBalancesEdit() {
		$bal = Request::input('balance');
		$monedas = DB::select('EXEC obtener_Monedas', array());
		$balance = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($bal, null, null), 'selectOne');
		return view('/led/led_balances_edit')->with(compact(['monedas' , 'balance']));
	}

	public static function ledBalancesUpdate() {


	}


	public static function ledBalanceCargar() {
		$bal = Request::input('id_balance');
		$docid = Request::input('doc_id');

		$doc = SQLConnection::backendStoreProcedure('LN_balances_busqueda', array($docid), 'selectOne');

		$cuit = $doc->identificacion;


		//$balances = SQLConnection::backendBalancesContables($cuit,$anios,$visible,$task_id);


	} 
 
	public static function ledContrapartesLoginCliente() {
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL,0), 'select');
		return view('/led/led_contrapartes_login_cliente')->with(compact(['clientes']));
	}


	public static function ledContrapartesLogin() {
		$id_cliente = Request::input('cliente');
		$contrap = SQLConnection::backendStoreProcedure('LED_Clientes', array('contrapartes',$id_cliente,NULL,NULL,NULL), 'select');
		return view('/led/led_contrapartes_login')->with(compact(['contrap']));
	}

	/* Para generar un link de acceso remoto a la web de legajos o un link encriptado tipo Facón, en este caso cuando se pasa el autologin=true */
	public static function ledDatosContraparte() {
		$id = Request::input('contraparte');
		$autologin = (NULL !== Request::input('autologin')) ? true : false;
		$expira = (NULL !== Request::input('fecha_expira')) ? Request::input('fecha_expira') : date('d/m/Y');
		$fecha_expira = date_format(date_create_from_format('d/m/Y', $expira), 'Y-m-d');

		if(!empty($id)) {
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

			if (!$autologin) {
				$qcontrap->identification = encrypt( $qcontrap->country_code . '|' . $qcontrap->identificador . '|' . $qcontrap->numero . '|' . $qcontrap->clave . '|' . $id);	
			}
			else {
				$qcontrap->identification = encrypt( $qcontrap->country_code . '|' . $qcontrap->identificador . '|' . $qcontrap->numero . '|' . $id . '|' . $fecha_expira );
			}
			return json_encode($qcontrap);
		}
	}

	public static function ledLinkContraparte() {
		$id = Request::input('contraparte');
		if(!empty($id)) {
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

			$familias = [];
			if(!empty($qcontrap)) {
				$familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $id, null, null, null, null, null), 'select');
				return view('/led/led_link_contraparte')->with(compact(['qcontrap', 'familias']));
			}

		}
	}

	public static function ledLinkContraparteEnviar() {
		$id = Request::input('contraparte');
		$enviar = 		Request::input('enviar');
		$email  = 		Request::input('email');
		$expira = 		Request::input('fecha_expira');
		//$result = self::ledEnviarEmailContraparte( $id, $expira, ($enviar==0) ? '' : trim($email) , true);
		//$result = LEDEmailController::ledEnviarEmailContraparte( $id, $expira, ($enviar==0) ? '' : trim($email) , true);

		/* 23/02/2021: si es Inquiro mandamos el mail de Inquiro */
		//$result = LEDEmailController::enviarMailLED('ALTA-LINK', 'ALTA-LINK-SUBJECT', $id, $expira, ($enviar==0) ? '' : trim($email) , true);
		
		$limite_carga_inicial = date_add(date_add( date_create_from_format('!d/m/Y', $expira), date_interval_create_from_date_string("1 day")), date_interval_create_from_date_string('-1 second'));

		$limite_carga_inicial = date_format($limite_carga_inicial, 'Y-m-d H:i:s');

		$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $limite_carga_inicial, NULL, NULL, NULL, NULL), 'selectOne');

		$clave = Misc::generateRandomString(6);
			
		DB::selectOne("update LN_contrapartes set
								clave = '" . $clave . "', clave_temporal = 1, 
								clave_cambio = NULL, modified = GETDATE(), modified_by = ". Session::get('usuario')->user_id .
								", clave_expira = '" . $limite_carga_inicial . "' where contraparte = " . $id);
		
		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));


		if ($qcontrap->servicio_contratado == '73') {
			$impe = SQLConnection::backendStoreProcedure('Imperium_cliente_contraparte_led', array('buscar_contratista_imperium', $id), 'selectOne');
			DB::selectOne("update users set password = '" . $clave . "' where user_id = " . $impe->user_id);
			$result = EmailController::enviarMail('EMAIL-IMPE','ALTA-USUARIO', 'ALTA-USUARIO-SUBJECT', $id, $expira, ($enviar==0) ? '' : trim($email),true);
		}
		else
		{
			/* 24/02/2021 Cambiamos el envio de mail de alta, usando EmailController en vez de LEDEmailController
			$result = LEDEmailController::enviarMailLED('ALTA-LINK-INQUIROVITAE', 'ALTA-LINK-SUBJECT-INQUIROVITAE', $id, $expira, ($enviar==0) ? '' : trim($email) , true);
			*/
			$result = EmailController::enviarMail('EMAIL-LED','ALTA','',$id, $expira,($enviar==0) ? '' : trim($email) , true);
		}

/* */


		if ($result == true) {
			$temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Envío de link de acceso a la contraparte para cargar documentación', $qcontrap->cliente, 'ENVIO_LINK_CONTRAPARTE', 'BACK', $id, Session::get('usuario')->user_id), 'selectOne');
		}
		$msg = $result ? 'El mensaje fue enviado correctamente.' : 'La dirección de e-mail es inválida.';

		/*$fecha_expira = date_format(date_create_from_format('d/m/Y', $expira), 'Y-m-d');

		$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

		$msg = "";
		if(!empty($qcontrap)) {

			// busco un report activo para la contraparte, de manera de obtener el texto del mail en el tipo de informe 
			$report = SQLConnection::backendStoreProcedure('LN_informes', array('panel_control_reports', $id, NULL), 'selectOne');


			if ($enviar == 0) {
				$email = $qcontrap->email_contacto;
			}

			$ident = encrypt( $qcontrap->country_code . '|' . $qcontrap->identificador . '|' . $qcontrap->numero . '|' . $id . '|' . $fecha_expira );
			$link = env('URL_LEGAJOS_AUTOLOGIN') . "?q=" . $ident;


			if (!empty($report->texto_email_solicitud)) {
				// el texto del mail surge del report que se encuentra activo para la contraparte

				//$fecha_limite_doc = $report->fecha_limite_doc;
				$fecha_limite_doc = $expira;
				$click = 'click <a href="' . $link . '">aquí</a>';
				$tarea_gestion_doc = SQLConnection::backendStoreProcedure('LN_informes', array('datos_tarea_gestion', NULL, $report->informe), 'selectOne');
								
				//$fecha_expira = date_format(date_create_from_format('!d/m/Y', $qcontrap->limite_carga_inicial), 'Y-m-d');

				$hoy = date('d/m/Y');
				$days_interval = date_diff( date_create_from_format('!d/m/Y', $hoy) , date_create_from_format('!d/m/Y', $expira) );
				$restan_dias = $days_interval->format('%d') + 1;



				$content = str_replace(Chr(13).Chr(10), '<br />', $report->texto_email_solicitud);
				$content = str_replace('%%NOMBRE_DESTINATARIO%%', $qcontrap->nombre_contacto, $content);
				$content = str_replace('%%SUJETO_INFORMADO%%', $report->nombre_persona, $content);
				$content = str_replace('%%CLIENTE%%', $report->nombre_cliente, $content);
				$content = str_replace('%%EMPRESA_SOLICITANTE%%', '', $content);
				$content = str_replace('%%LINK%%', $click, $content);
				$content = str_replace('%%RESTAN_DIAS%%', $restan_dias, $content);
				if($fecha_limite_doc){
					$content = str_replace('%%FECHA_LIMITE%%', $fecha_limite_doc, $content);
				}
				else{
					$content = str_replace('%%FECHA_LIMITE%%', $qcontrap->limite_carga_inicial, $content);
				}
				$content = str_replace('%%NOMBRE_USUARIO%%', $tarea_gestion_doc->first_name . ' ' . $tarea_gestion_doc->last_name, $content);
				$content = str_replace('%%EMAIL_USUARIO%%', $tarea_gestion_doc->email, $content);

				$from = 'servicio@fidelitas.com.ar';
				$to = (env('LED_TEST_MODE') == true) ? ( ($enviar == 0) ? env('LED_TEST_EMAIL_ADDR') : trim($email) ) : trim($email);
				$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';

				$asunto = ($report->asunto_email_solicitud != NULL) ? $report->asunto_email_solicitud.' '.$report->nombre_cliente : 'Fidelitas - Solicitud de documentación '.$report->nombre_cliente;

				$replyto = 'soporteled@fidelitas.com.ar';
				if (filter_var($to, FILTER_VALIDATE_EMAIL)) {					
					Misc::enviarMailLED('/led/led_email_custom' , $from, $to, $bcc, $replyto, $content, $asunto);
					$msg = "El mensaje fue enviado correctamente.";
				}
				else {
					$msg = "La dirección de e-mail es inválida.";
				}


			}

			else {
				// texto estándard con el link

				$texto = "<br /><br />Haga click <a href='" . $link . "' target='_blank'>aquí</a> para acceder a la web de carga para contrapartes de " . $qcontrap->nombre_cliente . ".<br /><br />";

				$content = array('nombre_cliente' => $qcontrap->nombre_cliente,
												'nombre_persona' => $qcontrap->nombre_persona,
												'abreviatura' => $qcontrap->abreviatura,
												'numero' => $qcontrap->numero,
												'nombre_contacto' => $qcontrap->nombre_contacto,
												'email_contacto' => $qcontrap->email_contacto,
												'country_code' => $qcontrap->country_code,
												'country_name' => $qcontrap->country_name,
												'link' => $link,
												'fecha_expiracion' => $expira,
												'texto' => $texto );
					
				$from = 'servicio@fidelitas.com.ar';
				$to = (env('LED_TEST_MODE') == true) ? ( ($enviar == 0) ? env('LED_TEST_EMAIL_ADDR') : trim($email) ) : trim($email);
				$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);
					$msg = "El mensaje fue enviado correctamente.";

					// Actualizar tarea de gestión de documentación, en caso de encontrarse activa 
					$temp = SQLConnection::backendStoreProcedure('LN_informes', array('actualizar_tarea_gestion', $id, NULL, Session::get('usuario')->user_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, date_create_from_format('d/m/Y', $expira)), 'selectOne');

				}
				else {
					$msg = "La dirección de e-mail es inválida.";
				}

			}

		}
		else {
			$msg = "La contraparte es inválida o inexistente.";
		}*/

		return json_encode(array('mensaje' => $msg));

	}


	/**************************************************************************************/

	public static function ledDocumentos() {
		/*$docs = SQLConnection::backendStoreProcedure('LN_docs_verif', array('pendientes', null, Session::get('usuario')->user_id), 'select');*/
		//---- SE DECIDE SI EL REQUEST ES PARA LOS DOCUMENTOS DE BBVA O NO
		if ( $_SERVER['REDIRECT_URL'] == '/led/led-documentos-bbva' ){
			if (Session::exists('es_bbva')){
				Session::forget('es_bbva');
				Session::put('es_bbva','1');
			}
			else{
				Session::put('es_bbva','1');
			}
			//----
			Session::put('es_bbva','1');
			$docs = SQLConnection::backendStoreProcedure('LN_verificacion_docs_', array('queue', Session::get('usuario')->user_id,null,1226057645), 'select');
		}
		else{
			if (Session::exists('es_bbva')){
				Session::forget('es_bbva');
				Session::put('es_bbva','0');
			}
			else{
				Session::put('es_bbva','0');
			}
			//-----
			$docs = SQLConnection::backendStoreProcedure('LN_verificacion_docs_', array('queue', Session::get('usuario')->user_id), 'select');
		}
		//----
		//$docs = SQLConnection::backendStoreProcedure('LN_verificacion_docs_', array('queue', Session::get('usuario')->user_id), 'select');
		return view('/led/led_documentos')->with(compact(['docs']));
	}


	public static function ledDocumentoVerificar() {
		$docid = Request::input('doc_id');
		$es_revisado = Request::input('es_revisado'); // DATO QUE DECIDE EL ESTADO DE REVISION DEL REGISTRO

		$temp = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('GENERATE', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL), 'select');

		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
		$flds = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('search', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL), 'select');
		
		//** Documento foto de Inquiro vitae
		$foto_perfil_url = NULL;
		if ($doc->es_foto_perfil > 0) {
			$busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $doc->contraparte), 'selectOne');
			if (!empty($busqueda)) {
				$foto_perfil_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->foto;
			}
		}


		$secciones = [];

		$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;
		}

		$data = [];

		$formula_dep_econ = false;

		foreach ($flds as $k => $fld) {

			if($fld->tipo_campo=='G') {

				$formula_dep_econ = (false === $formula_dep_econ) ? ( ($fld->aplica_formula_dep_econ > 0) ? true : false ) : false;

				/* 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;
			}

		}

		//dd( strpos( $_SERVER['REQUEST_URI'], '/led/') );
		//dd($data);

		$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);

		$iva = '';
		if ($formula_dep_econ === true) {
			/* Si en el documento hay un campo donde debe aplicar la formula de dependencia económica, busco el campo de alícuota de iva */
			$iva = SQLConnection::backendStoreProcedure('LN_docs_valores', array($doc->contraparte, 'ALICUOTA-IVA', $doc->doc_id), 'selectOne');
		}

		$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 );

		/*print_r($search_array);
		print_r($replace_array);*/
 
		$paises = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$identificadores = SQLConnection::backendStoreProcedure('backend_obtener_identificadores_pais', array($doc->country_code), 'select');

		// Para registrar TAX ID y constitución de sociedades 
		$cargos = SQLConnection::backendStoreProcedure('obtener_Cargos', [], 'select');
		$relaciones = DB::select('select * from tipo_vinculaciones order by id_tipo_vinculacion', array());
		$campo_tabla = NULL;
		$columnas = NULL;
		$tabla = [];
		if ($doc->tipo_doc == env('LED_DOCUMENTO_DIRECTORIO') OR $doc->tipo_doc == env('LED_DOCUMENTO_ACCIONISTAS') OR $doc->tipo_doc == env('LED_DOCUMENTO_VINCULACIONES')) {
			$campo_tabla = SQLConnection::backendStoreProcedure('LN_tipos_doc_', array('buscar_campo_tabla',$doc->tipo_doc,null,null,null,null,null,null,null,null,null), 'selectOne');
			if (!empty($campo_tabla)) {
				$columnas = SQLConnection::backendStoreProcedure('LN_campos_col_', array('search', $campo_tabla->campo, null,null,null,null,null,null), 'select');
				if (!empty($columnas)) {
					$datos_tabla = SQLConnection::backendStoreProcedure('LN_doc_campos_col_', array($doc->doc_id, $campo_tabla->seccion, $campo_tabla->campo), 'select');
					foreach($datos_tabla as $x => $coldata) {
						$tabla[$coldata->fila][$coldata->col] = !empty($coldata->valor_texto) ? $coldata->valor_texto : $coldata->valor_numerico;
					}
				}
			}
		}
		//-------
		if ( isset($_POST['desde_valoracion_pendiente']) and $_POST['desde_valoracion_pendiente'] == '1' ){
			$desde_valoracion_pendiente = $_POST['desde_valoracion_pendiente'];
			return view('/led/led_documento_verificar')->with(compact(['docid', 'doc', 'secciones', 'data', 'file_path', 'file_url', 'file_exists', 'hay_campos', 'hay_archivo', 'formula_dep_econ', 'iva', 'search_array', 'replace_array', 'foto_perfil_url', 'paises', 'identificadores', 'cargos', 'relaciones', 'campo_tabla', 'columnas', 'tabla','es_revisado','desde_valoracion_pendiente']));	
		}
		//-------
		return view('/led/led_documento_verificar')->with(compact(['docid', 'doc', 'secciones', 'data', 'file_path', 'file_url', 'file_exists', 'hay_campos', 'hay_archivo', 'formula_dep_econ', 'iva', 'search_array', 'replace_array', 'foto_perfil_url', 'paises', 'identificadores', 'cargos', 'relaciones', 'campo_tabla', 'columnas', 'tabla','es_revisado']));
	}

	public static function ledDocumentoValoracion() {
		$docid = Request::input('doc_id');
		$valoracion = Request::input('valoracion');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('valoracion', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL,$valoracion), 'selectOne');
		return 'ok'; 
	}

	//--- FUNCION QUE SE ENCARGA DE GUARDAR EL ESTADO DE REVISION DEL DOCUMENTO
	public static function ledDocumentoRevision(){
		$docid = Request::input('doc_id');
		$es_revisado = Request::input('es_revisado');
		//------
		if ($es_revisado == '0' or $es_revisado == '1'){
			$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('valoracion', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL, NULL, $es_revisado), 'selectOne');
			return 'ok';
		}
	}

	public static function ledDocumentoVerificarConfirm() {
		$docid = Request::input('doc_id');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
		return view('/led/led_documento_verificar_confirm')->with(compact(['doc']));
	}


	public static function ledDocumentoRechazarConfirm() {
		$docid = Request::input('doc_id');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
		return view('/led/led_documento_rechazar_confirm')->with(compact(['doc']));
	}

	public static function ledDocumentoVerificacion() {
		$docid = Request::input('doc_id');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');

		$temp = SQLConnection::backendStoreProcedure('LN_docs_', array('VERIFICA_BACKEND', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, Session::get('usuario')->user_id), 'selectOne');

		//$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_documentos', NULL, NULL, NULL, $doc->contraparte), 'selectOne');
		//$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_final_contraparte', NULL, NULL, NULL, $doc->contraparte), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $doc->contraparte), 'selectOne');

		/* Chequeo de finalización de carga en caso de existir un report activo en gestión en producción */
		$temp = SQLConnection::backendStoreProcedure('LN_informes', array('check_docs_ok', $doc->contraparte, NULL, Session::get('usuario')->user_id), 'selectOne');

		//--- REDIRECCION SEGUN CLIENTE
		if (Session::get('es_bbva') == '1'){
			return redirect('/led/led-documentos-bbva');
		}
		else{
			return redirect('/led/led-documentos');
		}
		
	}


	public static function ledDocumentoRechazo() {
		$docid = Request::input('doc_id');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');

		$temp = SQLConnection::backendStoreProcedure('LN_docs_', array('RECHAZADO', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, Request::input('texto_rechazo'), NULL, null, Session::get('usuario')->user_id), 'selectOne');

/* 26/02/2021 Se cambio por el nuevo Controller 
		$temp = LEDEmailController::enviarMailLED('DOCUMENTACION-RECHAZADA', 'DOCUMENTACION-RECHAZADA-SUBJECT', $doc->contraparte, NULL, NULL, NULL, $docid);
		*/
		$temp = EmailController::enviarMail('EMAIL-LED','DOCUMENTACION-RECHAZADA', 'DOCUMENTACION-RECHAZADA-SUBJECT', $doc->contraparte, NULL, NULL, NULL, $docid);


		//$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('cumplimiento_documentos', NULL, NULL, NULL, $doc->contraparte), 'selectOne');
		//$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_documentos', NULL, NULL, NULL, $doc->contraparte), 'selectOne');
		//$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_final_contraparte', NULL, NULL, NULL, $doc->contraparte), 'selectOne');
		$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $doc->contraparte),'selectOne');

		if (Session::get('es_bbva') == '1'){
			return redirect('/led/led-documentos-bbva');
		}
		else{
			return redirect('/led/led-documentos');
		}

	}


	public static function ledDocumentoActualizar() {
		$id = Request::input('contraparte');
		$docid = Request::input('doc_id');

		$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');

		foreach ($flds as $h => $fld) {

			/* Campo NO tabla, ni acrhivo ni texto fijo */
			if ($fld->tipo_campo != 'G' and $fld->tipo_campo != 'F' and $fld->tipo_campo != 'L') {

				// Analizamos por separado campos texto, numérico, fecha y select de opciones de los radio y checkboxes o si/no
				if($fld->tipo_campo == 'N' OR $fld->tipo_campo == 'T' OR $fld->tipo_campo == 'D' OR $fld->tipo_campo == 'M' OR $fld->tipo_campo == 'S') {
					
					$vf = ($fld->tipo_campo == 'D') ? ( null != Request::input($fld->FORM_NAME) ? date_create_from_format('d/m/Y', Request::input($fld->FORM_NAME)) : null ) : null;
					$vt = ($fld->tipo_campo == 'T' OR $fld->tipo_campo == 'M' OR $fld->tipo_campo == 'S') ? Request::input($fld->FORM_NAME) : null;
					$vn = ($fld->tipo_campo == 'N') ? str_replace(",", ".", Request::input($fld->FORM_NAME)) : null;

				}
				
				if ($fld->tipo_campo == 'B') {
					$vf = null;
					$vt = null;
					$vn = null;
					if(null !== Request::input($fld->FORM_NAME)) {
						$vn = Request::input($fld->FORM_NAME);
					}
				}
				
				if ($fld->tipo_campo == 'R') {
					$vf = null;
					$vt = null;
					$vn = null;
					if(null !== Request::input($fld->FORM_NAME)) {
						$vt = Request::input($fld->FORM_NAME);
					}
				}

				if ($fld->tipo_campo == 'C') {
					$vf = null;
					$vt = null;
					$vn = null;
					if(null !== Request::input($fld->FORM_NAME)) {
						$vt = implode(",", Request::input($fld->FORM_NAME));
					}

				}

				$temp = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('update', $docid, $fld->seccion, $fld->campo, $vf, $vt, $vn, null, null, Session::get('usuario')->user_id), 'selectOne');

			}
			else {

				/* Campo tabla */
				if ($fld->tipo_campo == 'G') {


					for($c = 1; $c <= $fld->columnas; $c++) {

						$espec = SQLConnection::backendStoreProcedure('LN_campos_col_', array('select', $fld->campo, $c, null, null, null, null, null), 'selectOne');
		
						for($f = 1; $f <= $fld->filas; $f++)	 {

							$fname = 'campo_'.$fld->seccion.'_'.$fld->campo.'_'.$f.'_'.$c;

							if(null !== Request::input($fname)) {

								// Analizamos por separado campos texto, numérico, fecha y select de opciones de los radio y checkboxes o si/no
								if($espec->tipo_campo == 'N' OR $espec->tipo_campo == 'T' OR $espec->tipo_campo == 'D' OR $espec->tipo_campo == 'M' OR $espec->tipo_campo == 'S') {
				
									$vf = ($espec->tipo_campo == 'D') ? ( null != Request::input($fname) ? date_create_from_format('d/m/Y', Request::input($fname)) : null ) : null;
									$vt = ($espec->tipo_campo == 'T' OR $espec->tipo_campo == 'M' OR $espec->tipo_campo == 'S') ? Request::input($fname) : null;
									$vn = ($espec->tipo_campo == 'N') ? str_replace(",", ".", Request::input($fname)) : null;

								}

								if($espec->tipo_campo == 'B') {
									$vf = null;
									$vt = null;
									$vn = null;
									if(null !== Request::input($fname)) {
										$vn = Request::input($fname);
									}
								}

								if ($espec->tipo_campo == 'R') {
									$vf = null;
									$vt = null;
									$vn = null;
									if(null !== Request::input($fname)) {
										$vt = Request::input($fname);
									}
								}

								if ($espec->tipo_campo == 'C') {
									$vf = null;
									$vt = null;
									$vn = null;
									if(null !== Request::input($fname)) {
										$vt = implode(",", Request::input($fname));
									}

								}

								$temp = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('update', $docid, $fld->seccion, $fld->campo, $vf, $vt, $vn, $f, $c, Session::get('usuario')->user_id), 'selectOne');
								
							}

						}
					}



				}


			}
					
		}

	}

	// cuando se verifica un documento del tipo constancia de tax id
	public static function ledDocumentoActualizarPadron() {
		$id = Request::input('id_padron');
		$data[0] = $id;
		$data[1] = Request::input('nombre_persona');
		$data[2] = Request::input('tipo_persona');
		$data[3] = Request::input('sexo');
		$data[4] = 1;
		$data[5] = Request::input('identificador');
		$data[6] = Request::input('numero');
		$data[7] = Request::input('contraparte');
		$temp = SQLConnection::backendStoreProcedure('backend_update_id_padron', $data);
		return json_encode( array('result' => true) );
	}

	public static function ledDocumentoData() {
		$doc_id = Request::input('doc_id');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $doc_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'selectOne');
		return json_encode(array('data' => $doc));
	}


	public static function ledDocumentoActualizarDirectorio() {
		$contrap = Request::input('contraparte');
		$doc = Request::input('doc_id');
		$fecha_acta = Request::input('fecha_acta');
		$ultimo = !empty(Request::input('ultimo_directorio')) ? Request::input('ultimo_directorio') : 0;

		$dirdata = array($contrap, $doc, $fecha_acta, $ultimo);
		for($x=1; $x<=5; $x++) {
			$nombre = !empty(Request::input('nombre_' . $x)) ? Request::input('nombre_' . $x) : NULL;
			$numero = !empty(Request::input('numero_' . $x)) ? preg_replace('/[^a-zA-Z0-9]/', '', Request::input('numero_' . $x)) : NULL;
			$ident = ($nombre != NULL AND $numero != NULL) ? Request::input('ident_' . $x) : NULL;
			$cargo = ($nombre != NULL AND $numero != NULL) ? Request::input('cargo_' . $x) : NULL;

			$dirdata[] = $nombre;
			$dirdata[] = $ident;
			$dirdata[] = $numero;
			$dirdata[] = $cargo;

		}

		$temp = SQLConnection::backendStoreProcedure('LN_doc_actualizar_directorio', $dirdata, 'selectOne');

		return json_encode( array('result' => 0, 'message' => 'Sin error') );		
	}

	public static function ledDocumentoActualizarSocios() {
		$contrap = Request::input('contraparte');
		$doc = Request::input('doc_id');

		$socdata = array($contrap, $doc);
		for($x=1; $x<=10; $x++) {
			$nombre = !empty(Request::input('nombre_' . $x)) ? Request::input('nombre_' . $x) : NULL;
			$numero = !empty(Request::input('numero_' . $x)) ? preg_replace('/[^a-zA-Z0-9]/', '', Request::input('numero_' . $x)) : NULL;
			$ident = ($nombre != NULL AND $numero != NULL) ? Request::input('ident_' . $x) : NULL;
			$porcentaje = ($nombre != NULL AND $numero != NULL) ? Request::input('porcentaje_' . $x) : NULL;

			$socdata[] = $nombre;
			$socdata[] = $ident;
			$socdata[] = $numero;
			$socdata[] = $porcentaje;
		}
		 
		$temp = SQLConnection::backendStoreProcedure('LN_doc_actualizar_socios', $socdata, 'selectOne');

		return json_encode( array('result' => 0, 'message' => 'Sin error') );
	}


	public static function ledDocumentoActualizarVinculacion() {
		$contrap = Request::input('contraparte');
		$doc = Request::input('doc_id');

		$reldata = array($contrap, $doc);
		for($x=1; $x<=10; $x++) {
			$nombre = !empty(Request::input('nombre_' . $x)) ? Request::input('nombre_' . $x) : NULL;
			$numero = !empty(Request::input('numero_' . $x)) ? preg_replace('/[^a-zA-Z0-9]/', '', Request::input('numero_' . $x)) : NULL;
			$ident = ($nombre != NULL AND $numero != NULL) ? Request::input('ident_' . $x) : NULL;
			$relacion = ($nombre != NULL AND $numero != NULL) ? Request::input('relacion_' . $x) : NULL;

			$reldata[] = $nombre;
			$reldata[] = $ident;
			$reldata[] = $numero;
			$reldata[] = $relacion;
		}

		$temp = SQLConnection::backendStoreProcedure('LN_doc_actualizar_vinculacion', $reldata, 'selectOne');

		return json_encode( array('result' => 0, 'message' => 'Sin error') );
	}


	//
	
	public static function ledInformesActivos() {
		$informes = SQLConnection::backendStoreProcedure('LN_informes', array('panel_control_reports', NULL, NULL), 'select');
		// $informes = SQLConnection::backendStoreProcedure('LN_informes', array('panel_control_reports', NULL, NULL, env('PLATAFORMA')), 'select');
		//var_dump($informes);die();
		/*foreach ($informes as $key => $informe) {
			if ($informe->servicio_contratado !== '47') 
			{
				unset($informes[$key]); 
			}
		}*/
		return view('/led/led_informes_activos')->with(compact(['informes']));
	}

	public static function ledInformesDocs() {
		$contraparte = Request::input('contraparte');
		$informe = Request::input('informe');
		$is_remote = !empty(Request::input('user_id')) ? true : false;
		//
		$reports = SQLConnection::backendStoreProcedure('LN_informes', array('panel_control_reports', $contraparte, $informe), 'select');
		/* 19/10/2020 CHANCHADA (solicitado por AGB): 
		   Busca el registro de la tarea Solicitud de información, si no hay toma los datos del primer registro  */

  		$report = new stdClass();
  		$solicitud = 0;  
		foreach ($reports as $key => $rep){
			if ($rep->id  == '1578391'){
				$report = $reports[$key]; 
				$solicitud = 1; 
				break; 
			}
		}
		if ($solicitud == 0){
			$report = $reports[0];
		}
		//	
		$gestion = SQLConnection::backendStoreProcedure('LN_informes', array('datos_tarea_gestion', $contraparte, $informe), 'selectOne');
		$docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
		//
		$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_informes_docs')->with(compact(['report', 'gestion', 'docs', 'files', 'is_remote']));
	}

	public static function ledInformesDocsDetail() {
		// Plain = true cuando se muestra en modal sin header ni footer
		$plain = null != Request::input('plain') ? Request::input('plain') : false;
		// Table = true cuando se debe mostrar en formato html basico tipo facón para hacer copy/paste
		$table = null != Request::input('table') ? Request::input('table') : false;

		$docid = Request::input('doc_id');

		$temp = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('GENERATE', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL), 'select');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
		$flds = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('search', $docid, null, null, NULL, NULL, NULL, NULL, NULL, NULL), 'select');

		//** Documento foto de Inquiro vitae
		$foto_perfil_url = NULL;
		if ($doc->es_foto_perfil > 0) {
			$busqueda = SQLConnection::backendStoreProcedure('IV_busquedas_', array('search', NULL, $doc->contraparte), 'selectOne');
			if (!empty($busqueda)) {
				$foto_perfil_url = env('RUTA_DOCUMENTOS_IV') . '/' . $busqueda->foto;
			}
		}

		$hay_campos = false;
		$hay_archivo = false;	
		foreach ($flds as $fld) {
			$hay_campos = !$hay_campos ? ( $fld->tipo_campo != 'F' ? true : $hay_campos ) : $hay_campos;
			$hay_archivo = !$hay_archivo ? ( $fld->tipo_campo == 'F' ? true : $hay_archivo ) : $hay_archivo;
		}	

		$secciones = [];

		$data = [];
		foreach ($flds as $k => $fld) {

			if($fld->tipo_campo=='G') {

				/* encabezados de la tabla */
				$c1 = SQLConnection::backendStoreProcedure('LN_campos_col_', array('search', $fld->campo, null, null, NULL, NULL, NULL, NULL), 'select');
				$cols=[];
				foreach ($c1 as $clm) {
					$cols[] = $clm->etiqueta;
				}

				/* configuración de los campos y valores de la tabla */
				$c2 = SQLConnection::backendStoreProcedure('LN_doc_campos_col_', array($fld->doc_id, $fld->seccion, $fld->campo), 'select');
				$valores = [];
				foreach ($c2 as $k1 => $valor) {
					$valores[$valor->fila][$valor->col]['valor_texto'] = $valor->valor_texto;
					$valores[$valor->fila][$valor->col]['valor_fecha'] = $valor->valor_fecha;
					$valores[$valor->fila][$valor->col]['valor_fecha_str'] = $valor->valor_fecha_str;
					$valores[$valor->fila][$valor->col]['valor_numerico'] = $valor->valor_numerico;
					$valores[$valor->fila][$valor->col]['tipo_campo'] = $valor->tipo_campo;
					$valores[$valor->fila][$valor->col]['longitud'] = $valor->longitud;
					$valores[$valor->fila][$valor->col]['decimales'] = $valor->decimales;

					//$valores[$valor->fila][$valor->col]['opciones'] = $valor->opciones;

					if($valor->tipo_campo == 'S' OR $valor->tipo_campo == 'R' OR $valor->tipo_campo == 'C') {
					
						if(strlen($valor->opciones) > 0) {						
							$r = explode("^", $valor->opciones);
							$txt = [];
							$val = [];
							if(sizeof($r) >= 2) {
								$txt = explode("|", $r[0]);
								$val = explode("|", $r[1]);
							}
							$valores[$valor->fila][$valor->col]['opciones']['txt'] = $txt;
							$valores[$valor->fila][$valor->col]['opciones']['val'] = $val;
						}

					}
				}

				$fld->headers = $cols;
				$fld->values = $valores;
			}

			else {

				/* campo no tabla */

				if($fld->tipo_campo == 'S' OR $fld->tipo_campo == 'R' OR $fld->tipo_campo == 'C') {

					$valores = [];

					if(strlen($fld->opciones) > 0) {						
						$r = explode("^", $fld->opciones);
						$txt = [];
						$val = [];
						if(sizeof($r) >= 2) {
							$txt = explode("|", $r[0]);
							$val = explode("|", $r[1]);
						}
						$valores[] = $txt;
						$valores[] = $val;
					}

					$fld->opciones = $valores;

				}


			}

			$data[$fld->titulo_seccion][] = $fld;

			if ($fld->titulo_seccion != '') {
				$secciones[$fld->titulo_seccion]['texto_bajada'] = $fld->texto_bajada;
				$secciones[$fld->titulo_seccion]['texto_pie'] = $fld->texto_pie;
			}

		}

		if($doc->es_balance > 0) {
			/*$file_path = env('PATH_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';
			$file_url = env('RUTA_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';			*/

			$file_path = env('PATH_COMPARTIDO') . '/' . $doc->ruta_archivo;
			$file_url = env('RUTA_COMPARTIDO') . '/' . $doc->ruta_archivo;
		}
		else {
			$file_path = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
			$file_url = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';			
		}

		$file_exists = file_exists($file_path);

		//dd( strpos( $_SERVER['REQUEST_URI'], '/led/') );
		//dd($doc);

		$search_array = array( '%inicio_vigencia_fecha%' , '%fin_vigencia_fecha%' , '%inicio_vigencia_periodo%' , '%fin_vigencia_periodo%' );
		$replace_array = array( $doc->inicio_vigencia , $doc->fecha_vigencia , (NULL !== $doc->inicio_vigencia) ? substr($doc->inicio_vigencia, 3, 7) : NULL , (NULL !== $doc->fecha_vigencia) ? substr($doc->fecha_vigencia, 3, 7) : NULL );

		//dd($data);
		
		return view('/led/led_informes_doc_detail')->with(compact(['docid', 'doc', 'data', 'secciones', 'plain', 'table', 'file_path', 'file_url', 'file_exists', 'hay_campos', 'hay_archivo', 'search_array', 'replace_array', 'foto_perfil_url']));
	}


	public static function ledInformesFinGestionConfirm() {
		$contraparte = Request::input('contraparte');
		$informe = Request::input('informe');
		$report = SQLConnection::backendStoreProcedure('LN_informes', array('panel_control_reports', $contraparte, $informe), 'selectOne');
		return view('/led/led_informes_fin_gestion_confirm')->with(compact(['report']));
	}

	public static function ledInformesFinalizarGestion() {
		$contraparte = Request::input('contraparte');
		$informe = Request::input('informe');
		$temp = SQLConnection::backendStoreProcedure('LN_informes', array('finalizar_gestion_informe', $contraparte, $informe), 'selectOne');
		return redirect('/led/led-informes-activos');
	}

	//


	public static function ledVerificacionDocs() {
		$users = SQLConnection::backendStoreProcedure('obtener_usuarios_fidelitas', array());
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('search',NULL,NULL,NULL,NULL));
		$country = SQLConnection::backendStoreProcedure('backend_obtener_paises', array(), 'select');
		$verif = SQLConnection::backendStoreProcedure('LN_verificacion_docs_', array('search'));
		return view('/led/led_verificacion_docs')->with(compact(['users', 'clientes', 'country', 'verif']));
	}


	public static function ledClientesTipoDoc() {
		$country_code = null != Request::input('country_code') ? Request::input('country_code') : null;
		$cliente = null != Request::input('cliente') ? Request::input('cliente') : null;
		$tipos_doc = SQLConnection::backendStoreProcedure('LN_clientes_tipo_doc', array($country_code, $cliente), 'select');
		return (json_encode($tipos_doc));
	}

	public static function ledClienteContrapartes() {
		$cliente = null != Request::input('cliente') ? Request::input('cliente') : null;
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('search', null, null, $cliente, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'select');
		return (json_encode($contrap));
	}

	public static function ledVerificacionDocsInsert() {
		$user_id = null != Request::input('user_id') ? Request::input('user_id') : null;
		$country_code = null != Request::input('country_code') ? Request::input('country_code') : null;
		$cliente = null != Request::input('cliente') ? Request::input('cliente') : null;
		$tipo_doc = null != Request::input('tipo_doc') ? Request::input('tipo_doc') : null;
		$cliente = null != Request::input('cliente') ? Request::input('cliente') : null;
		$contraparte = null != Request::input('contraparte') ? Request::input('contraparte') : null;

		if(null != $user_id) {
			$temp = SQLConnection::backendStoreProcedure('LN_verificacion_docs_', array('insert', $user_id, 1, $cliente, $country_code, $tipo_doc, $contraparte), 'selectOne');
		}
		return redirect('/led/led-verificacion-docs');
	}

	public static function ledVerificacionDocsDelete() {
		$id_verif = null != Request::input('id_verif') ? Request::input('id_verif') : null;
		$user_id = null != Request::input('user_id') ? Request::input('user_id') : null;
		$country_code = null != Request::input('country_code') ? Request::input('country_code') : null;
		$cliente = null != Request::input('cliente') ? Request::input('cliente') : null;
		$tipo_doc = null != Request::input('tipo_doc') ? Request::input('tipo_doc') : null;
		$cliente = null != Request::input('cliente') ? Request::input('cliente') : null;
		$contraparte = null != Request::input('contraparte') ? Request::input('contraparte') : null;

		if(null != $user_id) {
			$temp = SQLConnection::backendStoreProcedure('LN_verificacion_docs_', array('delete', $user_id, 1, $cliente, $country_code, $tipo_doc, $contraparte, $id_verif), 'selectOne');
		}
		return redirect('/led/led-verificacion-docs');	
	}

	public static function ledVerificacionDocsUpdate() {
		$id_verif = null != Request::input('id_verif') ? Request::input('id_verif') : null;
		if(null != $id_verif) {
			$temp = SQLConnection::backendStoreProcedure('LN_verificacion_docs_', array('change', null, 1, null, null, null, null, $id_verif), 'selectOne');
		}
		return redirect('/led/led-verificacion-docs');	

	}

	/* verificación de scores de informe comercial no actualizados en los últimos 30 días */
	public static function ledScoresCheck() {
		$scores = SQLConnection::backendStoreProcedure('LN_scores', array(null, null, null, 30), 'select');
		$info = [];
		foreach ($scores as $x => $data) {
			$contraparte = $data->contraparte;
			$clave = $data->clave_indicador;
			$info[$contraparte][$clave] = $data->score;
		}
		
		foreach ($info as $id => $sc) {
			$hayscorebalance = false;
			foreach ($sc as $clave => $valor) {
				//print_r($clave . ' ' . $valor . '<br>');
				if($clave == 'SCORE_BAL') {
					$tmp = self::actualizarScoreBalance($id);
					$indic = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'SCORE_BAL'), 'selectOne');
					$hayscorebalance = null != $indic->valor ? true : false;
				}
			}
			$hayscorecomercial = false;
			foreach ($sc as $clave => $valor) {
				if($clave = 'SCORE_IC') {
					$hayscorecomercial = true;
					if($hayscorebalance) {
						$tmp = self::actualizarScoreComercialSinBalance($id);
					}
					else {
						$tmp = self::actualizarScoreComercialConBalance($id);
					}
				}
			}
			if($hayscorebalance || $hayscorecomercial) {
				$tmp = self::actualizarScoreFinal($id);
			}

		}


	}

	public static function ledDocsRechazadosCliente() {
		$user_id = Session::get('usuario')->user_id;
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL), 'select');
		return view('/led/led_docs_rechazados_cliente')->with(compact(['clientes','user_id']));
	}

	public static function ledDocsRechazados() {
		$user_id = Session::get('usuario')->user_id;
		$id_cliente = Request::input('cliente');
		$docs = SQLConnection::backendStoreProcedure('LN_documentos', array('R', $user_id, $id_cliente),'select');
		return view('/led/led_docs_rechazados')->with(compact(['docs', 'user_id']));
	}
	
	public static function ledDocsVerificadosCliente() {
		$user_id = Session::get('usuario')->user_id;
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL), 'select');
		return view('/led/led_docs_verificados_cliente')->with(compact(['clientes','user_id']));
	}

	public static function ledDocsVerificados() {
		$user_id = Session::get('usuario')->user_id;
		$id_cliente = Request::input('cliente');
		$docs = SQLConnection::backendStoreProcedure('LN_documentos', array('V', $user_id, $id_cliente),'select');
		return view('/led/led_docs_verificados')->with(compact(['docs', 'user_id']));
	}

	public static function ledDocsValoraciones() {
		$user_id = Session::get('usuario')->user_id;
		$usuarios = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas', array());
		$token_por_secciones = Misc::obtenerTokenSeccion('led_balances');
		$docs = SQLConnection::backendStoreProcedure('LN_documentos_valoraciones', array($user_id),'select');
		return view('/led/led_docs_valoraciones')->with(compact(['docs', 'user_id','token_por_secciones','usuarios']));
	}
	
	
	//------------
	public static function ledDocsValoracionesPendientes(){
		//---
		$docs = SQLConnection::backendStoreProcedure('LN_docs_valorar_pendientes', array());
		//---
		return view('led/led_docs_valoraciones_pendientes')->with(compact(['docs']));
	}
	//------------

	public static function ledDocsValoracionesSinTarea() {
		$user_id = Session::get('usuario')->user_id;
		$usuarios = SQLConnection::backendStoreProcedure('obtener_usuarios_tareas', array());
		$token_por_secciones = Misc::obtenerTokenSeccion('led_balances');
		$docs = SQLConnection::backendStoreProcedure('LN_documentos_valoraciones', array($user_id),'select');
		return view('/led/led_docs_valoraciones_sin_tarea')->with(compact(['docs', 'user_id','token_por_secciones','usuarios']));
	} 

	public function obtenerValoracion(){ 
		$token_por_secciones = Misc::obtenerTokenSeccion('led_balances');
		$menu = Misc::obtenerPermisosNavigator();
		$task_id = Request::Input('task_id');
    $user_id = Session::get("usuario")->user_id;
    $valido  =  Misc::restriccionPermiso('BALANCE');
    $tipo_tarea = Request::Input('tipo_tarea');
    if(!$valido && !$task_id){ return redirect('/menu'); }
		$cuit = Request::Input('cuit');
		$nombre_persona = Request::Input('nombre_persona');
		$contraparte = Request::Input('contraparte');
  	$valoraciones = SQLConnection::backendStoreProcedure('backend_valoracion_balances',array($contraparte,$user_id),"select");
  	$valoracion = new stdClass(); 
  	$valoracion->tipo_tarea = $tipo_tarea; 
    $valoracion->contraparte = $contraparte; 
  	$valoracion->analisis = ''; 
  	$valoracion->valoracion = ''; 
  	$valoracion->valoracion_txt = ''; 
  	$valoracion->nombre_contraparte = ''; 
    $valoracion->cuit_contraparte = ''; 
    $valoracion->task_id = $task_id; 
    $valoracion->estado = ''; 
    $valoracion->usuario = '';
    $valoracion->fecha_inicio_tarea = '';
    $valoracion->fecha_fin_tarea = '';
    $valoracion->autorizado = '';
    $valoracion->cliente = '';
    foreach ($valoraciones as $valor)
    {
        $valoracion->cliente = $valor->cliente; 
        $valoracion->nombre_contraparte = $valor->nombre; 
        $valoracion->cuit_contraparte = $valor->cuit; 
        if ($valor->indicador == 'VALORACION_BAL')
        {
            $valoracion->valoracion = $valor->valor; 
        	  $valoracion->valoracion_txt = $valor->textcaption; 
        }
        else
        {
            $valoracion->analisis = $valor->memo; 
        }
        $valoracion->estado = $valor->estado; 
        $valoracion->usuario = $valor->usuario; 
        $valoracion->fecha_inicio_tarea = $valor->fecha_inicio;
        $valoracion->fecha_fin_tarea = $valor->fecha_fin;
        $valoracion->autorizado = $valor->autorizado;
    }
//var_dump($valoracion); die(); 
		return view('led/valoracion_balance')->with(compact('valoracion','menu','cuit','nombre_persona','token_por_secciones','contraparte','task_id','user_id','tipo_tarea'));
}

public function obtenerValoracionSinTaskId(){ 
		$token_por_secciones = Misc::obtenerTokenSeccion('led_balances');
		$menu = Misc::obtenerPermisosNavigator();
	//	$task_id = Request::Input('task_id');
    $user_id = Session::get("usuario")->user_id;
    $valido  =  Misc::restriccionPermiso('BALANCE');
    $tipo_tarea = 'valoracion y analisis de balance';
    if(!$valido){ return redirect('/menu'); }
		$cuit = Request::Input('cuit');
		$nombre_persona = Request::Input('nombre_persona');
		$contraparte = Request::Input('contraparte');
  	$valoraciones = SQLConnection::backendStoreProcedure('backend_valoracion_balances',array($contraparte,$user_id),"select");
  	$valoracion = new stdClass(); 
  	$valoracion->tipo_tarea = $tipo_tarea; 
    $valoracion->contraparte = $contraparte; 
  	$valoracion->analisis = ''; 
  	$valoracion->valoracion = ''; 
  	$valoracion->valoracion_txt = ''; 
  	$valoracion->nombre_contraparte = ''; 
    $valoracion->cuit_contraparte = ''; 
    $task_id =0;
    $valoracion->task_id = $task_id; 
    $valoracion->estado = ''; 
    $valoracion->usuario = '';
    $valoracion->fecha_inicio_tarea = '';
    $valoracion->fecha_fin_tarea = '';
    $valoracion->autorizado = '';
    $valoracion->cliente = '';
    foreach ($valoraciones as $valor)
    {
        $valoracion->cliente = $valor->cliente; 
        $valoracion->nombre_contraparte = $valor->nombre; 
        $valoracion->cuit_contraparte = $valor->cuit; 
        if ($valor->indicador == 'VALORACION_BAL')
        {
            $valoracion->valoracion = $valor->valor; 
        	  $valoracion->valoracion_txt = $valor->textcaption; 
        }
        else
        {
            $valoracion->analisis = $valor->memo; 
        }
        $valoracion->estado = $valor->estado; 
        $valoracion->usuario = $user_id; 
        $valoracion->fecha_inicio_tarea = $valor->fecha_inicio;
        $valoracion->fecha_fin_tarea = $valor->fecha_fin;
        $valoracion->autorizado = $valor->autorizado;
    }
//var_dump($valoracion); die(); 
		return view('led/valoracion_balance_sin_tarea')->with(compact('valoracion','menu','cuit','nombre_persona','token_por_secciones','contraparte','task_id','user_id','tipo_tarea'));
}

public function grabaValoracion(){
	 	$user_id 		= Session::get("usuario")->user_id;
		$contraparte = Request::input("contraparte");
		$valoracion  = Request::input('valoracion');
		$analisis    = Request::Input('analisis');
		$tipo_tarea  = Request::input('tipo_tarea'); 
		$estado      = Request::input('estado'); 
		$task_id      = Request::input('task_id'); 
		$usuario_tarea = Request::input('usuario_tarea'); 
		$fecha_inicio  = Request::input('fecha_inicio_tarea'); 

		/*
var_dump($task_id); 
var_dump($fecha_inicio); 
var_dump($usuario_tarea); 
die(); 
*/
		$valores = []; 
		$valores[] = 'valoracion_balance'; 
		$valores[] = NULL;
		$valores[] = NULL;
		$valores[] = NULL;
		$valores[] = $contraparte; 
		$valores[] = NULL;
		$valores[] = $valoracion;
		$valores[] = NULL;
		$valores[] = NULL;
		$valores[] = NULL;
		$valores[] = $user_id;
		$valores[] = $estado;

		$valores2 = []; 
		$valores2[] = 'analisis_balance'; 
		$valores2[] = NULL;
		$valores2[] = NULL;
		$valores2[] = NULL;
		$valores2[] = $contraparte; 
		$valores2[] = NULL;
		$valores2[] = NULL;
		$valores2[] = NULL;
		$valores2[] = NULL;
		$valores2[] = $analisis;
		$valores2[] = $user_id;
		$valores2[] = $estado;
		
		if (strtolower($tipo_tarea) == 'valoracion y analisis de balance' || strtolower($tipo_tarea) == 'valoracion de balance')
		{
			$store_procedure = 'LN_dashboard_cliente';
			$mensaje_valoracion = SQLConnection::backendStoreProcedure($store_procedure,$valores,"selectOne");
		}
		if (strtolower($tipo_tarea) == 'valoracion y analisis de balance' || strtolower($tipo_tarea) == 'analisis de balance')
		{
			$store_procedure = 'LN_dashboard_cliente';
			$mensaje_analisis = SQLConnection::backendStoreProcedure($store_procedure,$valores2,"selectOne");
	 	}
	 	if ($task_id != null && $task_id != 0 && $fecha_inicio == null && $usuario_tarea == $user_id) // solo se unicia la tarea, si usuario es el asignado
		{
			$fecha_inicio = SQLConnection::backendStoreProcedure('backend_iniciar_tarea',array($task_id),"selectOne");
		}

		if ($task_id != null && $task_id != 0 && $estado == '1') 
		{
			$fecha_aprobacion = SQLConnection::backendStoreProcedure('backend_aprobar_tarea',array($task_id,$estado),"selectOne");
		}

	}


public static function ledVerValoracion() {
		$contraparte = Request::input('val_contraparte');
		$nombre_contraparte = Request::input('nombre_contraparte');
		$nombre_cliente = Request::input('nombre_cliente');
		$val = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL,NULL,NULL,$contraparte,'VALORACION_BAL'), 'selectOne');
		$ana = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL,NULL,NULL,$contraparte,'ANALISIS_BAL'), 'selectOne');
		$valoracion = !empty($val) ? $val->svg_data : ''; 
		$analisis   = !empty($ana) ? $ana->valor : ''; 
		return view('/led/led_valoracion_documento')->with(compact(['valoracion', 'analisis','nombre_cliente','nombre_contraparte']));
	}

	public static function ledValoracion() {
		$contraparte = Request::input('val_contraparte');
		$nombre_contraparte = Request::input('nombre_contraparte');
		$val = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL,NULL,NULL,$contraparte,'VALORACION_BAL'), 'selectOne');
		$ana = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL,NULL,NULL,$contraparte,'ANALISIS_BAL'), 'selectOne');
		$valoracion = !empty($val) ? $val->svg_data : ''; 
		$analisis   = !empty($ana) ? $ana->valor : ''; 
		return view('/modals/modal_valoracion')->with(compact(['valoracion', 'analisis','nombre_contraparte']));
	}

	/* Para mostrar detalle de un documento en los paneles de verificados y rechazados */
	public static function ledDetalleDocumento() {
		$doc_id = Request::input('doc_id');
		$user_id = Request::input('user_id');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $doc_id, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');



		/* Información de los campos del documento */
		$flds = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('search', $doc_id, null, null, NULL, NULL, NULL, NULL, NULL, NULL), 'select');

		$secciones = [];

		$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;
		}	

		$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;
			}
		}
		/* Fin información de los campos del documento */


		/* Archivo adjunto */
		if($doc->es_balance > 0) {
			$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);

		return view('/led/led_detalle_documento')->with(compact(['doc', 'user_id', 'secciones', 'data', 'file_exists', 'file_path', 'file_url']));
	}


	/* Deshacer la verificación o un rechazo de documento y dejarlo en pendiente de verificar */
	public static function ledDocumentoUndo() {
		$doc_id = Request::input('doc_id');
		$doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $doc_id, null, null, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, null, NULL), 'selectOne');
		if(!empty($doc))  {
			$temp = SQLConnection::backendStoreProcedure('LN_docs_verif', array('UNDO', null, Session::get('usuario')->user_id, $doc->doc_id, 0), 'selectOne');
			$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', NULL, $doc->contraparte), 'selectOne');
		}

		return json_encode($temp);
	}


	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 ***/

	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)) {

					$apikey = env('API_KEY');
					$params = 'apikey=' . $apikey . '&cuit=' . $qcontrap->numero;

					$balance = self::CURLCall(env('API_SCORE_BALANCE'), $params);
					if(!empty($balance)) {
						$bal = json_decode($balance);
						if (isset($bal->score) AND $bal->score > 0) {
							$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_balance', null, null, null, $id, null, round($bal->score,1)), 'selectOne');
							return (round($bal->score,1));
						}				
					}
				}
			}
		}
		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;

					$infcom = 	self::CURLCall(env('API_SCORE_INFORME_CON_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 actualizarScoreDocumentos($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_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) {
			$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 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);
		}
		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;
	}

	/* 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;		
	}


	public static function actualizarScoreFinal($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)) {
				$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;
	}


    // 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 SCORE ***/

	
  /**** E-mails LED ****/
	public static function ledEmails() { 
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL,0), 'select');
		return view('/led/led_emails')->with(compact(['clientes']));
	}

	public static function ledEmailsContrapartes() {
		$cliente = Request::input('cliente');
/*
		$contrap = DB::select("SELECT clientes.nombre_cliente, LN_contrapartes.contraparte,
											LN_contrapartes.country_code, padrones.identificador,
											padrones.identificacion,
											padrones.nombre_persona, clave_cambio, clave_temporal,
											iif(clave_temporal > 0, 'SI','NO') as es_clave_temporal, carga_inicial, 
											nombre_contacto, email_contacto, telefono_contacto, 
											nombre_familia, 
											CONVERT(VARCHAR(17),ultimo_acceso,113) AS ultimo_acceso,
											clave, 
											CONVERT(VARCHAR(17),CLAVE_EXPIRA,113) AS CLAVE_EXPIRACION,
											IIF(carga_inicial=1,'SI','NO') AS es_carga_inicial, CONVERT(VARCHAR(17),limite_carga_inicial,113) AS VENCE_CARGA_INICIAL
											FROM LN_contrapartes inner join padrones on LN_contrapartes.id_padron=padrones.id_padron
											inner join clientes on LN_contrapartes.cliente = clientes.cliente
											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.activo = 1) 
											//and (LN_contrapartes.cliente = $cliente) 
											and ln_contrapartes.contraparte in (select contraparte from Ln_contrapartes where contraparte in (
select distinct amx_2022.CONTRAPARTE from LN_contraparte_familias inner join amx_2022 on LN_contraparte_familias.contraparte=AMX_2022.contraparte
where ln_contraparte_familias.familia in (357,359,361))
and email_contacto is not null
and email_contacto is not null and ln_familias.familia in (357,359,361)
											)

											ORDER BY padrones.nombre_persona ASC");
*/
/*
		$contrap = DB::select("SELECT clientes.nombre_cliente, LN_contrapartes.contraparte,
											LN_contrapartes.country_code, padrones.identificador,
											padrones.identificacion,
											padrones.nombre_persona, clave_cambio, clave_temporal,
											iif(clave_temporal > 0, 'SI','NO') as es_clave_temporal, carga_inicial, 
											nombre_contacto, email_contacto, telefono_contacto, 
											nombre_familia, 
											CONVERT(VARCHAR(17),ultimo_acceso,113) AS ultimo_acceso,
											clave, 
											CONVERT(VARCHAR(17),CLAVE_EXPIRA,113) AS CLAVE_EXPIRACION,
											IIF(carga_inicial=1,'SI','NO') AS es_carga_inicial, CONVERT(VARCHAR(17),limite_carga_inicial,113) AS VENCE_CARGA_INICIAL
											FROM LN_contrapartes 
											inner join padrones on LN_contrapartes.id_padron=padrones.id_padron
											inner join clientes on LN_contrapartes.cliente = clientes.cliente
											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
											inner join ln_gestiones on (ln_gestiones.contraparte = LN_contrapartes.contraparte and LN_gestiones.vigente = 1)
											where  LN_contrapartes.cliente = 5546348 
											and LN_contrapartes.activo = 1 
											and LN_contrapartes.subcontratista = 0 
											and LN_contrapartes.servicio_contratado = 47
											and LN_contrapartes.country_code in ('AR')  
											and ln_contraparte_familias.familia not in (32,189,195)
											and exists (select * from ln_docs 
											where ln_docs.contraparte = ln_contrapartes.contraparte 
											and ln_docs.gestion = ln_gestiones.gestion 
											and ln_docs.estado_doc != 'V' and ln_docs.estado_doc != 'X'  
											and ln_docs.aplica = 1)
											ORDER BY padrones.nombre_persona ASC");
*/
		$contrap = DB::select("SELECT clientes.nombre_cliente, LN_contrapartes.contraparte,
											LN_contrapartes.country_code, padrones.identificador,
											padrones.identificacion,
											padrones.nombre_persona, clave_cambio, clave_temporal,
											iif(clave_temporal > 0, 'SI','NO') as es_clave_temporal, carga_inicial, 
											nombre_contacto, email_contacto, telefono_contacto, 
											nombre_familia, 
											CONVERT(VARCHAR(17),ultimo_acceso,113) AS ultimo_acceso,
											clave, 
											CONVERT(VARCHAR(17),CLAVE_EXPIRA,113) AS CLAVE_EXPIRACION,
											IIF(carga_inicial=1,'SI','NO') AS es_carga_inicial, CONVERT(VARCHAR(17),limite_carga_inicial,113) AS VENCE_CARGA_INICIAL
											FROM LN_contrapartes 
											inner join padrones on LN_contrapartes.id_padron=padrones.id_padron
											inner join clientes on LN_contrapartes.cliente = clientes.cliente
											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
											inner join ln_gestiones on (ln_gestiones.contraparte = LN_contrapartes.contraparte and LN_gestiones.vigente = 1)
											where  LN_contrapartes.cliente = $cliente  
											and LN_contrapartes.activo = 1 
											and LN_contrapartes.subcontratista = 0 
/*											and LN_contrapartes.servicio_contratado = 47
											and LN_contrapartes.country_code in ('PY')  

											and exists (select * from ln_docs 
											where ln_docs.contraparte = ln_contrapartes.contraparte 
											and ln_docs.gestion = ln_gestiones.gestion 
											and ln_docs.estado_doc  = 'N' 
											and ln_docs.aplica = 1)
										--and LN_contrapartes.contraparte = 146972*/
											ORDER BY padrones.nombre_persona ASC");
		return view('/led/led_emails_contrapartes')->with(compact(['contrap']));
	}

public static function ledEmailsEnviar() {

		$total = 0;
		$error = 0;
		$correctos = []; 
		$errores = []; 
    	$asunto = Request::input('asunto'); 
    	$texto = Request::input('texto'); 
		

		if(!empty(Request::input('contraparte'))) {

			foreach (Request::input('contraparte') as $k => $contraparte) {

				$hoy = new DateTime('today');
				$texto_adicional = '';
				$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id));

				// 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 );
				}

				$content = array('nombre_cliente' => $ncliente,
											'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' => $dataprov->clave,
											'identificacion' => $dataprov->identificacion,
											'identificador' => $dataprov->identificador,
											'texto' => $texto );
				$from = 'servicio@fidelitas.com.ar';
				//$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : trim($dataprov->email_contacto);
				$to='';
				$to_array = [];
				if (!is_null($dataprov->email_contacto) && !empty($dataprov->email_contacto)) {
					$dataprov->email_contacto = str_replace(' ','',$dataprov->email_contacto);
					$dataprov->email_contacto = str_replace(';',',',$dataprov->email_contacto);
					$to_array = explode(",", trim($dataprov->email_contacto));
				}
				//$to_array[] = trim($dataprov->email_contacto);
				if($dataprov->cliente == 5546348) 
		        {
		            $to_array[] ='evaluaciondeproveedores@claro.com.ar';
				//Chechu pido que se de baja 2024 -> 
		        //  $to_array[] ='ClaroCompliance@claro.com.ar';
		        }
				//$to = 'marita.soria@gmail.com';
				//$to = 'alejandro.burgol@fidelitas.com.ar';	
							
				//$cc = 'evaluaciondeproveedores@claro.com.ar';
				//$cc = 'maria.soria@fidelitas.com.ar';
				$cc = ''; 
				
				if ($dataprov->servicio_contratado == '73') 
				{
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporte@imperium.com.ar';
					$replyto = 'soporteled@imperium.com.ar';
					$plantilla = '/led/led_email_mail_impe';
				}
				elseif ($dataprov->servicio_contratado == '10') 
				{
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporte@inquirovitae.com';
					$replyto = 'ssoporte@inquirovitae.com';
					$plantilla = '/led/led_email_mail_iv';
				}
				else 
				{
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
					$replyto = 'soporteled@fidelitas.com.ar';
					$plantilla = '/led/led_email_mail';
				}
				

				//$bcc = 'soporte@fidelitas.com.ar';

				
				$error = 0;
				foreach ($to_array as $key => $to1) {
					if (!filter_var($to1, FILTER_VALIDATE_EMAIL))
						{ $error = 1; break;}
				}  
				
				if ($error == 0) {
				//if (filter_var_array($to_array, FILTER_VALIDATE_EMAIL)) {

					Misc::enviarMailLED($plantilla, $from, $to, $bcc, $replyto, $content, $asunto,'','',$cc,'','',$to_array);
          			$correctos[$total] = new stdClass(); 
          			$correctos[$total]->contraparte = trim($dataprov->nombre_persona); 
          			$correctos[$total]->mail = $to_array; 
					$log = DB::selectOne('EXEC dbo.LN_contrapartes_emails_log_ ?,?,?,?', array($contraparte, $asunto, $texto, Session::get('usuario')->user_id));
					$total++;
				}
				else { 
					$errores[$error] = new stdClass(); 
					$errores[$error]->contraparte = trim($dataprov->nombre_persona); 
					$errores[$error]->mail = $to_array; 
					$error++;
				}
			}
		}

		return view('/led/led_emails_enviados')->with(compact(['total','correctos','error','errores']));
	}


	public static function ledEmailsEnviar14012025() {

		$total = 0;
		$error = 0;
		$correctos = []; 
		$errores = []; 
    	$asunto = Request::input('asunto'); 
    	$texto = Request::input('texto'); 
		

		if(!empty(Request::input('contraparte'))) {

			foreach (Request::input('contraparte') as $k => $contraparte) {

				$hoy = new DateTime('today');
				$texto_adicional = '';
				$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id));

				// 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 );
				}

				$content = array('nombre_cliente' => $ncliente,
											'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' => $dataprov->clave,
											'identificacion' => $dataprov->identificacion,
											'identificador' => $dataprov->identificador,
											'texto' => $texto );
				$from = 'servicio@fidelitas.com.ar';
				//$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : trim($dataprov->email_contacto);
				$to='';
				$to_array = [];
				$to_array[] = trim($dataprov->email_contacto);
				if($dataprov->cliente == 5546348) 
		        {
		            $to_array[] ='evaluaciondeproveedores@claro.com.ar';
				//Chechu pido que se de baja 2024 -> 
		        //  $to_array[] ='ClaroCompliance@claro.com.ar';
		        }
				//$to = 'marita.soria@gmail.com';
				//$to = 'alejandro.burgol@fidelitas.com.ar';	
							
				//$cc = 'evaluaciondeproveedores@claro.com.ar';
				//$cc = 'maria.soria@fidelitas.com.ar';
				$cc = ''; 
				
				if ($dataprov->servicio_contratado == '73') 
				{
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporte@imperium.com.ar';
					$replyto = 'soporteled@imperium.com.ar';
					$plantilla = '/led/led_email_mail_impe';
				}
				elseif ($dataprov->servicio_contratado == '10') 
				{
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporte@inquirovitae.com';
					$replyto = 'ssoporte@inquirovitae.com';
					$plantilla = '/led/led_email_mail_iv';
				}
				else 
				{
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
					$replyto = 'soporteled@fidelitas.com.ar';
					$plantilla = '/led/led_email_mail';
				}
				

				//$bcc = 'soporte@fidelitas.com.ar';

				if (filter_var_array($to_array, FILTER_VALIDATE_EMAIL)) {
					Misc::enviarMailLED($plantilla, $from, $to, $bcc, $replyto, $content, $asunto,'','',$cc,'','',$to_array);
          			$correctos[$total] = new stdClass(); 
          			$correctos[$total]->contraparte = trim($dataprov->nombre_persona); 
          			$correctos[$total]->mail = $to; 
					$log = DB::selectOne('EXEC dbo.LN_contrapartes_emails_log_ ?,?,?,?', array($contraparte, $asunto, $texto, Session::get('usuario')->user_id));
					$total++;
				}
				else { 
					$errores[$error] = new stdClass(); 
					$errores[$error]->contraparte = trim($dataprov->nombre_persona); 
					$errores[$error]->mail = $to; 
					$error++;
				}
			}
		}
		return view('/led/led_emails_enviados')->with(compact(['total','correctos','error','errores']));
	}



	public static function ledPrepagos() {
		return view('/led/led_prepagos');
	}
	
	public static function ledPrepagosData() {		
		$data = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('prepagos', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'select');
		foreach($data as $k => $item) {
			/*$item->acciones = '<button type="button" class="btn btn-primary btn-fidelitas mailpago" data-contraparte="' . $item->contraparte . '" data-toggle="modal" data-target="#modalPrepagos">Mail pago</button>' . 
										' <button type="button" class="btn btn-primary btn-fidelitas detalle" data-contraparte="' . $item->contraparte . '" data-toggle="modal" data-target="#modalPrepagos">Detalles</button>';*/
			
			$item->acciones = '<button type="button" class="btn btn-primary btn-fidelitas detalle" data-transact-id="' . $item->transact_id . '" data-contraparte="' . $item->contraparte . '" data-toggle="modal" data-target="#modalPrepagos">Detalles</button>';

			$data[$k] = $item; 
			$paises[$item->country_code] = $item->country_name;
		}
		return json_encode( array('data' => $data, 'paises' => $paises) );
	}

	public static function ledPrepagosExcel() {		
		$data = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('prepagos', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'select');
		$file = "Cliente\tContraparte\tPaís\tID\tPlataforma\tIngresado\tMonto\tMoneda\tStatus\tTransacción\tCod.Transacción\tFacturado\tFecha Factura\tPais Servicio";
		foreach($data as $datos){
			$file .=  "\n";
			$file .= $datos->nombre_cliente  . "\t" .
					 $datos->nombre_persona  . "\t" .
					 $datos->country_name    . "\t" .
					 $datos->identificacion  . "\t" .
					 $datos->plataforma_pago . "\t" .
					 $datos->fecha_creacion_dmy . "\t" .
					 $datos->valor . "\t" .
					 $datos->moneda . "\t" .
					 $datos->status . "\t" .
					 $datos->fecha_transaccion_dmy . "\t" .
					 $datos->preference_id . "\t" .
					 $datos->facturado . "\t" .
					 $datos->fecha_facturado_dmy."\t". 
					 $datos->pais_servicio;
        }
    	header('Content-disposition: attachment; filename=Prepagos_' . date('Y-m-d') . '.xls');
		header('Content-type: application/vnd.ms-excel; charset=utf-8');
		$file = mb_convert_encoding($file, 'ISO-8859-1', 'UTF-8'); 
		echo $file;
	}


	public static function ledPrepagosMailingForm() {
		$contraparte = Request::input('contraparte');
		$contrapartes = explode(',', $contraparte);
		return view('/led/led_prepagos_mailing_form')->with(compact(['contraparte', 'contrapartes']));
	}


	public static function ledPrepagosMailingEnviar() {
		$contraparte = Request::input('contraparte');
		$tipo = Request::input('tipo');
		$vigencia = !empty(Request::input('vigencia')) ? Request::input('vigencia') : NULL;
		
		$contrapartes = explode(',', $contraparte);
		$cnt = 0;
		$enviados = [];
		foreach($contrapartes as $cont) {
			$data = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('prepagos', $cont, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'selectOne');

			if ($tipo == 'P' AND $data->status == 'pending' AND NULL != $vigencia) {

                //Trazabilidad Mail Pago.
                $trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se envió el mail de pago', $data->cliente, 'PAGO_INICIAL_CONTRAPARTE_BACK','BACK', $data->contraparte, Session::get('usuario')->user_id), 'selectOne');
                /* 26/02/2021 Se cambio por el nuevo Controller 
				$result = LEDEmailController::enviarMailLED('PAGO-PENDIENTE', 'PAGO-PENDIENTE-SUBJECT', $data->contraparte, $vigencia, trim($data->email_contacto));*/
				$result = EmailController::enviarMail('EMAIL-LED','PAGO-PENDIENTE', 'PAGO-PENDIENTE-SUBJECT', $data->contraparte, $vigencia, trim($data->email_contacto));
				
				if (false !== $result) {
					$cnt++;
					$enviados[] = $data->nombre_persona;
				}

			}
			if ($tipo == 'C' AND $data->status == 'approved' AND NULL != $vigencia) {

				$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $cont, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
				$modalidad_login = $modo_login->modalidad_login;

				if ($modalidad_login == 'T') {
					//Trazabilidad Mail Alta.                
					$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Envío de credenciales de acceso a la contraparte', $data->cliente, 'ENVIO_CREDENCIALES_CONTRAPARTE', 'BACK', $data->contraparte, Session::get('usuario')->user_id), 'selectOne');
					/* 24/02/2021 Cambiamos el envio de mail de alta, usando EmailController en vez de LEDEmailController
					$result = LEDEmailController::enviarMailLED('ALTA-TAXID', 'ALTA-TAXID-SUBJECT', $data->contraparte, $vigencia, trim($data->email_contacto));*/
					$result = EmailController::enviarMail('EMAIL-LED','ALTA','',$data->contraparte, $vigencia, trim($data->email_contacto),false);
				}
				else {
					$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Envío de link de acceso a la contraparte para cargar documentación', $data->cliente, 'ENVIO_LINK_CONTRAPARTE', 'BACK', $data->contraparte, Session::get('usuario')->user_id), 'selectOne');
					/* 24/02/2021 Cambiamos el envio de mail de alta, usando EmailController en vez de LEDEmailController
					$result = LEDEmailController::enviarMailLED('ALTA-LINK', 'ALTA-LINK-SUBJECT', $data->contraparte, $vigencia, trim($data->email_contacto));	*/
					$result = EmailController::enviarMail('EMAIL-LED','ALTA','',$data->contraparte, $vigencia,trim($data->email_contacto),false);
				}


				if (false !== $result) {
					$cnt++;
					$enviados[] = $data->nombre_persona;
				}
				
			}
		}
		return json_encode( array('message' => $cnt . ' e-mails enviados correctamente.') );
	}

	public static function ledPrepagosActualizarPago() {
		$contraparte = Request::input('contraparte');

		// consulta del estado anterior del pago
		$estado_pago = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('prepagos', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'selectOne');
		$estado_anterior = $estado_pago->status;

		$transact_id = Request::input('transact_id');
		$status      = Request::input('status');
		$facturado   = Request::input('facturado');
		$vigencia    = Request::input('vigencia');
		$fecha_transaccion = Request::input('fecha_transaccion');
		$fecha_facturado   = Request::input('fecha_facturado');
		$hora_transaccion  = Request::input('hora_transaccion');

		$transaccion  = Request::input('fecha_transaccion_completa');
		//$transaccion = (!empty($fecha_transaccion) AND !empty($hora_transaccion)) ? date_add(date_create_from_format('!d/m/Y', $fecha_transaccion), date_interval_create_from_date_string($hora_transaccion . " minutes") ) : NULL;

		$vigencia = (!empty($vigencia)) ? date_create_from_format('d/m/Y', $vigencia) : NULL;
		$fecha_facturado = (!empty($fecha_facturado)) ? date_create_from_format('d/m/Y', $fecha_facturado) : NULL;

		$preference_id = Request::input('preference_id');
		$motivo = Request::input('motivo');

		/*
		var_dump('contraparte: '); var_dump ($contraparte);
		var_dump('status: '); var_dump ($status);
		var_dump('transact_id: '); var_dump ($transact_id);
		var_dump('preference_id: '); var_dump ($preference_id);
		var_dump('motivo: '); var_dump ($motivo);
		var_dump('vigencia: '); var_dump ($vigencia);
		var_dump('fecha_transaccion: '); var_dump ($fecha_transaccion);
		var_dump('hora_transaccion: '); var_dump ($hora_transaccion);
		var_dump('transaccion: '); var_dump ($transaccion);
		var_dump('facturado: '); var_dump ($facturado);
		var_dump('fecha_facturado: '); var_dump ($fecha_facturado);
		die(); 
		*/

		$temp = SQLConnection::backendStoreProcedure('pagos_productos', array('actualizar_datos_pago', $contraparte, $status, $transact_id, NULL, $preference_id, NULL, $motivo, $vigencia, $transaccion, $facturado, $fecha_facturado), 'selectOne');

		if ($estado_anterior != 'approved' AND $status == 'approved' AND $transaccion != NULL AND !empty($preference_id)) {
			// se está ingresando el pago como aprobado, envío el mail de carga automáticamente con 7 dias de plazo y saco el informe de Carga Comercial

			//$temp = self::ledPostPagoAprobado($contraparte);
			
			/*$expira = date_format( date_add( date_create_from_format('!Y-m-d', date('Y-m-d')) , date_interval_create_from_date_string('7 days') ) , 'd/m/Y');
			
			$result = LEDEmailController::enviarMailLED('ALTA-LINK', 'ALTA-LINK-SUBJECT', $contraparte, $expira, trim($email_contacto) , true);
			
			if ($result == true) {
				$limite_carga_inicial = date_add(date_add( date_create_from_format('!d/m/Y', $expira), date_interval_create_from_date_string("1 day")), date_interval_create_from_date_string('-1 second'));
				$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $limite_carga_inicial, NULL, NULL, NULL, NULL), 'selectOne');
				$temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Envío de link de acceso a la contraparte', $cliente, 'ENVIO_LINK_CONTRAPARTE', 'BACK', $contraparte, Session::get('usuario')->user_id), 'selectOne');

				// colocar el informe en ingresado si estaba en carga comercial			
				$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('activar_informe', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id), 'selectOne');
			}*/

			$result = Misc::CURLCall(env('URL_BASE') . '/led/post-pago-aprobado' . '?contraparte=' . $contraparte, '', 'GET');

		}

		// devolver el registro actualizado del pago
		$prepago = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('prepagos', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'selectOne');

		return json_encode( array('pago' => $prepago) );
	}

	// Para llamar por GET http://127.0.0.1/led/post-pago-aprobado

	public static function ledPostPagoAprobado() {
		$contraparte = !empty(Request::input('contraparte')) ? Request::input('contraparte') : null;

		$result = false;
		if (null != $contraparte) {

			$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, 15342812), 'selectOne');

			if (!empty($contrap)) {
				$email_contacto = $contrap->email_contacto;
				$cliente = $contrap->cliente;
				$expira = date_format( date_add( date_create_from_format('!Y-m-d', date('Y-m-d')) , date_interval_create_from_date_string('7 days') ) , 'd/m/Y');			

				/* 24/02/2021 Cambiamos el envio de mail de alta, usando EmailController en vez de LEDEmailController
				$result = LEDEmailController::enviarMailLED('ALTA-LINK', 'ALTA-LINK-SUBJECT', $contraparte, $expira, trim($email_contacto) , true);
				*/
				$result = EmailController::enviarMail('EMAIL-LED','ALTA','',$contraparte, $expira, trim($email_contacto) , true);


				if ($result == true) {
					$limite_carga_inicial = date_add(date_add( date_create_from_format('!d/m/Y', $expira), date_interval_create_from_date_string("1 day")), date_interval_create_from_date_string('-1 second'));
					$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $limite_carga_inicial, NULL, NULL, NULL, NULL), 'selectOne');
					$temp = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Envío de link de acceso a la contraparte para cargar documentación', $cliente, 'ENVIO_LINK_CONTRAPARTE', 'BACK', $contraparte, 15342812), 'selectOne');
	
					// colocar el informe en ingresado si estaba en carga comercial			
					$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('activar_informe', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, 15342812), 'selectOne');
				}
			}

		}
		return $result == true ? 1:0;
	}



	public static function ledPrepagosEnviarLink() {
		$contraparte = Request::input('contraparte');
		$transact_id = Request::input('transact_id');
		$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'selectOne');
		$prepago = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('prepagos', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $transact_id), 'selectOne');
		$familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $contraparte, null, null, null, null, null), 'select');
		return view('/led/led_prepagos_enviar_link')->with(compact(['qcontrap', 'familias']));
	}

	public static function ledPrepagosEnvioLink() {
		$contraparte = Request::input('contraparte');
		$transact_id = Request::input('transact_id');
		$enviar = Request::input('enviar');
		$email = Request::input('email');
		$expira = Request::input('fecha_expira');

		$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'selectOne');
		$addr = ($enviar == 1) ? $email : '';
		
		//Trazabilidad Mail Pago.
		$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se envió el mail de pago', $qcontrap->cliente, 'PAGO_INICIAL_CONTRAPARTE_BACK','BACK', $contraparte), 'selectOne');
								
		/* 26/02/2021 Se cambio por el nuevo Controller 
 		$result = LEDEmailController::enviarMailLED('PAGO-PENDIENTE', 'PAGO-PENDIENTE-SUBJECT', $contraparte, $expira, $addr, FALSE, FALSE, $transact_id);*/
		$result = EmailController::enviarMail('EMAIL-LED','PAGO-PENDIENTE', 'PAGO-PENDIENTE-SUBJECT', $contraparte, $expira, $addr, FALSE, FALSE, $transact_id);

		return json_encode ( array('mensaje' => ($result === true) ? 'El mensaje fue enviado correctamente.' : 'Error al enviar el mensaje.') );
	}

	public static function ledPrepagosEnvioLinkArgentina() {
		$lista = DB::select("select contraparte from ln_contrapartes where cliente = 7855254  and activo=1 and country_code='AR' and contraparte not in (67117) order by contraparte");
		//dd($lista);
		foreach($lista as $i => $contraparte) {
			$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte->contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'selectOne');
			//$addr = ($enviar == 1) ? $email : '';
			$addr = $qcontrap->email_contacto;
			
			//Trazabilidad Mail Pago.
			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Se envió el mail de pago', $qcontrap->cliente, 'PAGO_INICIAL_CONTRAPARTE_BACK','BACK', $contraparte->contraparte), 'selectOne');

			$expira = '06/02/2020';
			/* 26/02/2021 Se cambio por el nuevo Controller 
			$result = LEDEmailController::enviarMailLED('PAGO-PENDIENTE', 'PAGO-PENDIENTE-SUBJECT', $contraparte->contraparte, $expira, $addr);	
			*/
			$result = EmailController::enviarMail('EMAIL-LED','PAGO-PENDIENTE', 'PAGO-PENDIENTE-SUBJECT', $contraparte->contraparte, $expira, $addr);	
			//var_dump($result);
		}

	}

	public static function ledPrepagosDetalle() {
		$contraparte = Request::input('contraparte');
		$transact_id = Request::input('transact_id');
		$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 'selectOne');
		$familias = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $contraparte, null, null, null, null, null), 'select');
		$prepago = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('prepagos', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $transact_id), 'selectOne');
		$docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

		$reports = SQLConnection::backendStoreProcedure('LN_demo_', array('reports', $contraparte, $qcontrap->cliente), 'select');
		foreach($reports as $r => $rpt) {
			$prd = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $rpt->producto, null, null, null, null, null, null, null, Session::get('usuario')->user_id, null, null, null, null, null), 'selectOne');
			$rptdata = SQLConnection::backendStoreProcedure('LN_demo_', array('select', $contraparte, NULL, $prd->producto), 'selectOne');
			if (!empty($rptdata)) {
				if($prd->producto_id == 'dossierdemo' OR $prd->producto_id == 'legajo') {
					$reports_data[$r] = ReportsController::ledContraparteDossierData($contraparte, $rpt->producto, true, false);
				}
				elseif ($prd->producto_id == 'businessreport') {
					$reports_data[$r] =  ReportsController::ledContraparteBRData($contraparte, $rpt->producto, true, false);
				}
				elseif ($prd->producto_id == 'inquiroVitae') {
					$reports_data[$r] =  ReportsController::ledContraparteIVData($contraparte, $rpt->producto, true, false);
				}		
			}
			else {
				$reports_data[$r] = '<h4 class="text-center">No se encuentra información</h4><br />';
			}

		}

		return view('/led/led_contrapartes_tabs')->with(compact(['qcontrap', 'familias', 'prepago', 'docs', 'reports', 'reports_data']));
	}

	// Función genérica que puede enviar según configuración el mail de alta para inicio de sesión con tax id o el mail con el link, 
	// considferando la posibilidad de utilizar en este caso el texto genérico o el que esté asociado al tipo de informe en caso de haber un report activo
	// Si link forced == true, se ignora el modo de login de la contraparte y se envía siempre link

public static function ledEnviarEmailContraparte($contraparte='', $fecha_expira='', $email_alt='', $link_forced = false) {
		if ($contraparte > 0) {

			$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id));

			if ($link_forced == false) {
				$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

				$modalidad_login = $modo_login->modalidad_login;
			}
			else {
				$modalidad_login = 'L';
			}

			if ($modalidad_login == 'T') {

				$clave = Misc::generateRandomString(6);

				$hoy = new DateTime('today');
				$fecha_exp = date_format(date_add($hoy, date_interval_create_from_date_string("15 days")), 'Y-m-d');

				$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $fecha_exp, NULL, NULL, NULL, NULL), 'selectOne');


				DB::selectOne("update LN_contrapartes set
										clave = '" . $clave . "', clave_temporal = 1, 
										clave_cambio = NULL,
										clave_expira = '" . $fecha_exp . "' where contraparte = " . $contraparte);

				$texto_adicional = NULL;

				$ncliente = $dataprov->nombre_cliente;

				if ($dataprov->cliente == 5546348) {
					$texto_adicional = 'Usted tendrá tiempo para la carga de información hasta el día ' . $dataprov->limite_carga_inicial;

					/** Chanchada para cambiar el nombre del cliente en caso de ser AMX **/
					$ncliente = ($dataprov->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($dataprov->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $dataprov->nombre_cliente );
				}

				$content = array('nombre_cliente' => $ncliente,
											'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'),
											'texto_adicional' => $texto_adicional );

				$from = 'servicio@fidelitas.com.ar';
				$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($dataprov->email_contacto) : $email_alt );
				$to = str_replace(' ','',$to);
				$to = str_replace(';',',',$to);
				$to_array = []; 
				$to_array = explode(",", trim($to));
				$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
				$replyto = 'soporteled@fidelitas.com.ar';
				$attach = ($dataprov->cliente == 5546348 OR $dataprov->cliente == 3920694 OR $dataprov->cliente == 2254875) ? env('PATH_COMPARTIDO') . '/legajos/descargas/5546348/Instructivo LED - Contratistas AMX Claro.pdf' : '';

				$error = 0;
				foreach ($to_array as $key => $to1) {
					if (!filter_var($to1, FILTER_VALIDATE_EMAIL))
						{ $error = 1; break;}
				}  
				
				if ($error == 0) {
				//if (filter_var_array($to_array, FILTER_VALIDATE_EMAIL)) {					
					Misc::enviarMailLED('/led/led_email_taxid' , $from, $to_array, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Alta de contrapartes", $attach);
					return true;
				}

			}

			else {

				// envío de mail modo link
				$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('SELECT', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
				$ncliente = $qcontrap->nombre_cliente;

				if ($qcontrap->cliente == 5546348) {
					/** Chanchada para cambiar el nombre del cliente en caso de ser AMX **/
					$ncliente = ($qcontrap->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($qcontrap->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $qcontrap->nombre_cliente );
				}

				// busco un report activo para la contraparte, de manera de obtener el texto del mail en el tipo de informe 
				$report = SQLConnection::backendStoreProcedure('LN_informes', array('panel_control_reports', $contraparte, NULL), 'selectOne');

				$email = ($email_alt == '') ? $qcontrap->email_contacto : $email_alt;

				$expira = date_format(date_create_from_format('d/m/Y', $fecha_expira), 'Y-m-d');
				$ident = encrypt( $qcontrap->country_code . '|' . $qcontrap->identificador . '|' . $qcontrap->numero . '|' . $contraparte . '|' . $expira );
				$link = env('URL_LEGAJOS_AUTOLOGIN') . "?q=" . $ident;

				if (!empty($report->texto_email_solicitud)) {
					// el texto del mail surge del report que se encuentra activo para la contraparte

					//$fecha_limite_doc = $report->fecha_limite_doc;
					$fecha_limite_doc = $fecha_expira;
					$click = 'click <a href="' . $link . '">aquí</a>';
					$tarea_gestion_doc = SQLConnection::backendStoreProcedure('LN_informes', array('datos_tarea_gestion', NULL, $report->informe), 'selectOne');
									
					$hoy = date('d/m/Y');
					$days_interval = date_diff( date_create_from_format('!d/m/Y', $hoy) , date_create_from_format('!d/m/Y', $fecha_expira) );
					$restan_dias = $days_interval->format('%d') + 1;

					$content = str_replace(Chr(13).Chr(10), '<br />', $report->texto_email_solicitud);
					$content = str_replace('%%NOMBRE_DESTINATARIO%%', $qcontrap->nombre_contacto, $content);
					$content = str_replace('%%SUJETO_INFORMADO%%', $report->nombre_persona, $content);
					$content = str_replace('%%CLIENTE%%', $ncliente, $content);
					$content = str_replace('%%EMPRESA_SOLICITANTE%%', '', $content);
					$content = str_replace('%%LINK%%', $click, $content);
					$content = str_replace('%%RESTAN_DIAS%%', $restan_dias, $content);
					if($fecha_limite_doc){
						$content = str_replace('%%FECHA_LIMITE%%', $fecha_limite_doc, $content);
					}
					else{
						$content = str_replace('%%FECHA_LIMITE%%', $qcontrap->limite_carga_inicial, $content);
					}
					$content = str_replace('%%NOMBRE_USUARIO%%', $tarea_gestion_doc->first_name . ' ' . $tarea_gestion_doc->last_name, $content);
					$content = str_replace('%%EMAIL_USUARIO%%', $tarea_gestion_doc->email, $content);

					$from = 'servicio@fidelitas.com.ar';
					$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($dataprov->email_contacto) : $email_alt );
					$to = str_replace(' ','',$to);
                	$to = str_replace(';',',',$to);
					$to_array = []; 
                	$to_array = explode(",", trim($to));
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';

					$asunto = ($report->asunto_email_solicitud != NULL) ? $report->asunto_email_solicitud . ' ' . $ncliente : 'Fidelitas - Solicitud de documentación '. $ncliente;

					$replyto = 'soporteled@fidelitas.com.ar';

					$error = 0;
					foreach ($to_array as $key => $to1) {
						if (!filter_var($to1, FILTER_VALIDATE_EMAIL))
							{ $error = 1; break;}
					}  
					
					if ($error == 0) {
					//if (filter_var_array($to_array, FILTER_VALIDATE_EMAIL)) {			
					
						Misc::enviarMailLED('/led/led_email_custom' , $from, $to_array, $bcc, $replyto, $content, $asunto);

						// Actualizar tarea de gestión de documentación, en caso de encontrarse activa 
						$temp = SQLConnection::backendStoreProcedure('LN_informes', array('actualizar_tarea_gestion', $contraparte, NULL, Session::get('usuario')->user_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, date_create_from_format('d/m/Y', $fecha_expira)), 'selectOne');

						return true;
					}

				}

				else {
					// texto estándard con el link

					$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' => $qcontrap->nombre_persona,
													'abreviatura' => $qcontrap->abreviatura,
													'numero' => $qcontrap->numero,
													'nombre_contacto' => $qcontrap->nombre_contacto,
													'email_contacto' => $qcontrap->email_contacto,
													'country_code' => $qcontrap->country_code,
													'country_name' => $qcontrap->country_name,
													'link' => $link,
													'fecha_expiracion' => $fecha_expira,
													'texto' => $texto );
						
					$from = 'servicio@fidelitas.com.ar';
					$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($dataprov->email_contacto) : $email_alt );
					$to = str_replace(' ','',$to);
                	$to = str_replace(';',',',$to);
					$to_array = []; 
                	$to_array = explode(",", trim($to));

					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
					$asunto = 'Fidelitas - Solicitud de documentación '. $ncliente;				
					$replyto = 'soporteled@fidelitas.com.ar';

					$error = 0;
					foreach ($to_array as $key => $to1) {
						if (!filter_var($to1, FILTER_VALIDATE_EMAIL))
							{ $error = 1; break;}
					}  
					
					if ($error == 0) {
					//if (filter_var_array($to_array, FILTER_VALIDATE_EMAIL)) {			

						Misc::enviarMailLED('/led/led_email_link' , $from, $to_array, $bcc, $replyto, $content, $asunto);

						// Actualizar tarea de gestión de documentación, en caso de encontrarse activa 
						$temp = SQLConnection::backendStoreProcedure('LN_informes', array('actualizar_tarea_gestion', $contraparte, NULL, Session::get('usuario')->user_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, date_create_from_format('d/m/Y', $fecha_expira)), 'selectOne');

						return true;
					}

				}

			}

		}
		return false;
	}

	public static function ledEnviarEmailContraparte14012025($contraparte='', $fecha_expira='', $email_alt='', $link_forced = false) {
		if ($contraparte > 0) {

			$dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id));

			if ($link_forced == false) {
				$modo_login = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('MODALIDAD_LOGIN', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');

				$modalidad_login = $modo_login->modalidad_login;
			}
			else {
				$modalidad_login = 'L';
			}

			if ($modalidad_login == 'T') {

				$clave = Misc::generateRandomString(6);

				$hoy = new DateTime('today');
				$fecha_exp = date_format(date_add($hoy, date_interval_create_from_date_string("15 days")), 'Y-m-d');

				$temp = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('actualizar_carga_inicial', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $fecha_exp, NULL, NULL, NULL, NULL), 'selectOne');


				DB::selectOne("update LN_contrapartes set
										clave = '" . $clave . "', clave_temporal = 1, 
										clave_cambio = NULL,
										clave_expira = '" . $fecha_exp . "' where contraparte = " . $contraparte);

				$texto_adicional = NULL;

				$ncliente = $dataprov->nombre_cliente;

				if ($dataprov->cliente == 5546348) {
					$texto_adicional = 'Usted tendrá tiempo para la carga de información hasta el día ' . $dataprov->limite_carga_inicial;

					/** Chanchada para cambiar el nombre del cliente en caso de ser AMX **/
					$ncliente = ($dataprov->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($dataprov->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $dataprov->nombre_cliente );
				}

				$content = array('nombre_cliente' => $ncliente,
											'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'),
											'texto_adicional' => $texto_adicional );

				$from = 'servicio@fidelitas.com.ar';
				$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($dataprov->email_contacto) : $email_alt );
				$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
				$replyto = 'soporteled@fidelitas.com.ar';
				$attach = ($dataprov->cliente == 5546348 OR $dataprov->cliente == 3920694 OR $dataprov->cliente == 2254875) ? env('PATH_COMPARTIDO') . '/legajos/descargas/5546348/Instructivo LED - Contratistas AMX Claro.pdf' : '';

				if (filter_var($to, FILTER_VALIDATE_EMAIL)) {					
					Misc::enviarMailLED('/led/led_email_taxid' , $from, $to, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Alta de contrapartes", $attach);
					return true;
				}

			}

			else {

				// envío de mail modo link
				$qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('SELECT', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
				$ncliente = $qcontrap->nombre_cliente;

				if ($qcontrap->cliente == 5546348) {
					/** Chanchada para cambiar el nombre del cliente en caso de ser AMX **/
					$ncliente = ($qcontrap->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($qcontrap->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $qcontrap->nombre_cliente );
				}

				// busco un report activo para la contraparte, de manera de obtener el texto del mail en el tipo de informe 
				$report = SQLConnection::backendStoreProcedure('LN_informes', array('panel_control_reports', $contraparte, NULL), 'selectOne');

				$email = ($email_alt == '') ? $qcontrap->email_contacto : $email_alt;

				$expira = date_format(date_create_from_format('d/m/Y', $fecha_expira), 'Y-m-d');
				$ident = encrypt( $qcontrap->country_code . '|' . $qcontrap->identificador . '|' . $qcontrap->numero . '|' . $contraparte . '|' . $expira );
				$link = env('URL_LEGAJOS_AUTOLOGIN') . "?q=" . $ident;

				if (!empty($report->texto_email_solicitud)) {
					// el texto del mail surge del report que se encuentra activo para la contraparte

					//$fecha_limite_doc = $report->fecha_limite_doc;
					$fecha_limite_doc = $fecha_expira;
					$click = 'click <a href="' . $link . '">aquí</a>';
					$tarea_gestion_doc = SQLConnection::backendStoreProcedure('LN_informes', array('datos_tarea_gestion', NULL, $report->informe), 'selectOne');
									
					$hoy = date('d/m/Y');
					$days_interval = date_diff( date_create_from_format('!d/m/Y', $hoy) , date_create_from_format('!d/m/Y', $fecha_expira) );
					$restan_dias = $days_interval->format('%d') + 1;

					$content = str_replace(Chr(13).Chr(10), '<br />', $report->texto_email_solicitud);
					$content = str_replace('%%NOMBRE_DESTINATARIO%%', $qcontrap->nombre_contacto, $content);
					$content = str_replace('%%SUJETO_INFORMADO%%', $report->nombre_persona, $content);
					$content = str_replace('%%CLIENTE%%', $ncliente, $content);
					$content = str_replace('%%EMPRESA_SOLICITANTE%%', '', $content);
					$content = str_replace('%%LINK%%', $click, $content);
					$content = str_replace('%%RESTAN_DIAS%%', $restan_dias, $content);
					if($fecha_limite_doc){
						$content = str_replace('%%FECHA_LIMITE%%', $fecha_limite_doc, $content);
					}
					else{
						$content = str_replace('%%FECHA_LIMITE%%', $qcontrap->limite_carga_inicial, $content);
					}
					$content = str_replace('%%NOMBRE_USUARIO%%', $tarea_gestion_doc->first_name . ' ' . $tarea_gestion_doc->last_name, $content);
					$content = str_replace('%%EMAIL_USUARIO%%', $tarea_gestion_doc->email, $content);

					$from = 'servicio@fidelitas.com.ar';
					$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($dataprov->email_contacto) : $email_alt );
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';

					$asunto = ($report->asunto_email_solicitud != NULL) ? $report->asunto_email_solicitud . ' ' . $ncliente : 'Fidelitas - Solicitud de documentación '. $ncliente;

					$replyto = 'soporteled@fidelitas.com.ar';

					if (filter_var($to, FILTER_VALIDATE_EMAIL)) {					
						Misc::enviarMailLED('/led/led_email_custom' , $from, $to, $bcc, $replyto, $content, $asunto);

						// Actualizar tarea de gestión de documentación, en caso de encontrarse activa 
						$temp = SQLConnection::backendStoreProcedure('LN_informes', array('actualizar_tarea_gestion', $contraparte, NULL, Session::get('usuario')->user_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, date_create_from_format('d/m/Y', $fecha_expira)), 'selectOne');

						return true;
					}

				}

				else {
					// texto estándard con el link

					$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' => $qcontrap->nombre_persona,
													'abreviatura' => $qcontrap->abreviatura,
													'numero' => $qcontrap->numero,
													'nombre_contacto' => $qcontrap->nombre_contacto,
													'email_contacto' => $qcontrap->email_contacto,
													'country_code' => $qcontrap->country_code,
													'country_name' => $qcontrap->country_name,
													'link' => $link,
													'fecha_expiracion' => $fecha_expira,
													'texto' => $texto );
						
					$from = 'servicio@fidelitas.com.ar';
					$to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : ( ($email_alt == '') ? trim($dataprov->email_contacto) : $email_alt );
					$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
					$asunto = 'Fidelitas - Solicitud de documentación '. $ncliente;				
					$replyto = 'soporteled@fidelitas.com.ar';

					if (filter_var($to, FILTER_VALIDATE_EMAIL)) {					
						Misc::enviarMailLED('/led/led_email_link' , $from, $to, $bcc, $replyto, $content, $asunto);

						// Actualizar tarea de gestión de documentación, en caso de encontrarse activa 
						$temp = SQLConnection::backendStoreProcedure('LN_informes', array('actualizar_tarea_gestion', $contraparte, NULL, Session::get('usuario')->user_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, date_create_from_format('d/m/Y', $fecha_expira)), 'selectOne');

						return true;
					}

				}

			}

		}
		return false;
	}



	/**** Reportes LED ****/

	public static function ledReportesDocPendiente() {
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SEARCH',NULL,NULL,NULL,NULL), 'select');
		return view('/led/led_reporte_documentacion_pendiente')->with(compact(['clientes']));
	}


	public static function ledReportesDocPendienteExport() {
		$info = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('documentacion_pendiente', Request::input('cliente'), null, null, null), 'select');

		$file = 'CLIENTE' . "\t" . 'CUIT' . "\t" . 'RAZON SOCIAL' . "\t" . "DOCUMENTO" . "\t" . "ESTADO";

		foreach($info as $contraparte){
			$file .=  "\n";
			$file .= $contraparte->CLIENTE . "\t" .
						$contraparte->CUIT . "\t" .
						$contraparte->RAZON_SOCIAL . "\t" .
						$contraparte->DOCUMENTO . "\t" .
						$contraparte->ESTADO;
            
        }

    	header('Content-disposition: attachment; filename=led_documentacion_pendiente_' . Request::input('cliente') . '.xls');
		header('Content-type: application/vnd.ms-excel; charset=utf-8');

		$file = mb_convert_encoding($file, 'ISO-8859-1', 'UTF-8'); 
		echo $file;
	}

	public static function buscarBrief() {
		$menu     = Misc::obtenerPermisosNavigatorNoCuit();
		return view('/led/buscar_brief')->with(compact(['menu']));
	}

	public static function vinculacionesCuit() {
		$menu     = Misc::obtenerPermisosNavigatorNoCuit();
		$desde    = 'Vinculaciones CUIT'; 
		return view('/buscador_padron')->with(compact(['menu','desde']));
	}

	public static function validaCuit() {
    $cuit = Request::input('cuit'); 
		$cuit2 = str_replace('-', '', $cuit); 
		$cuit2 = str_replace('.', '', $cuit2); 
		$cuit2 = str_replace(' ', '', $cuit2); 
		$chk = DB::selectOne("select count(*) as cantidad
														from padrones
														where identificacion = '" . $cuit2 . "'");
		if ($chk->cantidad==0)
		{
			$error = 'error';
		}
		else 
		{
			$error = 'ok';
			$cuit = $cuit2; 
		}
		$resultado = array( 'error' => $error, 'cuit' => $cuit );
		return json_encode($resultado);
	}



	public static function pruebaEnviarMail() {
		$tipo = Request::input('tipo') ?? 'A';
		if ($tipo=='D')
		{
		$docid = Request::input('docid') ?? 192418;
		$contraparte = Request::input('contraparte') ?? 141720; 
		$temp = EmailController::enviarMail('EMAIL-LED','DOCUMENTACION-RECHAZADA', 'DOCUMENTACION-RECHAZADA-SUBJECT', $contraparte, NULL, 'marita.soria@gmail.com', NULL, $docid);
		var_dump('Documentacion'); 
		}
		if ($tipo=='A')
		{
		$contraparte = Request::input('contraparte') ?? 107; 
		$temp = EmailController::enviarMail('EMAIL-LED','ALTA','',$contraparte, '05/03/2021','marita.soria@gmail.com',false); 
		var_dump('Alta'); 
		}
		if ($tipo=='P')
		{
		$contraparte = Request::input('contraparte') ?? 141720; 
		$transact_id = Request::input('transact_id') ?? 1; 
		$temp = EmailController::enviarMail('EMAIL-LED','PAGO-PENDIENTE', 'PAGO-PENDIENTE-SUBJECT', $contraparte, '05/03/2021', 'marita.soria@gmail.com',FALSE, FALSE, $transact_id);
		var_dump('Pago Pendiente'); 
		}

		if ($tipo=='I')
		{
			$contraparte = 137612;
			$false = false; 
			$null = null; 
			$to = [];
			$temp = EmailController::enviarMail('IV','', '', $contraparte, '', 'marita.soria@gmail.com', $false, $null, $null, $to); 
			var_dump('Inquiro Vitae'); 
		}
		return 'Listo'; 
	}

	public static function DeudaPrevisional() {
		$cuit              = Request::Input('cuit');
		$datos = SQLConnection::backendStoreProcedure('deuda_previsional_', array($cuit), 'select');
	    return json_encode(array('tabla' => view('/tablasgenerales/deuda_previsional_2')->with(compact('datos'))->render()));
	}


	public static function ledDuplicarContraparte() { 
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL), 'select');
		return view('/led/led_duplicar_contraparte')->with(compact(['clientes']));
	}

	public static function ledDuplicarContraparte2() {
		$cliente = Request::input('cliente');
		$clientea = Request::input('clientea');
		$servicio = Request::input('servicio');
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_datos_cliente', array($cliente,$servicio), 'select');
		$nombre_cliente = $contrap[0]->nombre_cliente ?? ''; 
 
		return view('/led/led_duplicar_contraparte_2')->with(compact(['contrap','nombre_cliente','cliente','servicio','clientea']));
	}

	public static function ledDuplicarContraparte3() {
		$cliente = Request::input('cliente');
		$clientea = Request::input('clientea');
		$servicio = Request::input('servicio');
		$contraparte = Request::input('contraparte');
		$contrapartes = SQLConnection::backendStoreProcedure('LN_contrapartes_datos_cliente', array($cliente,$servicio), 'select');
			
		foreach ($contrapartes as $key => $value) {
			if (!in_array($value->contraparte, $contraparte)) {
   				 unset($contrapartes[$key]); 	
   				}
   			
		}

		$datos_cliente 	= SQLConnection::backendStoreProcedure('LED_Clientes', array("select", $clientea, NULL, NULL, NULL), 'selectOne');

		$cliente_paises = SQLConnection::backendStoreProcedure('backend_cliente_paises', array('obtener_cliente_paises', $clientea), 'select');
		foreach ($cliente_paises as $k1 => $pai)
		{
			if ($pai->servicio_contratado !== $servicio)  
				{ unset($cliente_paises[$k1]); }
		} 
		$familias_todas = SQLConnection::backendStoreProcedure('LN_familias_sc', array('search',NULL,NULL,$clientea,NULL,1,NULL,NULL,NULL,NULL,NULL,$servicio), 'select');
		return view('/led/led_duplicar_contraparte_3')->with(compact(['contrapartes','cliente_paises','datos_cliente','familias_todas']));
	}


	 public static function completarWordcheck(){ 
        $cliente = Request::input('cliente');
        $id = Request::input('contraparte');
 		$inicio = (null !== Request::input('inicio')) ?  Request::input('inicio') : 'inicio';
		//echo(var_dump($id));die();

        $contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
        if ($inicio == 'inicio') {        
        	$registros =  SQLConnection::backendStoreProcedure('ln_completa_fidecheck_check', array($id,'LN_check'),'select');
        }
        $socios = SQLConnection::backendStoreProcedure('LN_check_', array('searchall', null, $id, null, 'S'), 'select');
        $relac  = SQLConnection::backendStoreProcedure('LN_check_', array('searchall', null, $id, null, 'R'), 'select');
        $direct = SQLConnection::backendStoreProcedure('LN_check_', array('searchall', null, $id, null, 'D'), 'select');
        $propio = SQLConnection::backendStoreProcedure('LN_check_', array('searchall', null, $id, null, 'P'), 'selectOne');
		//------- NUEVAS MODIFICACIONES
		$indicador = '383';
		$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'INDICADOR',$indicador), 'select'); 
		$campo = [];
		$nombre_producto_ant = '';
		//--
		foreach ($editables as $key => $editar){
			$campo[$key] = new stdClass;
			$campo[$key]->nombre = $editar->nombre_indicador;
			$campo[$key]->clave_indicador = $editar->clave_indicador; 
	  		$campo[$key]->tipo_dato = $editar->tipo_dato; 
	  		$campo[$key]->nombre_producto = $editar->nombre_producto; 
	  		$campo[$key]->producto = $editar->producto; 
			//---
	  		if ($campo[$key]->nombre_producto == $nombre_producto_ant) 
	  		{
	  			$campo[$key]->nombre_producto = ''; 
	  		}
	  		else 
	  		{
	  			$nombre_producto_ant = $campo[$key]->nombre_producto; 
	  		}

			  if ($editar->valor_texto !== null) {
				$campo[$key]->valor_indicador = $editar->valor_texto; 
			}
			elseif ($editar->valor_numerico !== null) {
				$campo[$key]->valor_indicador = number_format($editar->valor_numerico,2,'.','.');
			}
			elseif ($editar->valor_fecha !== null) {
				$campo[$key]->valor_indicador = $editar->valor_fecha; 
			}
		  	elseif ($editar->valor_memo !== null) {
				$campo[$key]->valor_indicador = $editar->valor_memo; 
			}

			$campo[$key]->tiene_opciones = 'NO';

			if (!empty($editar->opciones))
			{
				$campo[$key]->tiene_opciones = 'SI';
				$valores = [] ;
				$valores = explode('^', $editar->opciones);
				foreach ($valores as $key2 => $valore){ 
					$valores2 = explode('|', $valore);
					foreach ($valores2 as $keyk => $valore2){	
						if($key2 == 0)
						{
							$campo[$key]->valor[$keyk] = $valore2;
						}
						if($key2 == 1)
						{
							$campo[$key]->opcion[$keyk] = $valore2;
							$campo[$key]->color[$keyk] = null; 
						
						}

					}
				}
			}  
			if ($editar->rango_inferior !== null && $editar->rango_inferior !== '' && $editar->rango_superior !== null && $editar->rango_superior !== '' && $editar->intervalo !== null && $editar->intervalo !== ''){
				$campo[$key]->tiene_opciones = 'SI';
				for ($i=$editar->rango_inferior; $i <= $editar->rango_superior; $i+=$editar->intervalo){ 
					$campo[$key]->valor[] = $i; 
					$campo[$key]->opcion[] = $i; 
					$campo[$key]->color[] = null; 
				}
			}
			
		}
		//------ NUEVAS MODIFICACIONES
        return view('/led/led_wordcheck')->with(compact(['cliente', 'contrap', 'socios', 'relac', 'direct','propio','campo']));
	}

	public static function ledWordcheckDelete() {
		$id = Request::input('id_check');
		$fcheck = SQLConnection::backendStoreProcedure('LN_check_', array('select', $id), 'selectOne');

		if (!empty($fcheck)) {

			$contraparte = $fcheck->contraparte;
			$cliente = $fcheck->cliente;
			$temp = SQLConnection::backendStoreProcedure('LN_check_', array('DELETE', $id), 'selectOne');

			return view('/led/led_wordcheck_back')->with(compact(['cliente', 'contraparte']));

		}
	}

	public static function ledWordcheckEdit() {
		$id = Request::input('id_check');
		$sec = Request::input('sec');
		$seccion = Request::input('seccion');
		$contraparte = Request::input('contraparte');
	
		$wordcheck = SQLConnection::backendStoreProcedure('LN_check_', array('select', $id, $contraparte, '',$sec), 'selectOne');

		$wordcheck_file = '';
		$wordcheck_url  = '';
		$hay_archivo = "false"; 
		
		if ($wordcheck->ruta !== null) 
		{
			if( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $wordcheck->ruta))  {
				$wordcheck_file = $id . '.pdf';
				$wordcheck_url = env('RUTA_DOCUMENTOS') . '/' .  $wordcheck->ruta;
			}

	    	If( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $wordcheck->ruta) )  
	    	{
				$hay_archivo = "true"; 
			}
		}

		return view('/led/led_wordcheck_edit')->with(compact(['wordcheck','seccion','wordcheck_file', 'wordcheck_url','hay_archivo']));
	}


	public static function ledWordcheckUpdate() {
		$id = Request::input('id_check');
		$detalle = Request::input('detalle') ?? NULL;
		$lncheck = Request::input('lncheck') ?? NULL;
		$cliente = Request::input('cliente');
		$contraparte = Request::input('contraparte');
		$modo = Request::input('modoupload') ?? 'R';
		$cdata = SQLConnection::backendStoreProcedure('LN_check_', array('select', $id, null,null,null), 'selectOne');

		if (!empty($_FILES['archivo_wordcheck']) && $_FILES['archivo_wordcheck']['name'] !== '') {
			$userfile_name = $_FILES['archivo_wordcheck']['name'];
			$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);
			$ftype = strtolower($userfile_extn); 
			if($ftype == 'pdf') {
				if( basename($_FILES['archivo_wordcheck']['name']) !='' ) {
					if ($modo=="R")
					{
			      		$path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck/' . $id . '.pdf';
						$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
						if(!is_dir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck' )){
						   mkdir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck', 0777,true);
				    }
					  move_uploaded_file($_FILES['archivo_wordcheck']['tmp_name'], $path);
						chmod($path, 0777);
					}
					else 
					{
					  // Archivo preexistente - Modo append 
		      		  $path  = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck/' . $id . '.pdf';
					  $path2 = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck/' . $id .  '_merge.pdf';
					  if (move_uploaded_file($_FILES['archivo_wordcheck']['tmp_name'], $path2))
					  {					
						chmod($path2, 0777);														
						$joinedpdf = PdfMerger::init();
                        $joinedpdf->addPDF($path, 'all');
                        $joinedpdf->addPDF($path2, 'all');
                        $joinedpdf->merge('file');
                        $joinedpdf->save($path);
					  } 
					}
				}
			}
		}	

		$url = $cdata->cliente . '/' . $cdata->contraparte . '/wordcheck/' . $id . '.pdf'; 

		$temp = SQLConnection::backendStoreProcedure('LN_check_', array('UPDATE', $id, null, null, null, null, null, null, null,null, $lncheck, $detalle,$url), 'selectOne');

		return view('/led/led_wordcheck_back')->with(compact(['cliente', 'contraparte']));   

	}

	public static function scoreVRM() { 
		$id = Request::input('contraparte');

		$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id, 'INDICADOR',384), 'select'); 
		
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		
		$score_res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'SCORE_VRM'), 'selectOne');
		$score = ''; 
		if (isset($score_res)) {
		   $score = $score_res->valor; 
    	}
	
	  
	  $campo[0]  = new stdClass();
	  if (empty($editables)) 
	  {
          	for ($i=0; $i <= 100 ; $i++) { 
	          	$campo[0]->valor[$i] = $i;
				$campo[0]->opcion[$i] = $i;
	  		}
      }
      else 
      {
	 	  foreach ($editables as $key => $editar)
		  {
    		if (!empty($editar->opciones))
	  		{
                $valores = [] ;
                $valores = explode('^', $editar->opciones);
                foreach ($valores as $key2 => $valore)
                    { 
                    $valores2 = explode('|', $valore);
                    foreach ($valores2 as $keyk => $valore2)
                    	{
                    		if($key2 == 0)
							{
								$campo[0]->valor[$keyk] = $valore2;
							}
							if($key2 == 1)
							{
								$campo[0]->opcion[$keyk] = $valore2;
							}

                    	}
                    }
             }
        	}
        }


		$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id, 'INDICADOR',396), 'select'); 
		
		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');		
		$ddr1 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULl, NULL, NULL, $id, 'VRM_DDR'), 'selectOne');
		$ddr = ''; 
		if (isset($ddr1)) {
		   $ddr = $ddr1->valor; 
    	}
	  $campo[1]  = new stdClass();	
	  if (empty($editables)) 
	  {
          	for ($i=0; $i <= 100 ; $i++) { 
	          	$campo[1]->valor[$i] = $i;
				$campo[1]->opcion[$i] = $i;
	  		}
      }
      else 
      {
	 	  foreach ($editables as $key => $editar)
		  {
    		if (!empty($editar->opciones))
	  		{
                $valores = [] ;
                $valores = explode('^', $editar->opciones);
                foreach ($valores as $key2 => $valore)
                    { 
                    $valores2 = explode('|', $valore);
                    foreach ($valores2 as $keyk => $valore2)
                    	{
                    		
                    		if($key2 == 0)
							{
								$campo[1]->valor[$keyk] = $valore2;
							}
							if($key2 == 1)
							{
								$campo[1]->opcion[$keyk] = $valore2;
							}

                    	}
                    }
             }
        	}
        }

		return view('/led/led_score_vrm')->with(compact(['contrap', 'score','campo','ddr'])); 
	}

	public static function scoreVRMUpdate(){				
		$id 	 = Request::input('contraparte');
		$score = ('' != Request::input('score')) ? Request::input('score') : NULL;
		$ddr = ('' != Request::input('ddr')) ? Request::input('ddr') : NULL;
		$prod = Request::input('producto');
		$cliente = Request::input('cliente');

		$contrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');		
		//$cliente->cliente; 

		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', '384', $score), 'selectOne');

		/* Para solicitar DDR, vemos si cambió el valor, para hacer la parte de generación del segundo set de documentos */
		if (!empty($ddr)){

			$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $id, NULL, NULL, NULL, NULL), 'selectOne');
			$solicitar_ddr_ant = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', 
				                 array('indicadores_contraparte_gestion', null, null, null, $id,
								 'VRM_DDR', 
								 NULL,
								 null,
								 null,
								 null,
								 null,
								 1,
								 null, 
								 0,
								 $datosgestion->desde)
							     , 'selectOne');
			
			if (empty($solicitar_ddr_ant->valor) || $solicitar_ddr_ant->valor !== $ddr){
			
				if ($ddr == 'SI'){
					$solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('ALTA',$id,Session::get('usuario')->user_id), 'selectOne');
				}

				if ($ddr == 'NO'){
					$solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('BAJA',$id,Session::get('usuario')->user_id), 'selectOne');
				}
			}
		}		

		$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', '396', $ddr), 'selectOne');
		$ir_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',null,$id,null), 'selectOne');

		$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array('Solicitar DDR: SI', $cliente, 'CAMBIO_INDICADOR_396','BACK', $id,Session::get('usuario')->user_id),'selectOne');

		return "true"; 
	}

	public static function worldcheckAmlScoreUpdate(){
		$id = Request::input('contraparte');
		$indice = Request::input('indicador') ?? null;
		//-----
		if ( $indice == null){
			$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente',array($id),'select');
		}
		//----
		else{
			$editables = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'INDICADOR',$indice), 'select'); 
		}
		//---
		foreach ($editables as $key => $valor){
			$indicador = $valor->indicador;
			$valor_indicador = $_POST[$valor->clave_indicador];
			//-----
			if ( $indicador == 396 && $valor_indicador !== ''){
				$datosgestion = SQLConnection::backendStoreProcedure('LN_gestiones_', array('verificar_gestion_activa', NULL, NULL, $id, NULL, NULL, NULL, NULL), 'selectOne');
				$solicitar_ddr_ant = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte_gestion', null, null, null, $id,'VRM_DDR', NULL,null,null,null,null,1,null, 0,$datosgestion->desde), 'selectOne');
				//----
				if (empty($solicitar_ddr_ant->valor) || $solicitar_ddr_ant->valor !== $valor_indicador)
				{
					if ($valor_indicador == 'SI')
					{
					$solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('ALTA',$id,Session::get('usuario')->user_id), 'selectOne');
					}
					if ($valor_indicador == 'NO')
					{
					$solicitar_ddr = SQLConnection::backendStoreProcedure('LN_contraparte_sub_docs', array('BAJA',$id,Session::get('usuario')->user_id), 'selectOne');
					}
				}
			}
			$update = SQLConnection::backendStoreProcedure('LN_indicadores_manual_cliente', array($id,'UPDATE', $indicador, $valor_indicador), 'selectOne');
			$ir_queue = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert',null,$id,null), 'selectOne');
			$cliente = Request::input('cliente');
			$trazabilidad = SQLConnection::backendStoreProcedure('insertar_trazabilidad', array($valor->nombre_indicador . ': ' . $valor_indicador, $cliente, 'CAMBIO_INDICADOR_'.$indicador,'BACK', $id,Session::get('usuario')->user_id),'selectOne');
		}
		//--
	} 

	
	public static function ledBalancesReportes() {
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL,0), 'select');
		$sectores = SQLConnection::backendStoreProcedure('sectores_clae',array(), 'select');
		$productos = SQLConnection::backendStoreProcedure('productos_led',array(), 'select');

		$anio = $Year = date("Y");
		$anio1 = $anio - 10;
		$anio2 = $anio - 5;

		return view('/led/led_balances_reportes')->with(compact(['clientes','sectores','productos','anio1','anio2','anio']));

	}


	public function ledBalancesReportesResultado(){
		$anio   = Request::input('anio');
		$sector = Request::input('sector');
		$cliente = Request::input('cliente');
		$producto = Request::input('producto');
		$pais = Request::input('pais');
		$indice = Request::input('indice');
		if (empty($pais) || $pais=='0')  { $pais = null;}
		if (empty($producto)  || $producto==0)  { $producto = null;}
		if (empty($cliente) || $cliente==0 ) { $cliente = null; $producto = null;}
		if (empty($sector)  || $sector==0)  { $sector = null;}
		$anio1 = $anio;
		$anio2 = $anio+1;
		$anio3 = $anio+2;
		$anio4 = $anio+3;
		$anio5 = $anio+4;
		$params = array($anio,$cliente,$producto,$sector,$pais,$indice);
		$registros  = SQLConnection::backendStoreProcedure('balances_reporte',$params,'select');

		return view('/led/tabla_led_balances_reportes')->with(compact('registros','anio1','anio2','anio3','anio4','anio5'));	
	}

	public function impeStatus(){
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL,73), 'select');
		return view('/led/led_impe_status')->with(compact('clientes'));	
	}


	public function impeStatusBuscar(){
		$cliente = Request::input('cliente') ?? 0;
		$registros = SQLConnection::backendStoreProcedure('LN_impe_status_datos', array('select',$cliente), 'select');
		foreach ($registros as $key => $value) {
			$registros[$key]->hasta = null; 
			if ($registros[$key]->dias == 0)
			{
				$registros[$key]->hasta = 0; 
			}
			else 
			{
				if (isset($registros[$key+1]->dias))
				{
					$registros[$key]->hasta = $registros[$key+1]->dias; 
				}
				else 
				{
					$registros[$key]->hasta	= '365';
				}
			}	
		}
		return view('/led/led_impe_status_tabla')->with(compact('registros','cliente'));	
	}

	public function impeStatusGrabar()
	{
		$cliente = Request::input('cliente') ?? 0;
		$datos    = Request::input('datos') ?? [];
		foreach ($datos as $key => $row) {
		    if ($row["desde"]=='' && $row["hasta"]=='')
		    {
		    	unset($datos[$key]);
		    }
		}

		foreach ($datos as $key => $row) {
			    $aux[$key] = $row["hasta"];
			}
		array_multisort($aux, SORT_DESC, $datos); /* En ln_cliente_nivel se guardan ordenados los atrasos de mayor a menor */
												  /* Todo al dia, se guarda como 100 */

		$baja = SQLConnection::backendStoreProcedure('LN_impe_status_datos', array('borrar',$cliente), 'select');

		foreach ($datos as $key => $row) {
			if ($row["desde"]==0 && $row["hasta"]==0) 
				{ $puntos = 100; } 
			else 
				{ $puntos = $key+1; }
			$params = 	array(
						'grabar',
						$cliente,
						$puntos,
						$row["desde"],
						$row["hasta"],
						$row["texto"],
						$row["color"]); 
			
			$alta = SQLConnection::backendStoreProcedure('LN_impe_status_datos',$params, 'select');
		}

	}




	public static function ledEmailsUsuarios() { 
		$clientes = SQLConnection::backendStoreProcedure('LED_Clientes', array('SELECT',NULL,NULL,NULL,NULL,0), 'select');
		return view('/led/led_emails_usuarios')->with(compact(['clientes']));
	}

	public static function ledEmailsUsuariosUsuarios() {
		$cliente = Request::input('cliente');
		$servicio_contratado = Request::input('servicio_contratado');
		$contrap = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('cliente',$cliente,null,$servicio_contratado), 'select');
		return view('/led/led_emails_usuarios_usu')->with(compact(['contrap','cliente']));
	}

public static function ledEmailsEnviarUsuarios() {

		$total = 0;
		$error = 0;
		$correctos = []; 
		$errores = []; 
    	$asunto = Request::input('asunto'); 
    	$texto = Request::input('texto'); 
		

	
		if(!empty(Request::input('usuario'))) {

			foreach (Request::input('usuario') as $k => $usuario) {

				$hoy = new DateTime('today');
				$texto_adicional = '';
				$dataprov = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('usuario',null,$usuario), 'selectOne'); 

				$nombre_persona = $dataprov->first_name . ' ' . $dataprov->last_name;
				$username = $dataprov->username;
				$password = $dataprov->password;
				$texto_new = $texto;
				if ($password == '@encripted') 
					{ 
					$password = 'La definida previamente por usted'; 
				    $texto_new = str_replace('Pass provisoria (deberá cambiarla luego del primer acceso):', 'Pass:', $texto_new);  
					}
            	$texto_new    = str_replace(['%%nombre_apellido%%', '%%usuario%%', '%%password%%'], [$nombre_persona, $username, $password], $texto_new);   
            	$content  = [];   
            	$content['texto'] = $texto_new; 

				$from = 'servicio@fidelitas.com.ar';
				$to = trim($dataprov->email);
				$to = str_replace(' ','',$to);
                $to = str_replace(';',',',$to);
				$to_array = []; 
                $to_array = explode(",", trim($to));

				//$to = 'marita.soria@gmail.com';
				$cc = ''; 
				
				$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
				//$bcc = 'soporte@fidelitas.com.ar';
				$attach = env('PATH_COMPARTIDO') . '/Manual del Usuario LED - Arcor.pdf';
				//var_dump($attach); die(); 
				$replyto = 'soporteled@fidelitas.com.ar';

				$error = 0;
				foreach ($to_array as $key => $to1) {
					if (!filter_var($to1, FILTER_VALIDATE_EMAIL))
						{ $error = 1; break;}
				}  
				
				if ($error == 0) {
				//if (filter_var_array($to_array, FILTER_VALIDATE_EMAIL)) {	
					Misc::enviarMailLED('/led/led_email_mail_usuarios' , $from, $to_array, $bcc, $replyto, $content, $asunto, $attach, '', $cc);
          			$correctos[$total] = new stdClass(); 
          			$correctos[$total]->contraparte = trim($username); 
          			$correctos[$total]->mail = $to_array; 
					$total++;
				}
				else { 
					$errores[$error] = new stdClass(); 
					$errores[$error]->contraparte = trim($username); 
					$errores[$error]->mail = $to_array; 
					$error++;
				}
			}
		}
		$titulo = 'Usuario';
		return view('/led/led_emails_enviados')->with(compact(['total','correctos','error','errores','titulo']));
	}


	public static function ledEmailsEnviarUsuarios14012025() {

		$total = 0;
		$error = 0;
		$correctos = []; 
		$errores = []; 
    	$asunto = Request::input('asunto'); 
    	$texto = Request::input('texto'); 
		

	
		if(!empty(Request::input('usuario'))) {

			foreach (Request::input('usuario') as $k => $usuario) {

				$hoy = new DateTime('today');
				$texto_adicional = '';
				$dataprov = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('usuario',null,$usuario), 'selectOne'); 

				$nombre_persona = $dataprov->first_name . ' ' . $dataprov->last_name;
				$username = $dataprov->username;
				$password = $dataprov->password;
				$texto_new = $texto;
				if ($password == '@encripted') 
					{ 
					$password = 'La definida previamente por usted'; 
				    $texto_new = str_replace('Pass provisoria (deberá cambiarla luego del primer acceso):', 'Pass:', $texto_new);  
					}
            	$texto_new    = str_replace(['%%nombre_apellido%%', '%%usuario%%', '%%password%%'], [$nombre_persona, $username, $password], $texto_new);   
            	$content  = [];   
            	$content['texto'] = $texto_new; 

				$from = 'servicio@fidelitas.com.ar';
				$to = trim($dataprov->email);
				//$to = 'marita.soria@gmail.com';
				$cc = ''; 
				
				$bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
				//$bcc = 'soporte@fidelitas.com.ar';
				$attach = env('PATH_COMPARTIDO') . '/Manual del Usuario LED - Arcor.pdf';
				//var_dump($attach); die(); 
				$replyto = 'soporteled@fidelitas.com.ar';
				if (filter_var($to, FILTER_VALIDATE_EMAIL)) {
					Misc::enviarMailLED('/led/led_email_mail_usuarios' , $from, $to, $bcc, $replyto, $content, $asunto, $attach, '', $cc);
          			$correctos[$total] = new stdClass(); 
          			$correctos[$total]->contraparte = trim($username); 
          			$correctos[$total]->mail = $to; 
					$total++;
				}
				else { 
					$errores[$error] = new stdClass(); 
					$errores[$error]->contraparte = trim($username); 
					$errores[$error]->mail = $to; 
					$error++;
				}
			}
		}
		$titulo = 'Usuario';
		return view('/led/led_emails_enviados')->with(compact(['total','correctos','error','errores','titulo']));
	}




	public static function ledReporteCumplimiento() {	
		$cliente = Request::input('cliente');
		$servicio = Request::input('servicio') ?? NULL;

		$servicios = [];
		$servicios = SQLConnection::backendStoreProcedure('usuarios_restricciones_', array('servicios',$cliente), 'select');

		if ($servicio == NULL) 
		{
			foreach ($servicios as $key => $value) {
				if ($value->producto == 47 )
				{
			 	$servicio = 47; 
				}
				if ($value->producto == 73 )
				{
			 		unset($servicios[$key]); 
				}
			}
		}	
		if ($servicio == NULL) 
		{
			$servicio = $servicios[0]->producto ?? null; 
		}
		
		$reporte = [];
		$cli = [];

		if ($servicio !== NULL)
		{
			$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',Request::input('cliente'),NULL,NULL,NULL, $servicio), 'selectOne');
			$reporte = SQLConnection::backendStoreProcedure('Reporte_cumplimiento', array($cliente,$servicio), 'select');	
		}
		return view('/led/led_reporte_cumplimiento')->with(compact(['servicios','servicio','reporte','cli']));		
	}


	public static function ledReporteCumplimientoData() {	
		$cliente = Request::input('cliente');
		$servicio = Request::input('servicio');
		$reporte = [];
		$reporte = SQLConnection::backendStoreProcedure('Reporte_cumplimiento', array($cliente,$servicio), 'select');	
		return view('/led/led_reporte_cumplimiento_tabla')->with(compact(['reporte']));
	}

	/*---------------------------------*/
	/* ANALISIS DD - DEBIDA DILIGENCIA */
 	/*---------------------------------*/

	public static function ledContraparteDD() {
		$id = Request::input('contraparte');
		$hay_archivo = false; 
		$cdata = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');
		$infdd_file = '';
		$infdd_url  = '';
		if( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/dd.pdf') )  {
			$infdd_file = $id . '.pdf';
			$infdd_url = env('RUTA_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/dd.pdf?v='.(rand());
		}

		$hay_archivo = false; 
		if( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/dd.pdf') )  {
			$hay_archivo = true; 
		}
		
		$vista = \View::make('/led/led_debida_diligencia')->with(compact(['cdata', 'infdd_file', 'infdd_url','hay_archivo']));
		return $vista;
	}


	public static function ledContraparteDDDelete() {
		$id = Request::input('contraparte');
		$cdata = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');		
		IF( file_exists($path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/dd.pdf') )  {
			  unlink( env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/dd.pdf' );
		}	
		return self::ledContrapartes($cdata->cliente); 

	}

	public static function ledContraparteDDUpdate() {
		$id 	 = Request::input('contraparte');
		$cdata = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, Session::get('usuario')->user_id), 'selectOne');		
	  	$modo = (null != Request::input('modoupload')) ? Request::input('modoupload') : 'R';
	  
		if (!empty($_FILES['archivo_infdd']) && $_FILES['archivo_infdd']['name'] !== '') {
			$userfile_name = $_FILES['archivo_infdd']['name'];
			$userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);
			$ftype = strtolower($userfile_extn); 
			if($ftype == 'pdf') {
				if( basename($_FILES['archivo_infdd']['name']) !='' ) {
					if ($modo=="R")
					{
			      $path = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/dd.pdf';
						$ftype = strtolower(pathinfo($path,PATHINFO_EXTENSION));
						if(!is_dir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion)){
						   mkdir(env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion, 0777,true);
				    }
					  move_uploaded_file($_FILES['archivo_infdd']['tmp_name'], $path);
						chmod($path, 0777);
					}
					else 
					{
						// Archivo preexistente - Modo append 
		      	$path  = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/dd.pdf';
						$path2 = env('PATH_DOCUMENTOS') . '/' . $cdata->cliente . '/' . $id . '/' . $cdata->gestion . '/dd' . '_merge.pdf';
					  if (move_uploaded_file($_FILES['archivo_infdd']['tmp_name'], $path2))
					  {
						
						chmod($path2, 0777);														
						$joinedpdf = PdfMerger::init();
                        $joinedpdf->addPDF($path, 'all');
                        $joinedpdf->addPDF($path2, 'all');
                        $joinedpdf->merge('file');
                        $joinedpdf->save($path);
					  } 
					}
				}
			}
		}

		return "true"; 
	}
 	/*-----------------------*/



 	public static function ledDocumentosContraparte() {

 		// Busca documentos Verificados 
 		$docs = [];
 		$secciones = [];
 		$data = [];
 		$documento = [];
 		
		$contraparte = Request::input('contraparte');
 		$docs = SQLConnection::backendStoreProcedure('LN_docs_', array('search', null, null, $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, null), 'select');
		foreach ($docs as $key => $doc) {
			if ($doc->estado_doc !== 'V')
			{
				continue;
			}

			$docid = $doc->doc_id; 

			$temp = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('GENERATE', $docid, null, null, null, null, null, null, null, null), 'select');
			$documento[$docid] = 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');
			
			$secciones[$docid] = [];

			$data[$docid] = [];
			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;

					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[$docid][$fld->titulo_seccion][] = $fld;

			if ($fld->titulo_seccion != '') {
				$secciones[$docid][$fld->titulo_seccion]['texto_bajada'] = $fld->texto_bajada;
				$secciones[$docid][$fld->titulo_seccion]['texto_pie'] = $fld->texto_pie;
			}
			}
		}

		//var_dump($data); die(); 

		return view('/led/led_doc_detail')->with(compact(['docs', 'documento', 'data', 'secciones']));
		
	}
}