<?php namespace App\Http\Controllers;

use App\Custom\SQLConnection; 
use App\Custom\Misc;
use App\Custom\Mailer;
use App\Http\Controllers\AFIPController;
use Request;
use Session;
use DateTime;
use Illuminate\Support\Facades\Input;
use DB;
use stdClass;

// use Illuminate\Session\TokenMismatchException;

class LEDController extends Controller
{
    public static function ledDashboard() {
      $cliente = Session::get('usuario')->cliente['client_id'];
      $qcontrap = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('search',null,null,$cliente,null,1,null,null,null,null,null,null,null,null,null));
      $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_GRILLA', $cliente, null, null, null), 'select');
      $tiene_informe_comercial = 0;   
      $tiene_balances          = 0;
      $tiene_docs              = 0;
      $tiene_score_final       = 0;
      $tiene_fidecheck         = 0;
      $tiene_score_dossier     = 0;
      $tiene_dep_econ          = 0;
      $tiene_control_ingreso   = 0;

      foreach ($productos as $i => $prod) {

        if($prod->producto_id == 'informeComercial') {
          $tiene_informe_comercial = ($tiene_informe_comercial == 0) ? 1 : $tiene_informe_comercial;
        }
        if($prod->balance > 0) {
          $tiene_balances = ($tiene_balances == 0) ? 1 : $tiene_balances;       
        }
        if($prod->documentos > 0) {
          $tiene_docs = ($tiene_docs == 0) ? 1 : $tiene_docs;       
        }
        if($prod->producto_id == 'scorefinal') {
          $tiene_score_final = ($tiene_score_final == 0) ? 1 : $tiene_score_final;
        }
        if($prod->producto_id == 'fidecheck') {
          $tiene_fidecheck = ($tiene_fidecheck == 0) ? 1 : $tiene_fidecheck;
        }
        //nuevos graficos pato
        if($prod->producto_id == 'Dossier') {
          $tiene_score_dossier = ($tiene_score_dossier == 0) ? 1 : $tiene_score_dossier;
        }

        if($prod->producto_id == 'dependEconomica') {
          $tiene_dep_econ = ($tiene_dep_econ == 0) ? 1 : $tiene_dep_econ;
        }

        if($prod->producto_id == 'homologacion') {
          $tiene_control_ingreso = ($tiene_control_ingreso == 0) ? 1 : $tiene_control_ingreso;
        }
      }

      $graf_inf_com          = [];
      $graf_score_bal        = [];
      $graf_score_doc        = [];
      $graf_score_final      = [];
      $graf_fidecheck        = [];
      $graf_score_dossier    = [];
      $graf_dep_econ         = [];
      $graf_control_ingreso  = [];


      if($tiene_informe_comercial > 0) {
        $graf_inf_com = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_INFORME_COMERCIAL', $cliente, null, null,  null), 'select');
      }

      if($tiene_balances > 0) {
        $graf_score_bal = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_BALANCE', $cliente, null, null, null), 'select');
      }

      if($tiene_docs > 0) {
        $graf_score_doc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_DOCUMENTOS', $cliente, null, null, null), 'select');
      }

      if($tiene_score_final > 0) {
        $graf_score_final = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_FINAL', $cliente, null, null, null), 'select');     
      }

      if($tiene_fidecheck > 0) {
        $graf_fidecheck = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_FIDECHECK', $cliente, null, null, null), 'select'); 
        
      }
      //agregar el producto dossier (2002) al cliente
      if ($tiene_score_dossier>0) {
        $graf_score_dossier = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_SCORE_DOSSIER', $cliente, null, null, null), 'select'); 
      }

      if ($tiene_dep_econ>0) {
        $graf_dep_econ = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_DEPENDENCIA_ECONOMICA', $cliente, null, null, null), 'select');
      }

      if ($tiene_control_ingreso>0) {
        $graf_control_ingreso = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('GRAFICO_CONTROL_INGRESO', $cliente, null, null, null), 'select');
       //dd($graf_control_ingreso);
      }

      $novedades = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('novedades_monitoreo',$cliente,null,null,null), 'select');

      $navtext = 'Dashboard';

      return view('/led/led_dashboard')->with(compact(['qcontrap', 'tiene_informe_comercial', 'tiene_balances', 'tiene_docs', 'tiene_score_final', 'tiene_fidecheck', 'graf_score_final', 'graf_inf_com', 'graf_score_bal', 'graf_score_doc', 'graf_fidecheck', 'novedades', 'navtext','graf_score_dossier','tiene_score_dossier','graf_dep_econ','tiene_dep_econ','graf_control_ingreso','tiene_control_ingreso']));
    }


    public static function ledClienteProductos() 
    {
      /*$cli = SQLConnection::backendStoreProcedure('LED_Clientes', array('select',Request::input('cliente'),NULL,NULL,NULL), 'selectOne');
      $prd = SQLConnection::backendStoreProcedure('LN_productos_', array('SEARCH', null, null, null, null, Session::get('usuario')->user_id), 'select');*/
      $led_access = DB::selectOne('EXEC dbo.LN_validar_acceso_usuario ? ,?', array(env('LED_PRODUCTO'), Session::get('usuario')->user_id));    
      $cliente = Session::get('usuario')->cliente['client_id'];

      $cli = DB::selectOne('EXEC dbo.LED_Clientes ?,?,?,?,?', array('select', $cliente, null, null, null));
      $prodcli = DB::select('EXEC dbo.LN_cliente_productos_ ?,?,?,?,?,?,?', array('search', $cliente, null, null, null, null, Session::get('usuario')->user_id));

      $navtext = "Productos";

      return view('/led/led_cliente_productos')->with(compact(['cli', 'prodcli', 'led_access', 'navtext']));
    }

    public static function ledClienteFamilias()
    {
        $cliente = Session::get('usuario')->cliente['client_id'];
        $led_access = DB::selectOne('EXEC dbo.LN_validar_acceso_usuario ? ,?', array(env('LED_PRODUCTO'), Session::get('usuario')->user_id));

        $country = DB::select('EXEC dbo.backend_obtener_paises', array());
        $cli = DB::selectOne('EXEC dbo.LED_Clientes ?,?,?,?,?', array('select', $cliente, null, null, null));
        $fams = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',null,null,$cliente,null,null,null));

        $navtext = "Familias";

        return view('/led/led_familias')->with(compact(['country', 'cli', 'fams', 'led_access', 'navtext']));
    }

    public static function ledClienteFamiliasNew() 
    {
      $cliente = Session::get('usuario')->cliente['client_id'];
      $cli = DB::selectOne('EXEC dbo.LED_Clientes ?,?,?,?,?', array('select', $cliente, null, null, null));
      $country = DB::select('EXEC dbo.backend_obtener_paises', array());

      return view('/led/led_familias_new')->with(compact(['cliente', 'cli', 'country']));
    }


    public static function ledClienteFamiliaStep()
    {
        $cliente = Request::input('cliente');
        $nombre = Request::input('nombre_familia');
        $pais = Request::input('country_code');
        $vis = Request::input('visible');
        $country = DB::select('EXEC dbo.backend_obtener_paises', array());
        $cli = DB::selectOne('EXEC dbo.LED_Clientes ?,?,?,?,?', array('select', $cliente, null, null, null));
        $prod = DB::select('EXEC dbo.LN_cliente_productos_pais ?,?', array($cliente, $pais));

        return view('/led/led_familias_step')->with(compact(['cli', 'nombre', 'pais', 'country', 'vis', 'cliente', 'prod']));
    }

    public static function ledClienteFamiliaEnd()
    {
        $rv = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('insert', null, Request::input('nombre_familia'), Request::input('cliente'), Request::input('country_code'), Request::input('visible'), Session::get('usuario')->user_id));
        $newid = $rv[0]->familia;
        foreach (Request::input('producto') as $prod) {
            $temp = DB::selectOne('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('insert', $newid, $prod, 1, Session::get('usuario')->user_id));
        }

        return redirect('/led/led-familias');
    }

    public static function ledClienteFamiliaEdit()
    {
        $cliente = Request::input('cliente');
        $fam = Request::input('familia');
        $datos = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('select',$fam,null,null,null,null,null));
        $country = DB::select('EXEC dbo.backend_obtener_paises', array());
        $prod = DB::select('EXEC dbo.LN_cliente_productos_pais ?,?', array($cliente, $datos->country_code));
        $famprod = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('search', $fam, null, null, null));

        return view('/led/led_familias_edit')->with(compact(['cliente', 'fam', 'country', 'datos', 'prod', 'famprod']));
    }

    public static function ledClienteFamiliaUpdate()
    {
        $cliente = Request::input('cliente');
        $familia = Request::input('familia');
        $nombre_familia = Request::input('nombre_familia');
        $visible = Request::input('visible');
        $country_code = Request::input('country_code');
        $productos = Request::input('producto');

        $temp = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('update',$familia,$nombre_familia,$cliente,$country_code,$visible,Session::get('usuario')->user_id));
        $qprod = DB::select('EXEC dbo.LN_cliente_productos_pais ?,?', array($cliente, $country_code));

        foreach ($qprod as $thisprod) {
            $temp = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('delete', $familia, $thisprod->producto, null, null));
        }
        foreach ($productos as $thisprod) {
            $temp = DB::selectOne('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('insert', $familia, $thisprod, 1, Session::get('usuario')->user_id));
        }

        return redirect('/led/led-familias');
    }

    public static function ledClienteFamiliaConfirm()
    {
        $cliente = Request::input('cliente');
        $familia = Request::input('familia');
        $datos = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('select',$familia,null,null,null,null,null));
        $famprod = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('search', $familia, null, null, null));

        return view('/led/led_familias_confirm')->with(compact(['cliente', 'familia', 'datos', 'famprod']));
    }

    public static function ledClienteFamiliaDelete()
    {
        $cliente = Request::input('cliente');
        $familia = Request::input('familia');
        $famprod = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('search', $familia, null, null, null));
        foreach ($famprod as $thisprod) {
            $temp = DB::select('EXEC dbo.LN_familia_productos_ ?,?,?,?,?', array('delete', $familia, $thisprod->producto, null, null));
        }
        $temp = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('delete',$familia,null,null,null,null,null));
        return redirect('/led/led-familias');
    }

    /******/

    public static function ledContraparteFamilias()
    {
        $cliente = Request::input('cliente');
        $familia = Request::input('familia');

        $datosfamilia = DB::selectOne('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('select',$familia,null,null,null,null,null));

        $qcontrap = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', null, $familia, null, null, null, null), 'select');

        return view('/led/led_contraparte_familias')->with(compact(['datosfamilia', 'qcontrap']));
    }

    /******/

    public static function ledContrapartes()
    {
        $cliente = Session::get('usuario')->cliente['client_id'];
        $led_access = DB::selectOne('EXEC dbo.LN_validar_acceso_usuario ? ,?', array(env('LED_PRODUCTO'), Session::get('usuario')->user_id));
        $qcontrap = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('search',null,null,$cliente,null,null,null,null,null,null,null,null,null,null,null));

        $navtext = "Contrapartes";
        return view('/led/led_contrapartes')->with(compact(['cliente', 'qcontrap', 'navtext']));
    }

    public static function ledContrapartesSearch()
    {
        $cliente = Request::input('cliente');
        $country = DB::select('EXEC dbo.backend_obtener_paises', array());
        return view('/led/led_contrapartes_search')->with(compact(['cliente' , 'country']));
    }

    public static function ledIdentificadoresPais()
    {
        $cc = Request::input('country_code');
        $ident = DB::select('EXEC dbo.backend_obtener_identificadores_pais '.$cc);
        return json_encode($ident);
    }

    public static function ledContrapartesBusqueda()
    {
        $country = Request::input('country_code');
        if ($country == 'AR' and env('LED_VERIFICACION_PADRON_AFIP') == true) {
            AFIPController::obtenerPadron(Request::input('numero'));
        }
        $padron = DB::select('EXEC dbo.LN_busqueda_padron ?,?', array(Request::input('identificador') , Request::input('numero')));
        return json_encode($padron);
    }

    public static function ledContrapartesNew()
    {
        $cliente =                  Request::input('cliente');
        $id_padron =                Request::input('id_padron');
        $country_code =           Request::input('country_code');
        $identificador =              Request::input('ídentificador');
        $numero =               Request::input('numero');
        $nombre_persona =         Request::input('nombre_persona');

        $padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
        $familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',null,null,$cliente,$country_code,null,null));

        /* Verifico por ID padron que no esté duplicada la contraparte dentro del LED del cliente */
        $datoscontrap = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('search',null,$id_padron,$cliente,null,1,null,null,null,null,null,null,null,null,null));
        $qcontrap = sizeof($datoscontrap);

        $datos_comerciales = '';
        $nombre_contacto =  '';
        $email_contacto =   '';
        $telefono_contacto =  '';
        $input_range =  '';
        $vigencia_desde = '';
        $vigencia_hasta = '';
        $activo =         1;
        return view('/led/led_contrapartes_new')->with(compact(['cliente', 'padron', 'familias', 'qcontrap', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo']));
    }

    public static function ledContrapartesStep()
    {
        $cliente =                  Request::input('cliente');
        $id_padron =                Request::input('id_padron');
        $datos_comerciales =          Request::input('datos_comerciales');
        $nombre_contacto =          Request::input('nombre_contacto');
        $email_contacto =           Request::input('email_contacto');
        $telefono_contacto =          Request::input('telefono_contacto');
        $vigencia_desde  =            Request::input('vigencia_desde');
        $vigencia_hasta =           Request::input('vigencia_hasta');
        $activo =                 Request::input('activo');

        $input_range =              (null !== Request::input('input_range'));

        $padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);

        $items = DB::select('EXEC dbo.LN_clasificacion_items_ ?, ?, ?, ?, ?, ?', array('SEARCH', null, null, $cliente, null, null));

        $array_items = [];
        foreach ($items as $key => $item) {
            $array_items[$item->clasificacion][] = $item;
        }

        /*print_r($array_items);
        die;
*/
        $familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',null,null,$cliente,$padron->country_code,null,null));

        return view('/led/led_contrapartes_step')->with(compact(['cliente', 'padron', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'activo', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'familias', 'array_items']));
    }

    public static function ledContrapartesBack() {

      $cliente =                  Request::input('cliente');
      $id_padron =                Request::input('id_padron');
      $datos_comerciales =          Request::input('datos_comerciales');
      $nombre_contacto =          Request::input('nombre_contacto');
      $email_contacto =           Request::input('email_contacto');
      $telefono_contacto =          Request::input('telefono_contacto');
      $activo =                 Request::input('activo');
      $input_range   =              Request::input('input_range');
      $vigencia_desde  =            Request::input('vigencia_desde');
      $vigencia_hasta =           Request::input('vigencia_hasta');
      $qcontrap =                 0;    

      $padron  = DB::selectOne('EXEC dbo.backend_obtener_id_padron '.$id_padron);
      return view('/led/led_contrapartes_new')->with(compact(['cliente', 'padron', 'qcontrap', 'datos_comerciales', 'nombre_contacto', 'email_contacto', 'telefono_contacto', 'input_range', 'vigencia_desde', 'vigencia_hasta', 'activo']));
    }


    public static function ledContrapartesInsert() {

      $cliente =                  Request::input('cliente');
      $id_padron =                Request::input('id_padron');
      $datos_comerciales =          Request::input('datos_comerciales');
      $nombre_contacto =          Request::input('nombre_contacto');
      $email_contacto =           Request::input('email_contacto');
      $telefono_contacto =          Request::input('telefono_contacto');
      $activo =                 Request::input('activo');
      $input_range   =              Request::input('input_range');
      if($input_range == 1) {
        $vigencia_desde =           date_create_from_format('!d/m/Y', Request::input('vigencia_desde'));
        $vigencia_hasta =             date_create_from_format('!d/m/Y', Request::input('vigencia_hasta'));
        
      }
      else {
        $vigencia_desde =           new DateTime('today');
        $vigencia_hasta =             date_create_from_format('!d/m/Y', '31/12/2099');

      }
      $familias =               ( null != Request::input('familia') ) ? Request::input('familia') : [];
      $items =                  ( null != Request::input('item') ) ? Request::input('item') : [];

      $clave = Misc::generateRandomString(6);

      $thiscontr = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('insert', NULL, $id_padron, $cliente, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, $clave, $vigencia_desde, $vigencia_hasta, Session::get('usuario')->user_id));

      foreach ($items as $key => $item) {
        $temp = DB::selectOne('EXEC dbo.LN_contraparte_clasificacion_ ?,?,?', array('insert', $thiscontr->contraparte, $item));
      }

      foreach ($familias as $ix => $fam) {
        $temp = DB::selectOne('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('insert', $thiscontr->contraparte, $fam, NULL, 'N', 1, Session::get('usuario')->user_id));
      }

      $gest = DB::selectOne('EXEC dbo.LN_gestiones_    ?,?,?,?,?,?,?,?', array('insert', null, null, $thiscontr->contraparte, $vigencia_desde, $vigencia_hasta, null, Session::get('usuario')->user_id));

      /* Antes de actualizar el legajo por primera vez pongo a la contraparte en estado de carga inicial */
      $temp = DB::selectOne('update LN_contrapartes set carga_inicial = 1 WHERE contraparte = ' . $thiscontr->contraparte);

      /* Generación de los documentos, todos con la tolerancia de carga inicial */
      $temp = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($thiscontr->contraparte, $gest->gestion, Session::get('usuario')->user_id));

      $dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $thiscontr->contraparte, null, null, null, null, null, null, null, NULL, NULL, null, null, null, Session::get('usuario')->user_id));

      /* Evalúo si la contraparte tiene asociado el producto balances */
      $tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $thiscontr->contraparte);


      /* Consulto todos los indicadores de cálculo automático que le corresponden por asociación de producto y familias, para calcularlos por primera vez */
      $indicadores = SQLConnection::backendStoreProcedure('LN_contraparte_indicadores_', array('status', $thiscontr->contraparte), 'select');
      foreach ($indicadores as $r_indic) {
        switch ($r_indic->clave_indicador) {

          /* Score de informe comercial */
          case 'SCORE_IC':
            if($tiene_balance->balance > 0) {
              $score_informe = self::actualizarScoreComercialSinBalance($thiscontr->contraparte);
            }
            else {
              $score_informe = self::actualizarScoreComercialConBalance($thiscontr->contraparte);
            }
            break;
          
          /* Novedades de monitoreso */
          case 'ULTIMA_NOVEDAD':
            if ($dataprov->country_code == 'AR') {
              $f = date('Y-m-d');
              $hoy = Datetime::createFromFormat('Y-m-d', $f);
              $fecha_limite_monitoreo = date_add($hoy, date_interval_create_from_date_string("1 year"));
              
              $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 6, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
              $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 9, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
              $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 10, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
              $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 18, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');

              self::actualizarMonitoreo($thiscontr->contraparte);
            }
            break;

          
          /* Documentos */
          case 'CUMPL_DOC':
            self::actualizarCumplimientoDocumentos($thiscontr->contraparte);        
            break;
          case 'SCORE_DOC':
            self::actualizarCumplimientoDocumentos($thiscontr->contraparte);
            break;

          /* Balances */
          case 'SCORE_BAL':
            self::actualizarScoreBalance($thiscontr->contraparte);
            /* Estos van por suscripción específica al cliente */
            self::actualizarIndicadoresBalance($thiscontr->contraparte);
            break;

          /* Subcontratistas */
          case 'SUBCONT':
            self::actualizarSubcontratistas($dataprov->contraparte);
            break;

          /* Fidecheck */
          case 'SCORE_FIDECHECK':
            self::actualizarFidecheck($dataprov->contraparte);
            break;

          /* Alertas BCRA */
          case 'CHEQUES_RECH':
          case 'SITUACION_CD':
            self::actualizarAlertasBCRA($dataprov->contraparte);
            break;

          case 'SCORE_JUDICIAL':
            self::actualizarScoreJudicial($dataprov->contraparte);
            break;

          /* Control de ingreso - homologación */
          case 'CTRL_ETICO';
            self::actualizarControlEtico($dataprov->contraparte);
            break;
          case 'CTRL_CALIDAD';
            self::actualizarControlCalidad($dataprov->contraparte);
            break;
          case 'CTRL_COMERCIAL';
            self::actualizarControlComercial($dataprov->contraparte);
            break;
          case 'HOMOLOG':
            self::actualizarHomologacionSubcontratista($dataprov->contraparte);             
            break;

          /* Recomendador de crédito */
          case 'LC_DIAS_VENTAS':
          case 'LC_RENTABILIDAD':
          case 'LC_RENTABILIDAD_FECHA':
            self::actualizarRentabilidadOperativa($dataprov->contraparte);                        
            break;

          /* Dependencia Económica Calculada */
          case 'DEP_ECON_CALC':
            self::actualizarDependenciaEconomica($dataprov->contraparte);             
            break;

          /* Score final */
          case 'SCORE_FINAL':
            self::actualizarScoreFinal($thiscontr->contraparte);
            break;

        }
      }







      /* Cálculo de Scores /
      if($tiene_balance->balance > 0) {
        $score_balance = self::actualizarScoreBalance($thiscontr->contraparte);
        $score_informe = self::actualizarScoreComercialSinBalance($thiscontr->contraparte);
      }
      else {
        $score_informe = self::actualizarScoreComercialConBalance($thiscontr->contraparte);
      }

      self::actualizarScoreDocumentos($thiscontr->contraparte);
      self::actualizarCumplimientoDocumentos($thiscontr->contraparte);
      self::actualizarScoreFinal($thiscontr->contraparte);
      /* Fin cálculo de Scores */

      /* Agregado en monitoreo de secciones fijas: 6 9 10 18 /
      if ($dataprov->country_code == 'AR') {
        $f = date('Y-m-d');
        $hoy = Datetime::createFromFormat('Y-m-d', $f);
        $fecha_limite_monitoreo = date_add($hoy, date_interval_create_from_date_string("1 year"));
        
        $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 6, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 9, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 10, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
        $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($dataprov->numero, Session::get('usuario')->user_id, $cliente, 18, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');

        self::actualizarMonitoreo($thiscontr->contraparte);
      }

      $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla',$cliente,null,null,$dataprov->contraparte), 'select');
      foreach ($productos as $key => $prod) {

        if ($prod->producto_id == 'subcontratistas') {
          self::actualizarSubcontratistas($dataprov->contraparte);        
        }

        if ($prod->producto_id == 'homologacion') {
          self::actualizarControlEtico($dataprov->contraparte);
          self::actualizarControlCalidad($dataprov->contraparte);
          self::actualizarControlComercial($dataprov->contraparte);
          self::actualizarHomologacionSubcontratista($dataprov->contraparte);             
        }

        if ($prod->producto_id == 'dossierdemo') {
          self::actualizarDossierDemo($dataprov->contraparte);
        }

        if ($prod->producto_id == 'fidecheck') {
          self::actualizarFidecheck($dataprov->contraparte);
        }

        if ($prod->producto_id == 'alertas' AND $dataprov->country_code == 'AR') {
          self::actualizarAlertasBCRA($dataprov->contraparte);
        }

        if ($prod->producto_id == 'dependEconomica') {
          self::actualizarDependenciaEconomica($dataprov->contraparte);
        }

        if ($prod->producto_id == 'recomendadorCredito') {
          //
        }

      }*/

      if (null !== Request::input("enviar_mail_alta")) {
        if (Request::input("enviar_mail_alta") == 1) {

          /** Chanchada para cambiar el nombre del cliente en caso de ser AMX **/
          $ncliente = $dataprov->nombre_cliente;
          if($dataprov->cliente == 5546348) {
            $ncliente = ($dataprov->country_code == 'PY') ? 'AMX PARAGUAY S.A.' : ( ($dataprov->country_code == 'UY') ? 'AM Wireless Uruguay S.A.' : $dataprov->nombre_cliente );
          }

          /* send mail */
          $content = array('nombre_cliente' => $ncliente,
                        'nombre_persona' => $dataprov->nombre_persona,
                        'abreviatura' => $dataprov->abreviatura,
                        'numero' => $dataprov->numero,
                        'nombre_contacto' => $nombre_contacto,
                        'email_contacto' => $email_contacto,
                        'country_code' => $dataprov->country_code,
                        'country_name' => $dataprov->country_name,
                        'clave' => $clave,
                        'clave_expira' => $dataprov->clave_expira,
                        'url' => env('LED_WEB_PROVEEDOR_URL') );

          $from = 'servicio@fidelitas.com.ar';
          $to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : trim($dataprov->email_contacto);
          $bcc = (env('LED_TEST_MODE') == true) ? NULL : 'soporteled@fidelitas.com.ar';
          $replyto = 'soporteled@fidelitas.com.ar';
          Misc::enviarMailLED('/led/led_contrapartes_email' , $from, $to, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Alta de contrapartes");

        }
      }

      return redirect('/led/led-contrapartes');

    }

    public static function ledContrapartesEdit() {
      $cliente =                  Request::input('cliente');
      $contraparte =              Request::input('contraparte');

      $thiscontr = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
      $familias = DB::select('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('ALL', $contraparte, NULL, NULL, NULL, NULL, NULL));


      $items = DB::select('EXEC  dbo.LN_contraparte_clasificacion_ ?, ?, ?', array('all', $contraparte, null));
      $array_items = [];
      foreach ($items as $key => $item) {
        $array_items[$item->clasificacion][] = $item;
      }

      return view('/led/led_contrapartes_edit')->with(compact(['cliente', 'contraparte', 'thiscontr', 'thisfam', 'familias', 'array_items']));
    }

    public static function ledContrapartesUpdate() {

      $cliente =                  Request::input('cliente');
      $contraparte =              Request::input('contraparte');
      $datos_comerciales =          Request::input('datos_comerciales');
      $nombre_contacto =          Request::input('nombre_contacto');
      $email_contacto =           Request::input('email_contacto');
      $telefono_contacto =          Request::input('telefono_contacto');
      $activo =                 Request::input('activo');
      $vigencia_desde =           date_create_from_format('!d/m/Y', Request::input('vigencia_desde'));
      $vigencia_hasta =             date_create_from_format('!d/m/Y', Request::input('vigencia_hasta'));
      $items =                  (null != Request::input('item')) ? Request::input('item') : [];
      $familias =               (null != Request::input('familia')) ? Request::input('familia') : [];

      /*print_r($vigencia_desde);
      print_r($vigencia_hasta);
      die;*/

      $thiscontr = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
      $temp = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('update', $contraparte, NULL, NULL, $datos_comerciales, $activo, $nombre_contacto, $email_contacto, $telefono_contacto, NULL, NULL, NULL, $vigencia_desde, $vigencia_hasta, Session::get('usuario')->user_id));


      /* actualizar clasificaciones */
      $todositems = DB::select('EXEC dbo.LN_clasificacion_items_ ?, ?, ?, ?, ?, ?', array('SEARCH', null, null, $cliente, null, null));
      $asignados = DB::select('EXEC  dbo.LN_contraparte_clasificacion_ ?, ?, ?', array('search', $contraparte, null));

      $asignar = [];
      $eliminar = [];

      foreach ($items as $k1 => $item) {
        $found = false;
        foreach ($asignados as $k2 => $itm) {
          if($itm->item == $item) {
            $found = true;
            break;
          }
        }
        if(!$found) {
          $asignar[] = $item;
        }
      }

      foreach ($asignados as $k2 => $asig) {
        $found = false;
        foreach ($items as $k3 => $itm) {
          if($itm == $asig->item) {
            $found = true;
            break;
          }
        }
        if(!$found) {
          $eliminar[] = $asig->item;
        }
      }

      foreach ($asignar as $esteitem) {     
        $temp = DB::selectOne('EXEC dbo.LN_contraparte_clasificacion_ ?,?,?', array('insert', $contraparte, $esteitem));
      }
      foreach ($eliminar as $esteitem) {      
        $temp = DB::selectOne('EXEC dbo.LN_contraparte_clasificacion_ ?,?,?', array('delete', $contraparte, $esteitem));
      }




      /* actualizar las familias */
      $todas = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,$thiscontr->country_code,NULL,NULL));
      $asignadas = DB::select('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('search', $contraparte, NULL, NULL, NULL, NULL, NULL));

      $asignar = [];
      $eliminar = [];


      foreach ($familias as $ix1 => $fam) {
        $found = false;
        foreach ($asignadas as $ix2 => $aa) {
          if($aa->familia == $fam) {
            $found = true;
            break;
          }
        }
        if (!$found) {
          $asignar[] = $fam;
        }
      }

      foreach ($asignadas as $ix3 => $asig) {
        $found = false;
        foreach ($familias as $ix4 => $ee) {
          if($ee == $asig->familia) {
            $found = true;
            break;
          }
        }
        if(!$found) {
          $eliminar[] = $asig->familia;
        }     
      }

      foreach ($asignar as $estafam) {      
        $temp = DB::selectOne('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('insert', $contraparte, $estafam, NULL, 'N', 1, Session::get('usuario')->user_id));
      }
      foreach ($eliminar as $estafam) {     
        $temp = DB::selectOne('EXEC dbo.LN_contraparte_familias_ ?,?,?,?,?,?,?', array('delete', $contraparte, $estafam, NULL, NULL, NULL, Session::get('usuario')->user_id));
      }

      $gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $contraparte, null, null, 1, null));

      $temp = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($contraparte, $gest->gestion,Session::get('usuario')->user_id));

      return redirect('/led/led-contrapartes');

    }

    public static function ledDocs()
    {
        $cliente =                  Request::input('cliente');
        $contraparte =              Request::input('contraparte');

        $gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $contraparte, null, null, 1, null));

        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, null));

        /*$docs = DB::select('EXEC dbo.LN_docs_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,,??', array('search', NULL, $cliente, $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $gest->gestion, NULL));*/
        $docs = SQLConnection::backendStoreProcedure('LN_docs_', array('search', null, $cliente, $contraparte, null, null, null, null, null, null, null, null, null, null, null, $gest->gestion, null), 'select');

        return view('/led/led_docs')->with(compact(['cliente', 'qcontrap', 'docs']));
    }

    public static function ledDocsDetail()
    {
        $plain = null != Request::input('plain') ? Request::input('plain') : false;

        $docid = Request::input('doc_id');

        $temp = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('GENERATE', $docid, null, null, null, null, null, null, null, null), 'select');
        $doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $docid, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
        $flds = SQLConnection::backendStoreProcedure('LN_doc_campos_', array('search', $docid, null, null, null, null, null, null, null, null), 'select');

        $hay_campos = false;
        $hay_archivo = false;
        foreach ($flds as $fld) {
            $hay_campos = !$hay_campos ? ($fld->tipo_campo != 'F' ? true : $hay_campos) : $hay_campos;
            $hay_archivo = !$hay_archivo ? ($fld->tipo_campo == 'F' ? true : $hay_archivo) : $hay_archivo;
        }

        $secciones = [];

        $data = [];
        foreach ($flds as $k => $fld) {
            if ($fld->tipo_campo=='G') {

                /* encabezados de la tabla */
                $c1 = SQLConnection::backendStoreProcedure('LN_campos_col_', array('search', $fld->campo, null, null, null, null, null, null), 'select');
                $cols=[];
                foreach ($c1 as $clm) {
                    $cols[] = $clm->etiqueta;
                }

                /* configuración de los campos y valores de la tabla */
                $c2 = SQLConnection::backendStoreProcedure('LN_doc_campos_col_', array($fld->doc_id, $fld->seccion, $fld->campo), 'select');
                $valores = [];
                foreach ($c2 as $k1 => $valor) {
                    $valores[$valor->fila][$valor->col]['valor_texto'] = $valor->valor_texto;
                    $valores[$valor->fila][$valor->col]['valor_fecha'] = $valor->valor_fecha;
                    $valores[$valor->fila][$valor->col]['valor_fecha_str'] = $valor->valor_fecha_str;
                    $valores[$valor->fila][$valor->col]['valor_numerico'] = $valor->valor_numerico;
                    $valores[$valor->fila][$valor->col]['tipo_campo'] = $valor->tipo_campo;
                    $valores[$valor->fila][$valor->col]['longitud'] = $valor->longitud;
                    $valores[$valor->fila][$valor->col]['decimales'] = $valor->decimales;

                    //$valores[$valor->fila][$valor->col]['opciones'] = $valor->opciones;

                    if ($valor->tipo_campo == 'S' or $valor->tipo_campo == 'R' or $valor->tipo_campo == 'C') {
                        if (strlen($valor->opciones) > 0) {
                            $r = explode("^", $valor->opciones);
                            $txt = [];
                            $val = [];
                            if (sizeof($r) >= 2) {
                                $txt = explode("|", $r[0]);
                                $val = explode("|", $r[1]);
                            }
                            $valores[$valor->fila][$valor->col]['opciones']['txt'] = $txt;
                            $valores[$valor->fila][$valor->col]['opciones']['val'] = $val;
                        }
                    }
                }

                $fld->headers = $cols;
                $fld->values = $valores;
            } else {

                /* campo no tabla */

                if ($fld->tipo_campo == 'S' or $fld->tipo_campo == 'R' or $fld->tipo_campo == 'C') {
                    $valores = [];

                    if (strlen($fld->opciones) > 0) {
                        $r = explode("^", $fld->opciones);
                        $txt = [];
                        $val = [];
                        if (sizeof($r) >= 2) {
                            $txt = explode("|", $r[0]);
                            $val = explode("|", $r[1]);
                        }
                        $valores[] = $txt;
                        $valores[] = $val;
                    }

                    $fld->opciones = $valores;
                }
            }

            $data[$fld->titulo_seccion][] = $fld;

            if ($fld->titulo_seccion != '') {
                $secciones[$fld->titulo_seccion]['texto_bajada'] = $fld->texto_bajada;
                $secciones[$fld->titulo_seccion]['texto_pie'] = $fld->texto_pie;
            }
        }

        if ($doc->es_balance > 0) {
            /*$file_path = env('PATH_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';
            $file_url = env('RUTA_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';      */

            $file_path = env('PATH_COMPARTIDO') . '/' . $doc->ruta_archivo;
            $file_url = env('RUTA_COMPARTIDO') . '/' . $doc->ruta_archivo;
        } else {
            $file_path = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
            $file_url = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
        }

        $file_exists = file_exists($file_path);

        //dd( strpos( $_SERVER['REQUEST_URI'], '/led/') );
        //dd($doc);

        $search_array = array( '%inicio_vigencia_fecha%' , '%fin_vigencia_fecha%' , '%inicio_vigencia_periodo%' , '%fin_vigencia_periodo%' );
        $replace_array = array( $doc->inicio_vigencia , $doc->fecha_vigencia , (null !== $doc->inicio_vigencia) ? substr($doc->inicio_vigencia, 3, 7) : null , (null !== $doc->fecha_vigencia) ? substr($doc->fecha_vigencia, 3, 7) : null );
        
        return view('/led/led_doc_detail')->with(compact(['docid', 'doc', 'data', 'secciones', 'plain', 'file_path', 'file_url', 'file_exists', 'hay_campos', 'hay_archivo', 'search_array', 'replace_array']));
    }


    /**
    calculo el score de la siguiente manera:
    Obtener la configuración( si es que existe ) y los productos para ese cliente
    si no tiene configuración se hace 100 / la cantidad de productos y se les reparte a cada producto el valor correspondiente a esa división
    Si tiene configuración y tiene más o menos productos que configuraciones, se recalcula tomando los valores de porcentaje base.
    **/
    public static function calcularScoreProductos($cliente=3920694)
    {
        $score      = SQLConnection::backendStoreProcedure('LN_score_personalizado_obtener_configuracion', array($cliente), 'select');
        $cantidad_items_score = sizeof($score);

        //dd($score);
        //  $valor  = 100 / $cantidad_items_score;
        foreach ($score as $item) {
            //  print_r($item);
                //$score  = SQLConnection::backendStoreProcedure('LN_score_personalizado_cargar_configuracion', array($cliente,$item->ponderacion,$valor), 'select');
        }
    }


    /**
     * ledPanelControlInfo() devuelve la información que va en la tabla, en formato JSON.
     *
     * @return JSON array
     */
    public static function ledPanelControlInfo()
    {
        $cliente = Session::get('usuario')->cliente['client_id'];
        $filtro_familia = null;
        $filtro_pais  = null;
        $contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('contrapartes', $cliente, $filtro_pais, $filtro_familia, null), 'select');
        $prodind = [];
        $indic = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('PRODUCTOS_INDICADORES', $cliente,null,null, null), 'select');
        foreach ($indic as $key => $idata) {
            $map = function ($idata) {
                return $idata->producto_id;
            };
            $apariciones = array_count_values(array_map($map, $indic));
            $prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;//($apariciones[$idata->producto_id] > 1) ? $idata->etiqueta_indicador : $idata->etiqueta;
            $prodind[$idata->producto_id][$idata->clave_indicador]['clave_indicador'] = $idata->clave_indicador;
            $prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;
            $prodind[$idata->producto_id][$idata->clave_indicador]['nombre_padre'] = ($apariciones[$idata->producto_id] > 1) ? $idata->etiqueta : 0;
            $prodind[$idata->producto_id][$idata->clave_indicador]['alignment'] = $idata->alignment;
            $prodind[$idata->producto_id][$idata->clave_indicador]['locked'] = ($idata->locked == 1) ? true : false;
            $prodind[$idata->producto_id][$idata->clave_indicador]['width'] = (int)$idata->width;
            $prodind[$idata->producto_id][$idata->clave_indicador]['separator'] = $idata->separator;
            $prodind[$idata->producto_id][$idata->clave_indicador]['decimals'] = $idata->decimals;
            $prodind[$idata->producto_id][$idata->clave_indicador]['buscar'] = ($idata->clave_indicador=='RAZON_SOCIAL' || $idata->clave_indicador=='FAMILIA' || $idata->clave_indicador=='PAIS') ? true: false ;
            $clave_indicador[] = $idata->clave_indicador;
            $prodind[$idata->producto_id][$idata->clave_indicador]['icono'] = $idata->class_icon;
            $prodind[$idata->producto_id][$idata->clave_indicador]['nombre_producto'] = $idata->nombre_producto;
            $prodind[$idata->producto_id][$idata->clave_indicador]['nombre_indicador'] = $idata->nombre_indicador;
        }
        $cant_hijos = count(array_unique($clave_indicador));
        $valores = [];

        $clave_indicador  = Request::input('clave_indicador');
        $valor_min        = Request::input('min');
        $valor_max        = Request::input('max');
        $contraparte        = Request::input('contraparte');
        $valor_texto      = !empty(Request::input('valor_texto')) ? Request::input('valor_texto') : NULL;
        
        //Sólo para PAE. porque el producto aún no existe.
        if ($cliente == '2046807993') {
            foreach ($prodind as $key => $value) {
                if (isset($value['NIVEL_RIESGO'])) {
                    unset($prodind[$key]['NIVEL_RIESGO']);
                }
                if (isset($value['DEP_ECON'])) {
                    unset($prodind[$key]['DEP_ECON']);
                }
            }
        }
        $titulos = $prodind;

        // Para que cuando el mínimo del rango sea 21, 41, 61, 81, etc pase al SP el valor 20.01, 41.01, etc.
        $valor_min = (null != $valor_min) ? ( ($valor_min % 10 == 1) ? $valor_min-1+0.01 : $valor_min ) : $valor_min;
        
        $vista_filtrada = false;
        if(isset($valor_min) && $valor_min || isset($valor_max) && $valor_max || isset($valor_texto) && $valor_texto || isset($contraparte) && $contraparte){
            $vista_filtrada = true;
        }
        $params = array('VALORES_GRILLA_EXT ', $cliente, $filtro_pais, $filtro_familia, $contraparte, $clave_indicador, null, null, null, null, null, null, null, $valor_min, $valor_max, $valor_texto);
        $led    = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', $params, 'select');

        // $pi     = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_fidelitasprod', array('PRODUCTOS_INDICADORES', $cliente, $filtro_pais, $filtro_familia, null), 'select');
       //print_r($led);die();
       $pi = $indic; 
       $indices = [];
       $pais    = [];
       $familia = [];
       foreach ($led as $key => $datos) {
            //valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);
            if (isset($datos->color_personalizado)) {
                $datos->color     = $datos->color_personalizado;
            }
            if (isset($datos->textcolor_personalizado)) {
                $datos->textcolor = $datos->textcolor_personalizado;
            }
            if (isset($datos->svg_data_personalizado)) {
                $datos->svg_data  = $datos->svg_data_personalizado;
            }
            
            $pais[$key]['info'] = $datos->PAIS;
            $pais[$key]['cls'] = 'flag-icon-'.$datos->PAIS;
            $pais[$key]['val'] = '<span class=flag-icon flag-icon-background flag-icon-'.$datos->PAIS.'></span>';
            
            $familia[$key]['value'] = $datos->FAMILIA;
              $valores[$datos->contraparte]['PAIS']['PAIS'] = array($datos->PAIS,'', '', '', '','');
            $valores[$datos->contraparte]['FAMILIA']['FAMILIA'] = array($datos->FAMILIA,'', '', '', '','');
            $valores[$datos->contraparte]['RAZON_SOCIAL']['RAZON_SOCIAL'] = array($datos->RAZON_SOCIAL.' <div style="display:none;">'.$datos->identificacion.'</div> <div style="display:none;" class="contrap">'.$datos->contraparte.'</div>','', '', '', '','');
            $valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->cell_data,$datos->textcaption,$datos->texto,$datos->textcolor);
        }
        $pais       = array_map("unserialize", array_unique(array_map("serialize", $pais)))     ;
        $familia    = array_map("unserialize", array_unique(array_map("serialize", $familia)   ));
        foreach ($valores as $valores_key => $valores_value) {
            foreach ($pi as $pi_key => $pi_value) {
                if (!isset($valores_value[$pi_value->producto_id][$pi_value->clave_indicador])) {
                    $valores[$valores_key][$pi_value->producto_id][$pi_value->clave_indicador][] = '';
                }
            }
        }
        //dd($valores[79]['homologacion']);
        return json_encode(['valores' => $valores,'titulos' => $titulos,'cant_hijos' => $cant_hijos,'pais' => $pais,'familia' => $familia,'vista_filtrada' => $vista_filtrada]);
    }
    /**
     * Led panel control retorna la vista, que luego consume por medio de un ajax la información del panel de control.
     *
     * @return laravel View
     */
    public static function ledPanelControl()
    {
        $cliente          = Session::get('usuario')->cliente['client_id'];
        $nombre_grafico   = Request::input('nombre_grafico');
        $all              = Request::input();
        $inicial_etiqueta = '';
        $nombre_etiqueta  = Request::input('valor_etiqueta');//ej: '0-20' , '21-40'

        $clave_indicador  = Request::input('clave_indicador');
        $valor_min        = Request::input('valor_min');
        $valor_max        = Request::input('valor_max');
        $valor_texto      = !empty(Request::input('valor_texto')) ? Request::input('valor_texto') : NULL;

        $contraparte = !empty(Request::input('contraparte')) ? ( (Request::input('contraparte') > 0) ? Request::input('contraparte') : NULL ) : NULL;

//dd(Request::input());
        $navtext = "Panel de Control - Contrapartes";

        $icon_subc = '';
        if (Session::get('usuario')->user_id=='122371307') 
        {$tiene_subc = 1; 
        $icon_subc = 'fa fa-sitemap';
        }
        else 
        { $tiene_subc = 0; } 
        return view('/led/led_panel_control')->with(compact(['navtext','tiene_subc','icon_subc', 'clave_indicador', 'valor_min', 'valor_max', 'valor_texto', 'contraparte']));
    }

    public static function test(){
        $cliente          = Session::get('usuario')->cliente['client_id'];
        $nombre_grafico   = Request::input('nombre_grafico');
        $all              = Request::input();
        $inicial_etiqueta = '';
        $nombre_etiqueta  = Request::input('valor_etiqueta');//ej: '0-20' , '21-40'
        $valor_indicador  = Request::input('indicador');
        $valor_min        = Request::input('min');
        $valor_max        = Request::input('max');
        $valor_texto      = Request::input('valor_texto');
        dd($all);
    }
    /*
        public static function ledPanelControl() {
        $cliente = Session::get('usuario')->cliente['client_id'];
        $state_save = Request::input('state_save');
        $paises = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('paises', $cliente,NULL,NULL, null), 'select');
        $familias = DB::select('EXEC dbo.LN_familias_ ?,?,?,?,?,?,?', array('search',NULL,NULL,$cliente,NULL,NULL,NULL));

        $filter_cc = null != Request::input('country_code_chk') ? 1 : 0;
        $filtro_pais = ($filter_cc > 0) ? ( null != Request::input('country_code') ? Request::input('country_code') : null ) : null;

        $filter_fam = null != Request::input('familia_chk') ? 1 : 0;
        $filtro_familia = ($filter_fam > 0) ? ( null != Request::input('familia') ? Request::input('familia') : null ) : null;


        $contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, $filtro_pais, $filtro_familia, null), 'select');

        $productos_grilla = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla', $cliente,NULL,NULL, null), 'select');


        //self::calcularScoreProductos($cliente);
        $tiene_subc = 0;
        $icon_subc = '';
        $tiene_control_ingreso = 0;

        $productos = [];
        foreach ($productos_grilla as $key => $pdata) {
            $productos[$pdata->producto_id]['etiqueta'] = $pdata->etiqueta;
            $productos[$pdata->producto_id]['producto_id'] = $pdata->producto_id;
            $productos[$pdata->producto_id]['class_icon'] = $pdata->class_icon;

            $tiene_subc = ($tiene_subc == 0) ? ($pdata->subcontratistas > 0 ? 1 : 0) : $tiene_subc;
            if($pdata->subcontratistas > 0) {
                $icon_subc = $pdata->class_icon;
            }

            $tiene_control_ingreso = ($tiene_control_ingreso == 0) ? ($pdata->control_ingreso > 0 ? 1 : 0) : $tiene_control_ingreso;
        }


        $prodind = [];
        $indic = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES', $cliente,NULL,NULL, null), 'select');

        foreach ($indic as $key => $idata) {
            $prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;
            $prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;

            $op = null;
            if(null != $idata->opciones) {
                $t1 = explode('^', $idata->opciones);
                $text = explode('|', $t1[0]);
                $values = explode('|', $t1[1]);
                $op = array('text' => $text, 'values' => $values);
            }
            $prodind[$idata->producto_id][$idata->clave_indicador]['opciones'] = $op;

        }
        //dd($prodind);


        $valores = [];
        $led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA_EXT', $cliente, $filtro_pais, $filtro_familia, null), 'select');
        foreach ($led as $datos) {
        //valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);

            if (isset($datos->color_personalizado))     $datos->color     = $datos->color_personalizado;
            if (isset($datos->textcolor_personalizado)) $datos->textcolor = $datos->textcolor_personalizado;
            if (isset($datos->svg_data_personalizado))  $datos->svg_data  = $datos->svg_data_personalizado;

            $valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption,$datos->texto);
        }

        //dd($valores[107]);

        $navtext = "Panel de Control - Contrapartes";

        $motivos_killer = [];
        $killer = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, null), 'select');
    foreach ($killer as $data) {
            $motivos_killer[$data->contraparte] = str_replace('; ',"\n",$data->detalle_killer);
    }
    //dd($motivos_killer);
        return view('/led/led_panel_control')->with(compact(['paises', 'familias', 'contrap', 'filter_cc', 'filtro_pais', 'filter_fam', 'filtro_familia', 'productos', 'tiene_subc', 'icon_subc', 'tiene_control_ingreso', 'prodind', 'valores', 'navtext','state_save','motivos_killer']));
    }

*/


    /*
        public function ledExcelPanelControl(){
            $cliente = Session::get('usuario')->cliente['client_id'];
            $ids = null != Request::input('ids') ? Request::input('ids') : null;

            //$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, null, null, null), 'select');
            $contrap = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, $ids), 'select');

            $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla', $cliente,NULL,NULL, null), 'select');
            $ind = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES', $cliente,NULL,NULL, null), 'select');


            foreach ($ind as $data) {
                $prodind[$data->etiqueta][$data->indicador]['etiqueta'] = $data->etiqueta_indicador;
                $prodind[$data->etiqueta][$data->indicador]['tipo_dato'] = $data->tipo_dato;
                $prodind[$data->etiqueta][$data->indicador]['clave_indicador'] = $data->clave_indicador;
            }
            //dd($prodind);

            foreach ($prodind as $nombre_producto => $indicadores) {
                foreach ($indicadores as $key => $data) {
                    $aind[] = $key;
                }
            }

            //dd($aind);

            $led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA', $cliente, null, null, null), 'select');
            foreach ($led as $datos) {
                //$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data);
                if(in_array($datos->indicador, $aind)) {
                    $valores[$datos->contraparte][$datos->indicador] = $datos->valor;
                }
            }
            //dd($valores);


            $file = 'PAIS' . "\t" . 'FAMILIA' . "\t" . 'RAZON SOCIAL' . "\t" . "IDENTIFICACION";

            foreach ($prodind as $nombre_producto => $ìndicadores) {
                if (!empty($ìndicadores)) {
                    //dd($ìndicadores);
                    foreach ($ìndicadores as $fld => $data_indicador) {
                        $file .= "\t" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")";
                    }
                }
                else {
                    $file .= "\t" . $nombre_producto;
                }
            }

            foreach($contrap as $contraparte){
                $file .=  "\n";
                $file .= $contraparte->country_name . "\t" .
                            $contraparte->nombre_familia . "\t" .
                            $contraparte->nombre_persona . "\t" .
                            $contraparte->abreviatura . " " . $contraparte->numero;

                foreach ($aind as $k => $id) {
                    $file .= "\t" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "");
                }
            }


            header('Content-disposition: attachment; filename=led_panel_control_' . $cliente . '.xls');
            header('Content-type: application/vnd.ms-excel; charset=utf-8');
            echo $file;

        }
    */
/*
    public function ledExcelPanelControl()
    {
        $cliente = Session::get('usuario')->cliente['client_id'];
        $ids = null != Request::input('ids') ? Request::input('ids') : null;
        //$ids = 95;
        //$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, null, null, null), 'select');
        $contrap = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, $ids), 'select');
        $personal = SQLConnection::backendStoreProcedure('LN_panel_control_excel_personal', array($cliente, $ids), 'select');

        $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla', $cliente,null,null, null), 'select');
        $ind = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES', $cliente,null,null, null), 'select');

        $array_ids = explode(",", $ids);
        $empleados = [];
        foreach ($array_ids as $id) {
            $docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
            $documentos[$id]['N'] = '';
            $documentos[$id]['V'] = '';
            $documentos[$id]['I'] = '';
            $documentos[$id]['R'] = '';
            foreach ($docs as $doc) {
                if ($doc->estado_documento!="No solicitado") {
                    $documentos[$id][$doc->estado_doc] .= $doc->nombre_tipo_doc . '<br style="mso-data-placement:same-cell;" />';
                }
            }
        }

        foreach ($personal as $doc) {
            $empleados[$doc->contraparte][$doc->etiqueta] = $doc->valor;
        }
        

        $titulo_score = DB::selectOne("SELECT top 1 titulo as titulo from ln_cliente_nivel where titulo is not null and cliente = " . $cliente);

        foreach ($ind as $data) {
            $prodind[$data->etiqueta][$data->indicador]['etiqueta'] = $data->etiqueta_indicador;
            $prodind[$data->etiqueta][$data->indicador]['tipo_dato'] = $data->tipo_dato;
            $prodind[$data->etiqueta][$data->indicador]['clave_indicador'] = $data->clave_indicador;
      
            if ($data->indicador == 37 )
            { 
              $prodind[$data->etiqueta]['9990']['etiqueta'] = "Datos Informe Exterior"; 
              $prodind[$data->etiqueta]['9990']['tipo_dato'] = "T";
              $prodind[$data->etiqueta]['9990']['clave_indicador'] = $data->clave_indicador;
            }
            if ($data->clave_indicador=="SCORE_FINAL" && isset($titulo_score)) {
                $prodind[$data->etiqueta]['9995']['etiqueta'] = $titulo_score->titulo;
                $prodind[$data->etiqueta]['9995']['tipo_dato'] = "T";
                $prodind[$data->etiqueta]['9995']['clave_indicador'] = $data->clave_indicador;
            }
            if ($data->clave_indicador=="CUMPL_DOC") {
                $prodind[$data->etiqueta]['9996']['etiqueta'] = "Verificados";
                $prodind[$data->etiqueta]['9996']['tipo_dato'] = "I";
                $prodind[$data->etiqueta]['9996']['clave_indicador'] = "V";
                
                $prodind[$data->etiqueta]['9997']['etiqueta'] = "Pendientes de Verificar";
                $prodind[$data->etiqueta]['9997']['tipo_dato'] = "I";
                $prodind[$data->etiqueta]['9997']['clave_indicador'] = "I";

                $prodind[$data->etiqueta]['9998']['etiqueta'] = "Rechazados";
                $prodind[$data->etiqueta]['9998']['tipo_dato'] = "I";
                $prodind[$data->etiqueta]['9998']['clave_indicador'] = "R";
                
                $prodind[$data->etiqueta]['9999']['etiqueta'] = "Pendientes de Ingreso";
                $prodind[$data->etiqueta]['9999']['tipo_dato'] = "I";
                $prodind[$data->etiqueta]['9999']['clave_indicador'] = "N";
            }
        }
        foreach ($prodind as $nombre_producto => $indicadores) {
            foreach ($indicadores as $key => $data) {
                $aind[] = $key;
            }
        }


        $titulo_personal = [];
        foreach ($empleados as $key => $data) {
            foreach ($data as $key => $tit) {
                $titulo_personal[$key] = $key;
            }
        }

        //var_dump($titulo_personal); die();

        $led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA', $cliente, null, null, null), 'select');
        foreach ($led as $datos) {
            //$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data);
            if (in_array($datos->indicador, $aind)) {
                $valores[$datos->contraparte][$datos->indicador] = $datos->valor;
                if($datos->indicador == 37)
                  {
                    $valores[$datos->contraparte]['9990'] = $datos->valor_memo;
                  }
                if ($datos->indicador == 4 && isset($titulo_score)) {
                    if ($datos->texto!=null) {
                        $valores[$datos->contraparte]['9995'] = $datos->texto;
                    } else {
                        $valores[$datos->contraparte]['9995'] = '';
                    }
                }
            }
        }
        
        //dd($valores);

        $file = '<table border="1">';
        $file .= '<tr><td>PAIS' . "</td><td>" . 'FAMILIA' . "</td><td>" . 'RAZON SOCIAL' . "</td><td>" . "IDENTIFICACION" . "</td><td>INICIO GESTION</td>" . "</td><td>DIAS GESTION</td>";

        foreach ($prodind as $nombre_producto => $ìndicadores) {
            if (!empty($ìndicadores)) {
                foreach ($ìndicadores as $fld => $data_indicador) {
                    if ($data_indicador['clave_indicador']=="SCORE_IC" && $fld == "37") {
                        continue;
                    }
                    $file .= "<td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>";
                    //print_r ($fld . " - <td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>\r\n");
                }
            } else {
                $file .= "<td>" . $nombre_producto . "</td>";
                //print_r("<td>" . $nombre_producto . "</td>\r\n");
            }
        }
        $file .= "<td>Detalle Rechazos</td>";
        foreach ($titulo_personal as $key => $tit) {
            $file .= "<td>" . $key. "</td>";
        }
        $file .= '</tr>';
    
        $hay = new stdClass();

        foreach ($contrap as $contraparte) {
            $file .=  '<tr valign="top">';
            $file .= "<td>".$contraparte->country_name . "</td>" .
                        "<td>".$contraparte->nombre_familia . "</td>" .
                        "<td>".$contraparte->nombre_persona . "</td>" .
                        "<td>".$contraparte->abreviatura . " " . $contraparte->numero . "</td>" .
                        "<td>".$contraparte->inicio_gestion . "</td>" .
                        "<td>".$contraparte->dias_gestion . "</td>";
            
              //  foreach ($aind as $k => $id) {
              //  print_r($id."\r\n");
            //}

            //print_r("\r\n\r\n". $contraparte->nombre_persona . " -- ". $valores[$contraparte->contraparte][6]);
            //die();
            
            foreach ($aind as $k => $id) {
                switch ($id) {
                    case 9999:
                        $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['N']) ? $documentos[$contraparte->contraparte]['N'] : "") . "</td>";
                        break;
                    case 9998:
                        $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['R']) ? $documentos[$contraparte->contraparte]['R'] : "") . "</td>";
                        break;
                    case 9997:
                        $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['I']) ? $documentos[$contraparte->contraparte]['I'] : "") . "</td>";
                        break;
                    case 9996:
                        $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['V']) ? $documentos[$contraparte->contraparte]['V'] : "") . "</td>";
                        break;
                    case 6:
                    if (!isset($valores[$contraparte->contraparte][$id])) {
                        $valores[$contraparte->contraparte][6] = (isset($valores[$contraparte->contraparte][37]) ? $valores[$contraparte->contraparte][37] : "");
                    }
                    $file .= "<td>" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>";
                            break;
                    case 37:
                            break;
                  default:
                if (isset($valores[$contraparte->contraparte][$id])) {
                    if (substr($valores[$contraparte->contraparte][$id], 0, 4)==(-100)) {
                        $valores[$contraparte->contraparte][$id] = str_replace('-100', 'N/A', $valores[$contraparte->contraparte][$id]);
                    }
                }
                $file .= "<td>" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>";
                break;
              }
            }
            $detalle = trim($contraparte->detalle_killer);
            $detalle = str_replace(';', '<br style="mso-data-placement:same-cell;" />', $detalle);
            $file .= '<td>' . $detalle . '</td>';
            if (isset($empleados[$contraparte->contraparte])) {
                $empleado = [];
                $empleado = $empleados[$contraparte->contraparte];
                foreach ($titulo_personal as $key1 => $tit) {
                    foreach ($empleado as $key => $val) {
                        if ($key == $tit) {
                            if ($key=='No tenemos personal') {
                                if ($val == '0') {
                                    $val = '';
                                } else {
                                    $val = 'X';
                                }
                            }
                            $file .= '<td>' . $val . '</td>';
                        }
                    }
                }
            } else {
                foreach ($titulo_personal as $key => $tit) {
                    $file .= "<td></td>";
                }
            }
                
            $file .= '</tr>';
        }
        $file .= '</table>';
        header('Content-disposition: attachment; filename=led_panel_control_' . $cliente . '.xls');
        header('Content-type: application/vnd.ms-excel; charset=utf-8');
        $file = utf8_decode($file);
        echo $file;
    }
    */

    public function ledExcelPanelControl(){
    $cliente = Session::get('usuario')->cliente['client_id'];
    $ids = null != Request::input('ids') ? Request::input('ids') : null;
    //$ids = 95;
    /*$contrap = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('contrapartes', $cliente, null, null, null), 'select');*/
    $contrap = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($cliente, $ids), 'select');
    $personal = SQLConnection::backendStoreProcedure('LN_panel_control_excel_personal', array($cliente, $ids), 'select');

    $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla', $cliente,NULL,NULL, null), 'select');
    $ind = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('PRODUCTOS_INDICADORES', $cliente,NULL,NULL, null), 'select');

    $array_ids = explode(",", $ids);
    $empleados = []; 
    foreach ($array_ids as $id) {
      $docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
        $documentos[$id]['N'] = '';
        $documentos[$id]['V'] = '';
        $documentos[$id]['I'] = '';
        $documentos[$id]['R'] = '';
        foreach ($docs as $doc) {
                if ($doc->estado_documento!="No solicitado")
                {
                 $documentos[$id][$doc->estado_doc] .= $doc->nombre_tipo_doc . '<br style="mso-data-placement:same-cell;" />'; 
                }
        } 
    } 

    foreach ($personal as $doc) {
            $empleados[$doc->contraparte][$doc->etiqueta] = $doc->valor; 
    }
    
    $titulo_score = DB::selectOne("SELECT top 1 titulo as titulo from ln_cliente_nivel where titulo is not null and cliente = " . $cliente); 

    foreach ($ind as $data) {
      $prodind[$data->etiqueta][$data->indicador]['etiqueta'] = $data->etiqueta_indicador;
      $prodind[$data->etiqueta][$data->indicador]['tipo_dato'] = $data->tipo_dato;
      $prodind[$data->etiqueta][$data->indicador]['clave_indicador'] = $data->clave_indicador;

      if ($data->indicador == 37 )
      { 
        $prodind[$data->etiqueta]['9990']['etiqueta'] = "Datos Informe Exterior"; 
        $prodind[$data->etiqueta]['9990']['tipo_dato'] = "T";
        $prodind[$data->etiqueta]['9990']['clave_indicador'] = $data->clave_indicador;
      }

      if ($data->clave_indicador=="CTRL_ETICO")
      { 
        $prodind[$data->etiqueta]['9993']['etiqueta'] = $data->etiqueta_indicador . " Cruce con Base de Personas no autorizadas"; 
        $prodind[$data->etiqueta]['9993']['tipo_dato'] = "I";
        $prodind[$data->etiqueta]['9993']['clave_indicador'] = $data->clave_indicador;
      }

      if ($data->clave_indicador=="CTRL_CALIDAD")
      { 
        $prodind[$data->etiqueta]['9994']['etiqueta'] = $data->etiqueta_indicador . " Cruce con Base de Proveedores no autorizados"; 
        $prodind[$data->etiqueta]['9994']['tipo_dato'] = "I";
        $prodind[$data->etiqueta]['9994']['clave_indicador'] = $data->clave_indicador;
      }

      if ($data->clave_indicador=="SCORE_FINAL" && isset($titulo_score))
      { 
        $prodind[$data->etiqueta]['9995']['etiqueta'] = $titulo_score->titulo; 
        $prodind[$data->etiqueta]['9995']['tipo_dato'] = "T";
        $prodind[$data->etiqueta]['9995']['clave_indicador'] = $data->clave_indicador;
      }



      if ($data->clave_indicador=="CUMPL_DOC")
      {
        $prodind[$data->etiqueta]['9996']['etiqueta'] = "Verificados";
        $prodind[$data->etiqueta]['9996']['tipo_dato'] = "I";
        $prodind[$data->etiqueta]['9996']['clave_indicador'] = "V";
        
        $prodind[$data->etiqueta]['9997']['etiqueta'] = "Pendientes de Verificar";
        $prodind[$data->etiqueta]['9997']['tipo_dato'] = "I";
        $prodind[$data->etiqueta]['9997']['clave_indicador'] = "I";

        $prodind[$data->etiqueta]['9998']['etiqueta'] = "Rechazados";
        $prodind[$data->etiqueta]['9998']['tipo_dato'] = "I";
        $prodind[$data->etiqueta]['9998']['clave_indicador'] = "R";
        
        $prodind[$data->etiqueta]['9999']['etiqueta'] = "Pendientes de Ingreso";
        $prodind[$data->etiqueta]['9999']['tipo_dato'] = "I";
        $prodind[$data->etiqueta]['9999']['clave_indicador'] = "N";
      }

    }
    foreach ($prodind as $nombre_producto => $indicadores) {
      foreach ($indicadores as $key => $data) {
        $aind[] = $key; 
      }
    }


    $titulo_personal = []; 
    foreach ($empleados as $key => $data)
    {
    foreach ($data as $key => $tit)
      {
      $titulo_personal[$key] = $key; 
      }
    }

    //var_dump($prodind); die(); 

    $led = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('VALORES_GRILLA', $cliente, null, null, null), 'select');
    foreach ($led as $datos) {
      //$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data);
      if(in_array($datos->indicador, $aind)) {      
        $valores[$datos->contraparte][$datos->indicador] = $datos->valor_sin_formato;
        if($datos->indicador == 37)
        {
          $valores[$datos->contraparte]['9990'] = $datos->valor_memo;
        }
        if($datos->indicador == 4 && isset($titulo_score))
        {
          if ($datos->texto!=null) 
          {
          $valores[$datos->contraparte]['9995'] = $datos->texto;
          }
          else
          {
            $valores[$datos->contraparte]['9995'] = ''; 
          }
        }
      }
    }
    
    //dd($valores);

    $file = '<table border="1">';
    $file .= '<tr><td>PAIS' . "</td><td>" . 'FAMILIA' . "</td><td>" . 'RAZON SOCIAL' . "</td><td>IDENTIFICADOR</td><td>" . "IDENTIFICACION" . "</td><td>INICIO GESTION</td>" . "</td><td>DIAS GESTION</td>";

    foreach ($prodind as $nombre_producto => $ìndicadores) {
      if (!empty($ìndicadores)) {
        foreach ($ìndicadores as $fld => $data_indicador) { 
          
          if ($data_indicador['clave_indicador']=="SCORE_IC" && $fld == "37")
          {
          continue;
          }
          $file .= "<td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>";
          //print_r ($fld . " - <td>" . $nombre_producto . " (" . $data_indicador['etiqueta'] . ")" . "</td>\r\n");
        }
      }
      else {
        $file .= "<td>" . $nombre_producto . "</td>";
        //print_r("<td>" . $nombre_producto . "</td>\r\n");
      }
    }
    $file .= "<td>Detalle Rechazos</td>";
    foreach ($titulo_personal as $key => $tit)
    {
        $file .= "<td>" . $key. "</td>";
    }
    $file .= '</tr>'; 
    
    $hay = new stdClass(); 
    $datos_cruce = new stdClass(); 

    foreach($contrap as $contraparte){

      $file .=  '<tr valign="top">';
      $file .= "<td>".$contraparte->country_name . "</td>" .
            "<td>".$contraparte->nombre_familia . "</td>" .
            "<td>".$contraparte->nombre_persona . "</td>" .
            "<td>".$contraparte->abreviatura ."</td>" .
            "<td>".$contraparte->numero . "</td>" .
            "<td>".$contraparte->inicio_gestion . "</td>" . 
            "<td>".$contraparte->dias_gestion . "</td>";
      
      $datos_cruce = ''; 
      $cruce_socios = SQLConnection::backendStoreProcedure('LN_control_etica', array($contraparte->contraparte), 'select');
      
      foreach ($cruce_socios as $cruce) {
          if ($datos_cruce == '') { 
              $datos_cruce = $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
              }
              else 
              {
              $datos_cruce = '<br style="mso-data-placement:same-cell;" />' . 
                              $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
              }
      }
      
      $valores[$contraparte->contraparte]['9993'] = $datos_cruce;

      $datos_cruce = ''; 
      $cruce_socios = SQLConnection::backendStoreProcedure('LN_control_calidad', array($contraparte->contraparte), 'select');
      
      foreach ($cruce_socios as $cruce) {
          if ($datos_cruce == '') { 
              $datos_cruce = $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
              }
              else 
              {
              $datos_cruce = '<br style="mso-data-placement:same-cell;" />' . 
                              $cruce->cuit . ' ' . $cruce->nombre . ' - ' . $cruce->cargo; 
              }
      }
      
      $valores[$contraparte->contraparte]['9994'] = $datos_cruce;


    /*         
      foreach ($aind as $k => $id) {
      print_r($id."\r\n"); 
    }
    
    print_r("\r\n\r\n". $contraparte->nombre_persona . " -- ". $valores[$contraparte->contraparte][6]); 
    die(); 
    */
      foreach ($aind as $k => $id) {

        switch ($id) {
          case 9999:
            $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['N']) ? $documentos[$contraparte->contraparte]['N'] : "") . "</td>";
            break;
          case 9998:
            $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['R']) ? $documentos[$contraparte->contraparte]['R'] : "") . "</td>";
            break;
          case 9997:
            $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['I']) ? $documentos[$contraparte->contraparte]['I'] : "") . "</td>";
            break;
          case 9996:
            $file .= "<td>" . (isset($documentos[$contraparte->contraparte]['V']) ? $documentos[$contraparte->contraparte]['V'] : "") . "</td>";
            break;
          case 6:
          if (!isset($valores[$contraparte->contraparte][$id]))
              {
                $valores[$contraparte->contraparte][6] = (isset($valores[$contraparte->contraparte][37]) ? $valores[$contraparte->contraparte][37] : "");
              }
              $file .= "<td>" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
              break;
          case 37:
              break;
          default:
            if (isset($valores[$contraparte->contraparte][$id])) { 
                if (substr($valores[$contraparte->contraparte][$id],0,4)==(-100)) 
                    { $valores[$contraparte->contraparte][$id] = str_replace('-100','N/A', $valores[$contraparte->contraparte][$id]);}
                }
            $file .= "<td>" . (isset($valores[$contraparte->contraparte][$id]) ? $valores[$contraparte->contraparte][$id] : "") . "</td>"; 
            break;
          }
        }
        $detalle = trim($contraparte->detalle_killer); 
        $detalle = str_replace(';', '<br style="mso-data-placement:same-cell;" />', $detalle); 
        $file .= '<td>' . $detalle . '</td>';
        if(isset($empleados[$contraparte->contraparte]))
        {
            $empleado = []; 
            $empleado = $empleados[$contraparte->contraparte]; 
            foreach ($titulo_personal as $key1 => $tit)
            {
              foreach ($empleado as $key => $val) {
                if ($key == $tit)
                {
                  if ($key=='No tenemos personal')  {
                      if ($val == '0') 
                      { $val = ''; }
                      else 
                      { $val = 'X'; }
                  }
                  $file .= '<td>' . $val . '</td>';
                }
              }
            }
        }
        else 
        {
          foreach ($titulo_personal as $key => $tit)
          {
              $file .= "<td></td>";
          }
        }
        
        $file .= '</tr>'; 
        
      }
    $file .= '</table>'; 
    $fecha = date("Y-m-d");
    header('Content-disposition: attachment; filename=Reporte_Contrapartes_' . $fecha . '.xls');
    header('Content-type: application/vnd.ms-excel; charset=utf-8');
    $file = utf8_decode($file);
    echo $file;
  }

  public static function ledContraparte() {
    $cliente = Session::get('usuario')->cliente['client_id'];
    $id = Request::input('contraparte');
    $tab = (null != Request::input('tab')) ? Request::input('tab') : 'home';

    $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla', $cliente,NULL,NULL, $id), 'select');
    $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
    $depeconid = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'DEP_ECON_CALC'), 'selectOne'); 
    if (empty($depeconid))
    {
      $depeconid = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'DEP_ECON_BALANCE'), 'selectOne');
    }
    
    //dd($depeconid); 

    $navtext = (null == $qcontrap->id_padre) ? "Contraparte" : "Subcontratista";
    $vista = view('/led/led_contraparte')->with(compact(['productos' , 'qcontrap', 'tab','cliente','depeconid', 'navtext']))->render();
    return \Response::json(
            array(
                'view' => $vista,
                'info'=>compact('qcontrap')
        
            ),
            200,
            [],
            JSON_NUMERIC_CHECK
        );
    return ; 
  }

  public static function ledProductosCliente() {
    $cliente = Session::get('usuario')->cliente['client_id'];
    $contrap = (null != Request::input('contraparte')) ? Request::input('contraparte') : null;
    $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla_2', $cliente,NULL,NULL, $contrap), 'select');
    return json_encode($productos);
  }

  public static function ledHome() {
    $cliente = Session::get('usuario')->cliente['client_id'];
    $id = Request::input('contraparte');
    $qcontrap = SQLConnection::backendStoreProcedure('LN_contrapartes_', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),'selectOne'); 

    /*$familia = DB::select("select LN_familias.nombre_familia as nombre_familia
                                 from LN_contrapartes
                                INNER JOIN LN_contraparte_familias on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
                                INNER JOIN LN_familias on LN_familias.familia = LN_contraparte_familias.familia
                                where LN_contrapartes.contraparte = ". $id, array()); */

    $familia = SQLConnection::backendStoreProcedure('LN_contraparte_familias_', array('search', $id, NULL, NULL, NULL, NULL, NULL), 'select');
    
    $productos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('productos_grilla',$cliente,null,null,$id), 'select');

    /*

    // Evalúo si la contraparte tiene asociado el producto balances 
    $tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $qcontrap->contraparte);

    // Cálculo de Indicadores 
    if($tiene_balance->balance > 0) {
      $score_informe = self::actualizarScoreComercialSinBalance($qcontrap->contraparte);

//      $score_balance = self::actualizarScoreBalance($qcontrap->contraparte);
//
//      Esta consulta trae los últimos balances publicados, en join con la documentación de
//        balances solicitada a la empresa. Si el último balance publicado no fue proporcionado por
//        la contraparte sino que fue provisto por Fidelitas hay que aclarar que el score de balances
//        que se muestra en el home no interviene en el score final    
//      $datos_balances = SQLConnection::backendStoreProcedure('LN_balances', array('balances_contraparte', $qcontrap->contraparte), 'select');
    }
    else {
      $score_informe = self::actualizarScoreComercialConBalance($qcontrap->contraparte);
      $datos_balances = [];
    }

    foreach ($productos as $key => $prod) {

      if ($prod->producto_id == 'informeComercial') {
        self::actualizarMonitoreo($qcontrap->contraparte);        
      }

      if ($prod->producto_id == 'documentos') {
        self::actualizarScoreDocumentos($qcontrap->contraparte);
        self::actualizarCumplimientoDocumentos($qcontrap->contraparte);
      }

      if ($prod->producto_id == 'subcontratistas') {
        self::actualizarSubcontratistas($qcontrap->contraparte);        
      }

      if ($prod->producto_id == 'homologacion') {
        self::actualizarControlEtico($qcontrap->contraparte);
        self::actualizarControlCalidad($qcontrap->contraparte);
        self::actualizarControlComercial($qcontrap->contraparte);
        self::actualizarHomologacionSubcontratista($qcontrap->contraparte);             
      }

      if ($prod->producto_id == 'dossierdemo') {
        self::actualizarDossierDemo($qcontrap->contraparte);
      }

      if ($prod->producto_id == 'fidecheck') {
        self::actualizarFidecheck($qcontrap->contraparte);
      }

      if ($prod->producto_id == 'alertas') {
        self::actualizarAlertasBCRA($qcontrap->contraparte);
      }

      if ($prod->producto_id == 'dependEconomica') {
        self::actualizarDependenciaEconomica($qcontrap->contraparte);
      }

      if ($prod->producto_id == 'recomendadorCredito') {
        self::actualizarRentabilidadOperativa($qcontrap->contraparte);
        // Actualización del índice de días de deuda bancaria sobre las ventas post balance 
        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('dias_deuda_ventas', NULL, NULL, NULL,$qcontrap->contraparte), 'selectOne');
      }


      if ($prod->producto_id == 'scorefinal') {
        self::actualizarScoreFinal($qcontrap->contraparte);       
      }


    }



    // Consulto todos los indicadores de cálculo automático que le corresponden por asociación de producto y familias, para calcularlos por primera vez
    $indicadores = SQLConnection::backendStoreProcedure('LN_contraparte_indicadores_', array('status', $id), 'select');

    foreach ($indicadores as $r_indic) {
      switch ($r_indic->clave_indicador) {

        // Score de informe comercial 
        case 'SCORE_IC':
          if($tiene_balance->balance > 0) {
            $score_informe = self::actualizarScoreComercialSinBalance($id);
          }
          else {
            $score_informe = self::actualizarScoreComercialConBalance($id);
          }
          break;
        
        // Novedades de monitoreso 
        case 'ULTIMA_NOVEDAD':
          //comentado por Leo, no debería recalcularse nuevamente en cada entrada.
//          if ($qcontrap->country_code == 'AR') {
//              $f = date('Y-m-d');
//              $hoy = Datetime::createFromFormat('Y-m-d', $f);
//              $fecha_limite_monitoreo = date_add($hoy, date_interval_create_from_date_string("1 year"));
//              
//              $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($qcontrap->numero, Session::get('usuario')->user_id, $cliente, 6, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
//              $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($qcontrap->numero, Session::get('usuario')->user_id, $cliente, 9, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
//              $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($qcontrap->numero, Session::get('usuario')->user_id, $cliente, 10, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
//              $temp = SQLConnection::backendStoreProcedure('monitorear_cuit', array($qcontrap->numero, Session::get('usuario')->user_id, $cliente, 18, $fecha_limite_monitoreo, 'LED: alta de contraparte'), 'selectOne');
//
//              self::actualizarMonitoreo($id);
//          }
          break;

        
        // Documentos 
        case 'CUMPL_DOC':
          self::actualizarCumplimientoDocumentos($id);        
          break;
        case 'SCORE_DOC':
          self::actualizarScoreDocumentos($id);
          break;

        // Balances 
        case 'SCORE_BAL':
          self::actualizarScoreBalance($id);
          // Estos van por suscripción específica al cliente 
          self::actualizarIndicadoresBalance($id);
          break;

        // Subcontratistas 
        case 'SUBCONT':
          self::actualizarSubcontratistas($qcontrap->contraparte);
          break;

        // Fidecheck 
        case 'SCORE_FIDECHECK':
          self::actualizarFidecheck($qcontrap->contraparte);
          break;

        // Alertas BCRA 
        case 'CHEQUES_RECH':
        case 'SITUACION_CD':
          self::actualizarAlertasBCRA($qcontrap->contraparte);
          break;
        
        case 'SCORE_JUDICIAL':
          self::actualizarScoreJudicial($qcontrap->contraparte);
          break;

        // Control de ingreso - homologación 
        case 'CTRL_ETICO';
          self::actualizarControlEtico($qcontrap->contraparte);
          break;
        case 'CTRL_CALIDAD';
          self::actualizarControlCalidad($qcontrap->contraparte);
          break;
        case 'CTRL_COMERCIAL';
          self::actualizarControlComercial($qcontrap->contraparte);
          break;
        case 'HOMOLOG':
          self::actualizarHomologacionSubcontratista($qcontrap->contraparte);             
          break;

        // Recomendador de crédito 
        case 'LC_DIAS_VENTAS':
        case 'LC_RENTABILIDAD':
        case 'LC_RENTABILIDAD_FECHA':
          self::actualizarRentabilidadOperativa($qcontrap->contraparte);                        
          break;

        // Dependencia Económica Calculada 
        case 'DEP_ECON_CALC':
          self::actualizarDependenciaEconomica($qcontrap->contraparte);             
          break;

        // Score final 
        case 'SCORE_FINAL':
          self::actualizarScoreFinal($id);
          break;

      }
    }

    // Fin cálculo de Indicadores 

    */

    /* Calculo de domicilio */
    $domic = DB::selectOne("SELECT * from domicilios_todos where cuit='" . $qcontrap->identificacion . "' and tipo_domicilio='F'");

    /*$temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_final_contraparte', null, null, null, $id), 'selectOne');*/
    $data = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id), 'select');
    
    foreach ($data as $key => $datos) {
      if (isset($datos->color_personalizado))     $data[$key]->color     = $datos->color_personalizado; 
      if (isset($datos->textcolor_personalizado)) $data[$key]->textcolor = $datos->textcolor_personalizado; 
      if (isset($datos->svg_data_personalizado))  $data[$key]->svg_data  = $datos->svg_data_personalizado; 
    }
    //dd($data);

    /* Para graficar dependendia economica calculada en caso de que le corresponda y exista el dato */
    $depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'DEP_ECON_CALC'), 'selectOne'); 
    $scoredepecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SCORE_DEP_ECON'), 'selectOne'); 
    if (empty($depecon))
    {
      $depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'DEP_ECON_BALANCE'), 'selectOne'); 
      $scoredepecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SCORE_DEP_ECON_BAL'), 'selectOne');
    }

    /*$scoredepecon = DB::selectOne('select valor_numerico from ln_contraparte_indicadores where contraparte = ' . $qcontrap->contraparte . 
                    " and visible = 1 
                     and indicador = (select indicador 
                      from ln_indicadores 
                    inner join LN_productos on ln_productos.producto = LN_indicadores.producto 
                    where clave_indicador = 'SCORE_DEP_ECON'
                    and nombre_producto = 'Dependencia Económica')");  */
    /*$scorealertas = DB::selectOne('select valor_numerico from ln_contraparte_indicadores where contraparte = ' . $qcontrap->contraparte . 
                    " and visible = 1 
                     and indicador = (select indicador 
                      from ln_indicadores 
                    inner join LN_productos on ln_productos.producto = LN_indicadores.producto 
                    where clave_indicador = 'SCORE_ALERTAS_BCRA'
                      and nombre_producto = 'Alertas BCRA')");  */
    
    /*$scorealertas = DB::selectOne("select valor_numerico, LN_productos.etiqueta as etiqueta
                     from ln_contraparte_indicadores 
                     inner join ln_indicadores on ln_indicadores.indicador = ln_contraparte_indicadores.indicador 
                     inner join LN_productos on LN_productos.nombre_producto = 'Alertas BCRA'
                     where ln_contraparte_indicadores.contraparte = " . $qcontrap->contraparte . 
                    " and ln_contraparte_indicadores.visible = 1 
                     and clave_indicador = 'SCORE_ALERTAS_BCRA'"); */

    $scoreapocrifas = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SCORE_APOCRIFAS'), 'selectOne');

    $scorealertas = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $qcontrap->cliente, null, null, $qcontrap->contraparte, 'SCORE_ALERTAS_BCRA'), 'selectOne'); 

    $coloralertas = new stdClass(); 
    $coloralertas->fondo = '000000'; 
    $coloralertas->txt   = '000000'; 
    if (isset($scorealertas->valor_numerico)) {
      
      switch (true) {
          case ($scorealertas->valor_numerico >=81) : $coloralertas->fondo = '63b68c'; $coloralertas->txt = '000000'; break; 
          case ($scorealertas->valor_numerico >=61) : $coloralertas->fondo = 'cbc367'; $coloralertas->txt = '000000'; break; 
          case ($scorealertas->valor_numerico >=41) : $coloralertas->fondo = 'FFB81C'; $coloralertas->txt = '000000'; break; 
          case ($scorealertas->valor_numerico >=21) : $coloralertas->fondo = 'd37123'; $coloralertas->txt = '000000'; break; 
            case ($scorealertas->valor_numerico >=0)  : $coloralertas->fondo = 'A72B2A'; $coloralertas->txt = 'FFFFFF'; break; 
      }
    }
  
    $detalle_killer = SQLConnection::backendStoreProcedure('LN_panel_control_excel', array($qcontrap->cliente, $qcontrap->contraparte), 'selectOne');
    if (isset($detalle_killer->detalle_killer)) {
      $detalle_killer->detalle_killer = str_replace('; ',"\n",$detalle_killer->detalle_killer);
    }
    
      return view('/led/led_home')->with(compact('qcontrap', 'data', 'domic', 'depecon','scoredepecon','scoreapocrifas','scorealertas','coloralertas', 'detalle_killer','familia'));
  }


    public static function ledInformeComercial()
    {
        $id = Request::input('contraparte');
        $prod = Request::input('producto');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        $qproducto = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $prod, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
        $apikey = env('API_KEY');

        /* Evalúo si la contraparte tiene asociado el producto balances */
        $tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $id);
        /* Si la contraparte LED va a tener balance, el score del informe comercial sábana lo pido sin incluir balances */
        $incluye_balance = ($tiene_balance->balance > 0) ? 0 : 1;

        return view('/led/led_informe_comercial')->with(compact('qcontrap', 'qproducto', 'apikey', 'incluye_balance'));
    }


    /* vista del informe comercial para otros países no AR */
    public static function ledInformeComercialExterior()
    {
        $id = Request::input('contraparte');
        $prod = Request::input('producto');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        $qproducto = SQLConnection::backendStoreProcedure('LN_productos_', array('select', $prod, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');

        $ind = SQLConnection::backendStoreProcedure('LN_indicadores_', array('search', null, $prod, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');

        $score = [];
        if (!empty($ind)) {
            $score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, $ind->clave_indicador), 'selectOne');
        }

        $file_path = null;
        $file_url = null;
        $cdata = DB::selectOne('select contraparte, gestion from LN_gestiones where contraparte = ' . $id . ' and desde <= GETDATE() and hasta >= GETDATE() and vigente = 1');
        if (!empty($cdata)) {
            $file_path = env('PATH_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf';
            if (file_exists($file_path)) {
                $file_url = env('RUTA_DOCUMENTOS') . '/' . $qcontrap->cliente . '/' . $id . '/' . $cdata->gestion . '/ext' . $prod . '.pdf';
            }
        }

        return view('/led/led_informe_comercial_exterior')->with(compact('qcontrap', 'qproducto', 'score', 'file_path', 'file_url'));
    }


    public static function ledDocumentos()
    {
        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        $gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $id, null, null, 1, null));

        //$docs = SQLConnection::backendStoreProcedure('LN_docs_', array('search', NULL, $qcontrap->cliente, $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $gest->gestion, NULL), 'select');
        $docs = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('DOCUMENTOS_GESTION_ACTIVA', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

        $scoredoc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte',null,null,null,$id,'SCORE_DOC'), 'selectOne');
        $cumpldoc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte',null,null,null,$id,'CUMPL_DOC'), 'selectOne');

        //dd($docs);

        $files = [];
        $n = -1;
        foreach ($docs as $k => $doc) {
            if ($doc->estado_doc == 'N' || $doc->estado_doc == 'I' || $doc->estado_doc == 'R' || $doc->estado_doc == 'V') {
                $n++;
                if ($doc->es_balance == 1) {
                    /*$file_path = env('PATH_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';
                    $file_url = env('RUTA_BALANCES') . '/' . $doc->numero . '/' . $doc->id_externo . '.pdf';*/

                    $file_path = env('PATH_COMPARTIDO') . $doc->ruta_archivo;
                    $file_url = env('RUTA_COMPARTIDO') . $doc->ruta_archivo;
                } else {
                    $file_path = env('PATH_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
                    $file_url = env('RUTA_DOCUMENTOS') . '/' . $doc->cliente . '/' . $doc->contraparte . '/' . $doc->gestion . '/' . $doc->doc_id . '.pdf';
                }
                $file_exists = file_exists($file_path);

                $files[$n]['path'] = $file_path;
                $files[$n]['url'] = $file_url;
                $files[$n]['exists'] = $file_exists;
            }
        }

        return view('/led/led_documentos')->with(compact(['qcontrap','docs', 'files', 'scoredoc', 'cumpldoc']));
    }


    public static function ledDetalleDocumento()
    {
        $id = Request::input('doc_id');
        $doc = SQLConnection::backendStoreProcedure('LN_docs_', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null), 'selectOne');
        return view('/led/led_detalle_documento')->with(compact(['doc']));
    }

    public static function ledNovedades()
    {
        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        if (!empty($qcontrap)) {
            $novedades = DB::select('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('NOVEDADES', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        }

        return view('/led/led_novedades')->with(compact(['qcontrap', 'novedades']));
    }

    public static function ledNovedadesDetalle()
    {
        $cuit                   = Request::input('cuit');
        $seccion_mantenimiento  = Request::input('seccion_mantenimiento');
        $tipo_novedad           = Request::input('tipo_novedad');
        $tabla                  = Request::input('tabla');
        $nombre                 = Request::input('nombre');
        $fecha                = Request::input('fecha');
        $resultados             = SQLConnection::obtenerNovedadesHTML($cuit, $seccion_mantenimiento, $tabla, $fecha);

        $func = $tabla.'TR';
        $hdr = self::$func();
        $rows = '';
        foreach ($resultados as $resultado) {
            $rows .= self::batchHtml($resultado->html);
        }
        return view('/led/led_novedades_detalle')->with(compact(['hdr', 'rows']));
    }

    public static function ledHomologacion() {
    $id = Request::input('contraparte');
    $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

    $ctrletico = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_ETICO'), 'selectOne');
    $ctrlcalidad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_CALIDAD'), 'selectOne');
    $ctrlcomercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_COMERCIAL'), 'selectOne');

    $cruce_socios = SQLConnection::backendStoreProcedure('LN_control_etica', array($id), 'select');

    $cruce_calidad = SQLConnection::backendStoreProcedure('LN_control_calidad', array($id), 'select');

    $homolog = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'HOMOLOG'), 'selectOne');

    $exc_activa = SQLConnection::backendStoreProcedure('LN_excepciones_', array('activa', $id), 'selectOne');
    $excepciones = SQLConnection::backendStoreProcedure('LN_excepciones_', array('search', $id), 'select');

    return view('/led/led_homologacion')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial', 'homolog', 'cruce_socios','cruce_calidad', 'exc_activa', 'excepciones']));
  }


    public static function ledExcepcionIngreso()
    {
        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

        $ctrletico = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_ETICO'), 'selectOne');
        $ctrlcalidad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_CALIDAD'), 'selectOne');
        $ctrlcomercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_COMERCIAL'), 'selectOne');

        return view('/led/led_excepcion_ingreso')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial']));
    }


  public static function ledExcepcionInsert() {
    $id =                       Request::input('contraparte');
    $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

    $texto_excepcion =            ('' != Request::input('texto_excepcion') ) ? Request::input('texto_excepcion') : null;
    $ingresar_vigencia  =             !empty(Request::input('ingresar_vigencia')) ? 1 : 0;
    $vigencia =                 ('' != Request::input('vigencia') ) ? Request::input('vigencia') : null;
    $tipo_excepcion =             Request::input('tipo_excepcion');

    $fecha_vigencia = null;
    if ($ingresar_vigencia > 0 AND $vigencia != null) {
      $fecha_vigencia = date_create_from_format('!d/m/Y', $vigencia);
    }

    $exc = SQLConnection::backendStoreProcedure('LN_excepciones_', array('nueva', $id, $fecha_vigencia, $texto_excepcion, Session::get('usuario')->user_id, NULL, $tipo_excepcion), 'selectOne');
    $ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null,$id,null), 'selectOne');
    
    return view('/led/led_excepcion_return')->with(compact(['qcontrap'])); 
  }


    public static function ledExcepcionDesactivar() {
    $id = Request::input('contraparte');
    $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));

    $ctrletico = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_ETICO'), 'selectOne');
    $ctrlcalidad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_CALIDAD'), 'selectOne');
    $ctrlcomercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_COMERCIAL'), 'selectOne');
    $ctrlhomolog = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'HOMOLOG'), 'selectOne');

    $excepcion = SQLConnection::backendStoreProcedure('LN_excepciones_', array('activa', $id), 'selectOne');

    return view('/led/led_excepcion_desactivar')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial', 'ctrlhomolog', 'excepcion']));

  }


    public static function ledExcepcionUpdate()
    {
        $id =                       Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        $texto_excepcion =            ('' != Request::input('texto_excepcion')) ? Request::input('texto_excepcion') : null;

        $exc = SQLConnection::backendStoreProcedure('LN_excepciones_', array('desactivar', $id, null, $texto_excepcion, Session::get('usuario')->user_id), 'selectOne');
        $ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null,$id,null), 'selectOne');

        return view('/led/led_excepcion_return')->with(compact(['qcontrap']));
    }

    public static function ledExcepcionEditar()
    {
        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

        $ctrletico = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_ETICO'), 'selectOne');
        $ctrlcalidad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_CALIDAD'), 'selectOne');
        $ctrlcomercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'CTRL_COMERCIAL'), 'selectOne');
        $ctrlhomolog = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'HOMOLOG'), 'selectOne');

        $excepcion = SQLConnection::backendStoreProcedure('LN_excepciones_', array('activa', $id), 'selectOne');

        return view('/led/led_excepcion_editar')->with(compact(['qcontrap', 'ctrletico', 'ctrlcalidad', 'ctrlcomercial', 'ctrlhomolog', 'excepcion']));
    }

    public static function ledExcepcionActualizar()
    {
        $id = Request::input('contraparte');
        $exc = Request::input('excepcion');
        
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

        $texto_excepcion =            ('' != Request::input('texto_excepcion')) ? Request::input('texto_excepcion') : null;
        $ingresar_vigencia  =             !empty(Request::input('ingresar_vigencia')) ? 1 : 0;
        $vigencia =                 ('' != Request::input('vigencia')) ? Request::input('vigencia') : null;
        $tipo_excepcion =             Request::input('tipo_excepcion');

        $fecha_vigencia = null;
        if ($ingresar_vigencia > 0 and $vigencia != null) {
            $fecha_vigencia = date_create_from_format('!d/m/Y', $vigencia);
        }

        $tmp = SQLConnection::backendStoreProcedure('LN_excepciones_', array('actualizar', $id, $fecha_vigencia, $texto_excepcion, Session::get('usuario')->user_id, $exc, $tipo_excepcion), 'selectOne');
        $ins = SQLConnection::backendStoreProcedure('LN_contrapartes_queue_', array('insert', null,$id,null), 'selectOne');
        
        return view('/led/led_excepcion_return')->with(compact(['qcontrap']));
    }


    private static function detalleTabla($tabla, $resultados)
    {
    }

    private static function cendeuTR()
    {
        $resp ='<tr>
      <th>Banco</th>
      <th>Periodo</th>
      <th>Situacion</th>
      <th>Monto (en miles)</th>
      </tr>';
        return $resp;
    }

    private static function cendeu_tempTR()
    {
        $resp ='<tr>
      <th>Banco</th>
      <th>Periodo</th>
      <th>Situacion</th>
      <th>Monto (en miles)</th>
      </tr>';
        return $resp;
    }
    private static function cendeu_cancelaTR()
    {
        $resp ='<tr>
      <th>Fecha</th>
      <th>Evento</th>
      <th>Banco</th>
      <th>Desde</th>
      <th>Hasta</th>
      </tr>';
        return $resp;
    }
    private static function sircrebTR()
    {
        $resp ='<tr>
      <th>Fecha</th>
      <th>Desde</th>
      <th>Hasta</th>
      </tr>';
        return $resp;
    }
    private static function arbaTR()
    {
        $resp ='<tr>
      <th>Impuesto</th>
      <th>Objeto</th>
      <th>Nro Interno</th>
      <th>Fecha Inicio Juicio</th>
      <th>Importe Deuda</th>
      <th>Fecha Cancelacion</th>
      <th>Fecha Plan de Pagos</th>
      <th>Cancelacion Juicio</th>
      <th>Estado Medida Cautelar</th>
      <th>Estado de Plan de Pagos</th>
      </tr>';
        return $resp;
    }

    private static function balances_contablesTR()
    {
        $resp ='<tr>
      <th></th>
      <th>fecha</th>
      </tr>';
        return $resp;
    }
      
    private static function juiciosTR()
    {
        $resp ='<tr>
      <th>Fecha</th>
      <th>Causa</th>
      <th>CUIT Actor</th>
      <th>Nombre Actor</th>
      </tr>';
        return $resp;
    }

    private static function chequesbcraTR()
    {
        $resp ='<tr>
      <th>Causal</th>
      <th>CUIT Firmante</th>
      <th>CUIT Relacionado</th>
      <th>Nro Cheque</th>
      <th>Importe</th>
      <th>Fecha de Rechazo</th>
      <th>Fecha de Pago de Multa</th>
      <th>Fecha de Levantamiento</th>
      </tr>';
        return $resp;
    }


    private static function batchHtml($html)
    {
        $resp ='
      <tr>'.$html.'</tr>';
        return $resp;
    }

    /**********************************************/


    /* Solapa de subcontratistas de una contraparte */
    public static function ledSubcontratistas()
    {
        $id = Request::input('contraparte');
        $contrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        $cliente = $contrap->cliente;
        $subc = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('subcontratistas_panel', $id, $cliente), 'select');



        $productos_grilla = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('productos_grilla', null, $cliente), 'select');
        $productos = [];
        foreach ($productos_grilla as $key => $pdata) {
            $productos[$pdata->producto_id]['etiqueta'] = $pdata->etiqueta;
            $productos[$pdata->producto_id]['producto_id'] = $pdata->producto_id;
            $productos[$pdata->producto_id]['class_icon'] = $pdata->class_icon;
        }

        $prodind = [];
        $indic = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('PRODUCTOS_INDICADORES', null, $cliente), 'select');
        foreach ($indic as $key => $idata) {
            $prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;
            $prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;

            $op = null;
            if (null != $idata->opciones) {
                $t1 = explode('^', $idata->opciones);
                $text = explode('|', $t1[0]);
                $values = explode('|', $t1[1]);
                $op = array('text' => $text, 'values' => $values);
            }
            $prodind[$idata->producto_id][$idata->clave_indicador]['opciones'] = $op;
        }

        $valores = [];
        $led = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('valores_grilla', $id, $cliente), 'select');
        foreach ($led as $datos) {
            /*$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);*/
            $valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);
        }
        //dd($valores);

        return view('/led/led_subcontratistas')->with(compact(['id', 'contrap', 'subc', 'productos', 'prodind', 'valores']));
    }

    /* Vista general de contrapartes/subcontratistas que dependen del cliente */
    public static function ledPanelSubcontratistas()
    {
        $cliente = Session::get('usuario')->cliente['client_id'];
        $subc = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('subcontratistas_panel', null, $cliente), 'select');

        $productos_grilla = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('productos_grilla', null, $cliente), 'select');
        $productos = [];
        foreach ($productos_grilla as $key => $pdata) {
            $productos[$pdata->producto_id]['etiqueta'] = $pdata->etiqueta;
            $productos[$pdata->producto_id]['producto_id'] = $pdata->producto_id;
            $productos[$pdata->producto_id]['class_icon'] = $pdata->class_icon;
        }

        $prodind = [];
        $indic = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('PRODUCTOS_INDICADORES', null, $cliente), 'select');
        foreach ($indic as $key => $idata) {
            $prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;
            $prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;

            $op = null;
            if (null != $idata->opciones) {
                $t1 = explode('^', $idata->opciones);
                $text = explode('|', $t1[0]);
                $values = explode('|', $t1[1]);
                $op = array('text' => $text, 'values' => $values);
            }
            $prodind[$idata->producto_id][$idata->clave_indicador]['opciones'] = $op;
        }

        $valores = [];
        $led = SQLConnection::backendStoreProcedure('LN_subcontratistas', array('valores_grilla', null, $cliente), 'select');
        foreach ($led as $datos) {
            /*$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);*/
            $valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);
        }

        $navtext = "Panel de subcontratistas";

        return view('/led/led_panel_subcontratistas')->with(compact(['subc', 'productos', 'prodind', 'valores', 'navtext']));
    }


    /* Vista del panel de control de ingreso, lista todas las contrapartes y subcontratistas que tengan productos
        de control de ingreso */
    public static function ledPanelControlIngreso()
    {
        $cliente = Session::get('usuario')->cliente['client_id'];

        $contrapartes = SQLConnection::backendStoreProcedure('LN_control_ingreso', array('contrapartes', $cliente), 'select');

        $productos_grilla = SQLConnection::backendStoreProcedure('LN_control_ingreso', array('productos_panel', $cliente), 'select');

        $productos = [];
        foreach ($productos_grilla as $key => $pdata) {
            $productos[$pdata->producto_id]['etiqueta'] = $pdata->etiqueta;
            $productos[$pdata->producto_id]['producto_id'] = $pdata->producto_id;
            $productos[$pdata->producto_id]['class_icon'] = $pdata->class_icon;
        }


        $prodind = [];
        $indic = SQLConnection::backendStoreProcedure('LN_control_ingreso', array('productos_indicadores', $cliente), 'select');
        foreach ($indic as $key => $idata) {
            $prodind[$idata->producto_id][$idata->clave_indicador]['etiqueta'] = $idata->etiqueta_indicador;
            $prodind[$idata->producto_id][$idata->clave_indicador]['tipo_dato'] = $idata->tipo_dato;

            $op = null;
            if (null != $idata->opciones) {
                $t1 = explode('^', $idata->opciones);
                $text = explode('|', $t1[0]);
                $values = explode('|', $t1[1]);
                $op = array('text' => $text, 'values' => $values);
            }
            $prodind[$idata->producto_id][$idata->clave_indicador]['opciones'] = $op;
        }


        $valores = [];
        $led = SQLConnection::backendStoreProcedure('LN_control_ingreso', array('valores_grilla', $cliente), 'select');
        foreach ($led as $datos) {
            /*$valores[$datos->contraparte][$datos->indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);*/
            $valores[$datos->contraparte][$datos->producto_id][$datos->clave_indicador] = array($datos->valor, $datos->color, $datos->punto, $datos->svg_data, $datos->textcaption);
        }

        $navtext = "Control de ingreso";

        return view('/led/led_panel_control_ingreso')->with(compact(['cliente', 'contrapartes', 'productos', 'prodind', 'valores', 'navtext']));
    }




    public static function ledDossier()
    {
        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        $dossier = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('consultar', $id, Session::get('usuario')->user_id), 'selectOne');

        return view('/led/led_dossier')->with(compact(['qcontrap', 'dossier']));
    }


    public static function ledDossierSolicitar()
    {
        $id = Request::input('contraparte');
        $observaciones = Request::input('observaciones');
        $temp = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('solicitar', $id, Session::get('usuario')->user_id), 'selectOne');
        $dossier = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('consultar', $id, Session::get('usuario')->user_id), 'selectOne');

        /* send mail */
        $content = array('nombre_cliente' => $dossier->nombre_cliente,
                                    'nombre_persona' => $dossier->nombre_persona,
                                    'abreviatura' => $dossier->abreviatura,
                                    'numero' => $dossier->numero,
                                    'country_code' => $dossier->country_code,
                                    'country_name' => $dossier->country_name,
                                    'fecha_solicitud' => $dossier->fecha_solicitud,
                                    'solicitado_por_usuario' => $dossier->solicitado_por_usuario,
                                    'observaciones' => $observaciones);



        $to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : env('LED_COMERCIAL_EMAIL_ADDR');
        Misc::enviarMail('/led/led_solicitar_dossier_email', $to, $content, "Fidelitas - Solicitud de Dossier LED");

        return view('/led/led_dossier')->with(compact(['qcontrap', 'dossier']));
    }


    public static function ledDossierCancelar()
    {
        $id = Request::input('contraparte');
        $temp = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('cancelar', $id, Session::get('usuario')->user_id), 'selectOne');
        $dossier = SQLConnection::backendStoreProcedure('LN_contraparte_dossier', array('consultar', $id, Session::get('usuario')->user_id), 'selectOne');


        /* send mail */
        $content = array('nombre_cliente' => $dossier->nombre_cliente,
                                    'nombre_persona' => $dossier->nombre_persona,
                                    'abreviatura' => $dossier->abreviatura,
                                    'numero' => $dossier->numero,
                                    'country_code' => $dossier->country_code,
                                    'country_name' => $dossier->country_name,
                                    'fecha_solicitud' => $dossier->fecha_solicitud,
                                    'fecha_cancelacion' => $dossier->fecha_cancelacion,
                                    'solicitado_por_usuario' => $dossier->solicitado_por_usuario,
                                    'cancelado_por_usuario' => $dossier->cancelado_por_usuario);


        $to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : env('LED_COMERCIAL_EMAIL_ADDR');
        Misc::enviarMail('/led/led_cancelar_dossier_email', $to, $content, "Fidelitas - Cancelación de Dossier LED");

        return view('/led/led_dossier')->with(compact(['qcontrap', 'dossier']));
    }

    public static function ledFidecheck()
    {
        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

        $socios = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'S'), 'select');
        $relac = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'R'), 'select');
        $direct = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'D'), 'select');
        $propio = SQLConnection::backendStoreProcedure('LN_demo_fidecheck_', array('search', null, $id, null, 'P'), 'selectOne');

        return view('/led/led_fidecheck')->with(compact(['qcontrap', 'socios', 'relac', 'direct','propio']));

    }

    public static function ledSlider()
    {
        return view('/led/slider');
    }


    public static function ledDossierDemo()
    {
        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

        $dossier = DB::selectOne("select LN_contrapartes.contraparte, LN_gestiones.gestion, LN_contrapartes.inicio_actividades, LN_contrapartes.empleados, LN_contrapartes.resenia,
                            LN_demo.status_formales, LN_demo.status_relaciones, LN_demo.status_comerciales, LN_demo.status_fiscales, LN_demo.status_legales, 
                            LN_demo.status_bancos, LN_demo.status_comex, LN_demo.status_contables, LN_demo.status_prensa, LN_demo.status_peps, 
                            LN_demo.analisis, LN_demo.pep_html, LN_demo.visible, LN_demo.producto,
                            substring(convert(varchar(10),LN_contrapartes.inicio_actividades,103),4,7) as mes_inicio
                        from LN_contrapartes 
                        inner join LN_demo on LN_contrapartes.contraparte = LN_demo.contraparte
                        inner join LN_gestiones on (LN_contrapartes.contraparte = LN_gestiones.contraparte
                                            and LN_demo.gestion = LN_gestiones.gestion)
                        inner join LN_productos on LN_demo.producto = LN_productos.producto
                        where LN_demo.contraparte =  " . $id . " and LN_gestiones.desde <= GETDATE()
                        and LN_gestiones.hasta >= GETDATE()
                        and LN_productos.producto_id = 'dossierdemo' ", array());

        if (!empty($dossier)) {
            $logo_name = null;
            $file_exists = false;
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
                $logo_name = $id . '.png';
            }
            if (null == $logo_name) {
                if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
                    $logo_name = $id . '.jpg';
                }
            }
            if (null == $logo_name) {
                if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
                    $logo_name = $id . '.gif';
                }
            }

            $score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'SCORE_DOSSIER'), 'selectOne');
            $nivelr = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'NIVEL_RIESGO'), 'selectOne');
            $depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'DEP_ECON'), 'selectOne');

            $once = true;
            foreach ($dossier as $key => $value) {
                if ($once == true) {
                    $dossier->resenia = nl2br($dossier->resenia);
                    $dossier->analisis = nl2br($dossier->analisis);
                    $once = false;
                }
            }


            $pdfdossier = null;
            if (file_exists(env('PATH_DOCUMENTOS') . '/dossier/' . $id . '.pdf')) {
                $pdfdossier = $id . '.pdf';
            }
        }

        $user_id = Session::get('usuario')->user_id;

        if ($user_id == '583706793') {
          return view('/led/led_dossier_demo_pae')->with(compact(['qcontrap', 'logo_name', 'dossier', 'score', 'nivelr', 'depecon', 'pdfdossier']));
        }else{
          return view('/led/led_dossier_demo')->with(compact(['qcontrap', 'logo_name', 'dossier', 'score', 'nivelr', 'depecon', 'pdfdossier']));
        }

    }

    public static function ledDependencia(){
        $id = Request::input('contraparte');
        $dep = DB::selectOne('EXEC LN_dependencia_economica ?', array($id));
        $compras = DB::select('EXEC LN_dependencia_economica_compras ?', array($id));
        
        $otros_datos = []; 
        $datos = []; 
        $otros_datos = DB::select('EXEC LN_contraparte_datos_aportados_ ?', array($id));
        $i = 0; 
        foreach ($otros_datos as $value) {
                $value->titulo = strtoupper($value->titulo); 
                $datos[$value->titulo][$i] = new stdClass();
                $datos[$value->titulo][$i]->item  = $value->item;
                $datos[$value->titulo][$i]->fecha = $value->fecha;
                $datos[$value->titulo][$i]->valor = $value->valor; 
                $i += 1; 
        }
        //var_dump($datos); die(); 
        return view('/led/led_dependencia')->with(compact(['dep','compras','datos']));
    }

    public static function ledJudicial() {
      $id = Request::input('contraparte');
      $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
      $pedidos_quiebra = []; 
      $concursos_quiebras = []; 
      $otros_juicios_comerciales = []; 

      if (null != $qcontrap->identificacion and $qcontrap->country_code == 'AR') {
         $demandados = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'D', $qcontrap->identificacion, 60, 1));

         if($demandados){
            foreach($demandados as $demandado){
              if($demandado->grupo  == 'OJC'  and 
                  (
                   $demandado->id_tipo_causa == 'JCA' or  // JUICIO DE APREMIO
                   $demandado->id_tipo_causa == 'JE'  or  // JUICIO EJECUTIVO
                   $demandado->id_tipo_causa == 'EH'  or  // JUICIO EJECUTIVO POR HONORARIOS
                   $demandado->id_tipo_causa == 'JO'  or  // JUICIO ORDINARIO
                   $demandado->id_tipo_causa == 'JPC' or  // JUICIO POR COBRO DE PESOS
                   $demandado->id_tipo_causa == 'JP'  or  // JUICIO PRENDARIO
                   $demandado->id_tipo_causa == 'JS'  or  // JUICIO SUMARIO
                   $demandado->id_tipo_causa == 'JSM' or  // JUICIO SUMARISIMO
                   $demandado->id_tipo_causa == 'SPR' or  // SECUESTRO PRENDARIO
                   $demandado->id_tipo_causa == 'STO' or  // SUSP.TRANSIT. P/OPERAR
                   $demandado->id_tipo_causa == 'EJF' or  // EJECUCION FISCAL
                   $demandado->id_tipo_causa == 'EJH' or  // EJECUCION HIPOTECARIA
                   $demandado->id_tipo_causa == 'EJP' or  // EJECUCION PRENDARIA
                   $demandado->id_tipo_causa == 'IDF')    // INHAB.P/DESEMP.FUNC.ENTID.FIN.(ART.41/5 LEY 21526)
              ){
                $otros_juicios_comerciales[]  = $demandado;
              }elseif($demandado->grupo  == 'CYQ'){
                $concursos_quiebras[] = $demandado;
              }elseif($demandado->grupo  == 'PQ'){
                $pedidos_quiebra[] = $demandado;
              }
            }
        }
      }
      return view('led/led_judicial')->with(compact(['qcontrap', 'pedidos_quiebra','concursos_quiebras','otros_juicios_comerciales'])); 
    }

    public static function ledAlertasBCRA(){

        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        if (null != $qcontrap->identificacion and $qcontrap->country_code == 'AR') {
            $cuit = $qcontrap->identificacion;
            $persona_fisica   = (substr($cuit, 0, 1) != '3') ? true : false ;
   
            $id_persona = $qcontrap->id_padron;
            $cantidad = 500;

            $cheques_ordenados          = [];
            $periodos_ordenados         = [];
            $bancos_ordenados           = [];
            $bancos_ordenados_separados = [];
            $cheques_vinculaciones_todas= [];

            $fecha = time();

            /*$cheques      = SQLConnection::backendStoreProcedure('obtener_cheques', array($cuit,$id_persona,$cantidad));*/
            $dias = 360;
            $cheques      = SQLConnection::backendStoreProcedure('LN_alertas_obtener_cheques', array($cuit,$dias));
            /*$cheques_vinculaciones_todas = SQLConnection::backendStoreProcedure('obtener_cheques_vinculaciones_todas', array($cuit,$id_persona,$cantidad));*/
            //$cheques_vinculaciones_todas = SQLConnection::backendStoreProcedure('LN_alertas_obtener_vinculaciones', array($cuit,360));
            $financiero             = SQLConnection::obtenerFinancieroBrief($cuit);
            //Gráfico de Situaciones
            $situaciones  = SQLConnection::obtenerSituacionesBancos($cuit);
            $periodo_maximo             = SQLConnection::obtenerPeriodoMaximo($cuit);

            $sit_mayor_cero = false;
            if ($situaciones) {
                foreach ($situaciones as $situacion) {
                    foreach ($situacion as $key => $value) {
                        if ($key == 'periodo') {
                            $situacion->$key = str_replace('-', ',', $value);
                        }
                        if ($value == null) {
                            $situacion->$key = 0;
                        } elseif ($key != 'periodo') {
                            $sit_mayor_cero = true;
                        }
                    }
                }
            }

            if (!$sit_mayor_cero) {
                $situaciones = null;
            }

            for ($i = 0; $i <= 23; $i++) {
                $periodos_graficos[$i] = date("Ym", strtotime($periodo_maximo." -$i months"));
            }

            /*
            //Gráfico de garantías
            $garantias    = SQLConnection::obtenerGarantiasBancos($cuit);
            $garantias    = $this->procesarGraficoGarantias($garantias,$periodos_graficos);
            if($garantias) {
                foreach ($garantias as $key => $garantia) {
                    foreach ($garantia as $key2 => $value) {
                        if($key2 == 'periodo'){
                            $garantias[$key][$key2] = str_replace('-', ',', $value);
                        }
                    }
                }
            }*/

            //tabla de bancos
            for ($i = 0; $i <= 23; $i++) {
                if ($i%8==0) {
                    $periodo[$i] = date("Ym", strtotime($periodo_maximo." -$i months"));
                } else {
                    $periodo[$i] = date("Ym", strtotime($periodo_maximo." -$i months"));
                }
            }
            krsort($periodo);

            $periodo = array_values($periodo);
            $obtenerBancos = SQLConnection::obtenerBancos($cuit);
            if ($obtenerBancos) {
                foreach ($obtenerBancos as $key_banco =>$banco) {
                    foreach ($periodo as $key_mes => $mes) {
                        if ($mes == $banco->fec_inf) {
                            if (!isset($bancos_ordenados['TOTAL_PERIODO'][$mes]['TOTAL_PERIODO'])) {
                                $bancos_ordenados['TOTAL_PERIODO'][$mes]['TOTAL_PERIODO']  = 0;
                            }
                            $bancos_ordenados[$banco->nombre][$mes]['situacion']  = ($obtenerBancos[$key_banco]->situacion) ? $obtenerBancos[$key_banco]->situacion : '';
                            if (($obtenerBancos[$key_banco]->situacion && $obtenerBancos[$key_banco]->situacion > 1)) {
                                $bancos_ordenados[$banco->nombre][$mes]['desplegar']  = 1;
                            }
                            $bancos_ordenados[$banco->nombre][$mes]['total']      = ($obtenerBancos[$key_banco]->total) ? $obtenerBancos[$key_banco]->total : '';
                            $bancos_ordenados['TOTAL_PERIODO'][$mes]['TOTAL_PERIODO']   += ($obtenerBancos[$key_banco]->total) ? $obtenerBancos[$key_banco]->total : 0;
                        }
                    }
                }
                
                foreach ($bancos_ordenados as $key_bo => $bancos) {
                    foreach ($periodo as $key_mes => $mes) {
                        if (!array_key_exists($mes, $bancos)) {
                            $bancos_ordenados[$key_bo][$mes]['situacion'] = '';
                            $bancos_ordenados[$key_bo][$mes]['total'] = '';
                            $bancos_ordenados[$key_bo][$mes]['TOTAL_PERIODO'] = '';
                        }
                    }
                }

                foreach ($bancos_ordenados as $key_bo => $bancos) {
                    ksort($bancos_ordenados[$key_bo]);
                }

                foreach ($bancos_ordenados as $key_bo => $bancos) {
                    $i =0;
                    $n =0;
                    foreach ($bancos as $key_b  => $banco) {
                        if ($n%8==0) {
                            $i++;
                        }
                        $bancos_ordenados_separados[$key_bo][$i][$key_b] = $banco;
                        $n++;
                    }
                }

                $i =0;
                foreach ($periodo as $key_mes => $mes) {
                    if ($key_mes%8==0) {
                        $i++;
                    }
                    $periodos_ordenados[$i][$key_mes] = $mes;
                }
            }

            $periodo = $periodos_ordenados;
            $bancos_ordenados_separados = array_reverse($bancos_ordenados_separados);

            $obtener_bancos = $bancos_ordenados_separados;

            if ($cheques || $cheques_vinculaciones_todas) {
                foreach ($cheques as $key => $cheque) {
                    $cheques_ordenados[$cheque->tipo][] = $cheque;
                }

                if ($cheques_vinculaciones_todas) {
                    foreach ($cheques_vinculaciones_todas as $key => $vinculacion_anterior) {
                        $vinculacion_encontrada = false;
                        if (isset($cheques_ordenados['vinculaciones'])) {
                            foreach ($cheques_ordenados['vinculaciones'] as $key => $vinculacion) {
                                if ($vinculacion_anterior->cuit_firmante == $vinculacion->cuit_firmante) {
                                    $vinculacion_encontrada = true;
                                }
                            }
                        }
                        if ($vinculacion_encontrada === false) {
                            $vinculacion_anterior->cantidad = 0;
                            $cheques_ordenados['vinculaciones'][] = $vinculacion_anterior;
                        }
                    }
                }

                $cheques_ordenados['cantidad_propios'] = 0;
                $cheques_ordenados['cantidad_propios'] += isset($cheques_ordenados['propio'][0]->total_cheques) ?$cheques_ordenados['propio'][0]->total_cheques : 0;
                $cheques_ordenados['cantidad_propios'] += isset($cheques_ordenados['a_nombre_de_empresa'][0]->total_cheques) ?$cheques_ordenados['a_nombre_de_empresa'][0]->total_cheques : 0;
                //  $cheques_ordenados['cantidad_propios'] += isset($cheques_ordenados['no_informa']) ? sizeof($cheques_ordenados['no_informa']) : 0;
                $cheques_ordenados['cantidad_empresas'] = isset($cheques_ordenados['empresa']) ? sizeof($cheques_ordenados['empresa']) : 0;
                $cheques_ordenados['cantidad_vinculaciones'] = isset($cheques_ordenados['vinculaciones']) ? sizeof($cheques_ordenados['vinculaciones']) : 0;
            }
            /*$grafico_cheques  = SQLConnection::graficoCardChequesRechazados($cuit);*/
            $cancelaciones    = SQLConnection::obtenerCancelacion($cuit);
            /*$grafico_cheques  = self::generarGraficoCheques($grafico_cheques,24);*/

            $persona_fisica   = (substr($cuit, 0, 1) != '3') ? true : false ;
            $cheques  = $cheques_ordenados;


            $vinculados_segun_bcra      = SQLConnection::backendStoreProcedure('obtener_vinculados_segun_BCRA', array($cuit));

            $mensaje = " Sin Fondos, Sin Levantar y/o Cheques Rechazados por Defectos Formales, en los últimos " . $dias . " días";


            return view('/led/led_alertas')->with(compact(['qcontrap', 'cuit', 'cheques', 'mensaje', 'persona_fisica', 'vinculados_segun_bcra', 'periodo', 'obtener_bancos', 'cancelaciones']));
        }
    }


    /******************************************************************/

    public static function ledBusinessReport()
    {
        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

        $businessreport = DB::selectOne("select LN_contrapartes.contraparte, LN_gestiones.gestion,LN_contrapartes.inicio_actividades, LN_contrapartes.empleados, LN_contrapartes.resenia,
                      LN_demo.status_formales, LN_demo.status_relaciones, LN_demo.status_comerciales, LN_demo.status_fiscales, LN_demo.status_legales, 
                      LN_demo.status_bancos, LN_demo.status_comex, LN_demo.status_contables, LN_demo.status_prensa, LN_demo.status_peps, 
                      LN_demo.analisis, LN_demo.pep_html, LN_demo.visible, LN_demo.producto,
                      substring(convert(varchar(10),LN_contrapartes.inicio_actividades,103),4,7) as mes_inicio
                  from LN_contrapartes 
                  inner join LN_demo on LN_contrapartes.contraparte = LN_demo.contraparte
                  inner join LN_gestiones on (LN_contrapartes.contraparte = LN_gestiones.contraparte
                                      and LN_demo.gestion = LN_gestiones.gestion)
                  inner join LN_productos on LN_demo.producto = LN_productos.producto
                  where LN_demo.contraparte =  " . $id . " and LN_gestiones.desde <= GETDATE()
                  and LN_gestiones.hasta >= GETDATE()
                  and LN_productos.producto_id = 'businessreport' ", array());

        if (!empty($businessreport)) {
            $logo_name = null;
            $file_exists = false;
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
                $logo_name = $id . '.png';
            }
            if (null == $logo_name) {
                if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
                    $logo_name = $id . '.jpg';
                }
            }
            if (null == $logo_name) {
                if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
                    $logo_name = $id . '.gif';
                }
            }

            $score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'SCORE_BR'), 'selectOne');

            $once = true;
            foreach ($businessreport as $key => $value) {
                if ($once == true) {
                    $businessreport->resenia = nl2br($businessreport->resenia);
                    $businessreport->analisis = nl2br($businessreport->analisis);
                    $once = false;
                }
            }


            $pdfbusinessrpt = null;
            if (file_exists(env('PATH_DOCUMENTOS') . '/businessreport/' . $id . '.pdf')) {
                $pdfbusinessrpt = $id . '.pdf';
            }
            //dd(env('PATH_DOCUMENTOS') . '/businessreport/' . $id . '.pdf');
        }

        return view('/led/led_business_report')->with(compact(['qcontrap', 'logo_name', 'businessreport', 'score', 'pdfbusinessrpt']));
    }

    /******************************************************************/

    public static function ledRecomendadorCredito()
    {
        $id = Request::input('contraparte');
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        $cuit = $qcontrap->identificacion;

        $logo_name = null;
        
        $file_exists = false;
        if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.png')) {
            $logo_name = $id . '.png';
        }
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.jpg')) {
                $logo_name = $id . '.jpg';
            }
        }
        if (null == $logo_name) {
            if (file_exists(env('PATH_DOCUMENTOS') . '/logos/' . $id . '.gif')) {
                $logo_name = $id . '.gif';
            }
        }


        $periodo_maximo = SQLConnection::obtenerPeriodoMaximo($cuit);
        $situaciones = SQLConnection::obtenerSituacionesBancos($cuit);

        $sit_mayor_cero = false;
        if ($situaciones) {
            foreach ($situaciones as $situacion) {
                foreach ($situacion as $key => $value) {
                    if ($key == 'periodo') {
                        $situacion->$key = str_replace('-', ',', $value);
                    }
                    if ($value == null) {
                        $situacion->$key = 0;
                    } elseif ($key != 'periodo') {
                        $sit_mayor_cero = true;
                    }
                }
            }
        }

        if (!$sit_mayor_cero) {
            $situaciones = null;
        }

        //$situaciones = json_encode($situaciones); pato 21-05-19 para tratarlo igual que en el IC
        $grafico_situaciones = '';

        $env = Misc::obtenerColoresEnv();

        $pdfrc = null;
        if (file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente . '/' . $id . '.pdf')) {
            $pdfrc = $id . '.pdf';
        }

        $limite_credito = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $qcontrap->contraparte), 'selectOne');

        /* Información de cendeu ultimo trimestre */
        $cendeu_trimestral = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('cendeu_trimestral', $qcontrap->contraparte), 'select');
        $totalcendeu = 0;
        foreach ($cendeu_trimestral as $k => $banco) {
            $totalcendeu = $totalcendeu + $banco->total;
        }

        /* Información de últimos balances */

        $dbalances = SQLConnection::backendStoreProcedure('LN_balances', array('balances_contraparte', $qcontrap->contraparte), 'select');

        $balances = [];
        $datos_balances = [];

        foreach ($dbalances as $k => $balance) {
            $j = (sizeof($dbalances) - $k - 1);

            $datos_balances[$j] = SQLConnection::backendStoreProcedure('LN_balances', array('datos_contables', null, $balance->id_balance), 'selectOne');

            $balances[$j] = $balance->cierre_ejercicio;
        }

        ksort($balances);
        ksort($datos_balances);


        //Gráfico de garantías
        $periodo_maximo = SQLConnection::obtenerPeriodoMaximo($cuit);
        for ($i = 0; $i <= 23; $i++) {
            $periodos_graficos[$i] = date("Ym", strtotime($periodo_maximo." -$i months"));
        }

        $garantias = SQLConnection::backendStoreProcedure('obtener_garantias_bancos', array($cuit));
        $garantias = MainController::procesarGraficoGarantias($garantias, $periodos_graficos);
        if ($garantias) {
            foreach ($garantias as $key => $garantia) {
                foreach ($garantia as $key2 => $value) {
                    if ($key2 == 'periodo') {
                        $garantias[$key][$key2] = str_replace('-', ',', $value);
                    }
                }
            }
        }
        $grafico_garantias = '';

        /* Consulta de los indicadores del producto que se muestran en la solapa del Recomendador de Crédito */
        $ind1 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_RECOMENDADO'), 'selectOne');
        $ind2 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_RECOMENDADO_FECHA'), 'selectOne');
        $ind3 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_APROBADO'), 'selectOne');
        $ind4 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_APROBADO_FECHA'), 'selectOne');
        $ind5 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_SCORE_BALANCE'), 'selectOne');
        $ind6 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_TEND_BALANCE'), 'selectOne');
        $ind7 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_ESCENARIOS_FUTUROS'), 'selectOne');
        $ind8 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_ESCENARIOS_TENDENCIA'), 'selectOne');
        $ind9 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_SITUACION_SOCIOS'), 'selectOne');
        $ind0 = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_SITUACION_TENDENCIA'), 'selectOne');
        $inda = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_APROBADO_USD'), 'selectOne');
        $indb = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_APROBADO_USD_FECHA'), 'selectOne');
        $indc = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_VENTAS'), 'selectOne');
        $indd = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_VENTAS_FECHA'), 'selectOne');
        $inde = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_DIAS_VENTAS'), 'selectOne');
        $indf = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_VENTAS_PPB'), 'selectOne');
        $indg = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'LC_DIAS_VENTAS_PPB'), 'selectOne');

        $archivos = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('search', $id), 'select');

        $notas = SQLConnection::backendStoreProcedure('LN_limite_credito_notas_', array('search', $id), 'select');

        $vista = \View::make('/led/led_recomendador_credito')->with(compact(['qcontrap' , 'file_exists' , 'logo_name' , 'limite_credito', 'cendeu_trimestral', 'totalcendeu', 'balances', 'datos_balances', 'grafico_situaciones', 'grafico_garantias', 'pdfrc' , 'archivos' , 'notas',
                                                                                                                    'ind1', 'ind2', 'ind3', 'ind4', 'ind5', 'ind6', 'ind7', 'ind8', 'ind9', 'ind0', 'inda', 'indb', 'indc' , 'indd' , 'inde' , 'indf', 'indg' ]))->render();
        /*print_r('TOTAL CENDEU   ');
        var_dump($total_cendeu);
        print_r('VENTAS   ');
        var_dump($indc);
        die;*/

        return \Response::json(
            array(
                'view' => $vista,
                'info'=>compact('situaciones', 'garantias', 'env')
        
            ),
            200,
            [],
            JSON_NUMERIC_CHECK
        );
    }

    public static function ledRecomendadorCreditoIngresarNota()
    {
        $contraparte = Request::input('contraparte');
        $texto_nota = Request::input('texto_nota');
        $user_id = Request::input('user_id');

        $nueva = SQLConnection::backendStoreProcedure('LN_limite_credito_notas_', array('ingresar_nota', $contraparte, $texto_nota, $user_id), 'select');

        /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
        $notas = SQLConnection::backendStoreProcedure('LN_limite_credito_notas_', array('search', $contraparte), 'select');*/

        return json_encode($nueva);
    }


    public static function ledRecomendadorCreditoSubirArchivo()
    {
        $contraparte = Request::input('contraparte');
        $titulo_archivo = Request::input('titulo_archivo');
        $user_id = Session::get('usuario')->user_id;

        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $contraparte, null, null, null, null, null, null, null, null, null, null, null, null, null));

        $ruta_archivo = '';

        if (!empty($_FILES['archivo']) && $_FILES['archivo']['name'] !== '') {
            $userfile_name = $_FILES['archivo']['name'];
            $userfile_extn = substr($userfile_name, strrpos($userfile_name, '.')+1);

            $ftype = strtolower($userfile_extn);
            if ($ftype == 'png' or $ftype == 'jpg' or $ftype == 'gif' or $ftype == 'pdf') {
                if (basename($_FILES['archivo']['name']) !='') {
                    if (!file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente)) {
                        mkdir(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente, 0777, true);
                    }
                    if (!file_exists(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente . '/' . $contraparte)) {
                        mkdir(env('PATH_DOCUMENTOS') . '/limite-credito/' . $qcontrap->cliente . '/' . $contraparte, 0777, true);
                    }

                    $ruta_archivo = '/limite-credito/' . $qcontrap->cliente . '/' . $contraparte . '/' . $userfile_name;

                    $path = env('PATH_DOCUMENTOS') . $ruta_archivo;
                    $ftype = strtolower(pathinfo($path, PATHINFO_EXTENSION));
                    move_uploaded_file($_FILES['archivo']['tmp_name'], $path);

                    $nuevo = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('insert', $contraparte, $titulo_archivo, $ruta_archivo, $user_id), 'select');

                    return json_encode($nuevo);
                }
            }
        }
    }


    public static function ledRecomendadorCreditoAbrirArchivo()
    {
        $contraparte = Request::input('contraparte');
        $archivo = Request::input('archivo');
        $info = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('select', $contraparte, null, null, null, $archivo), 'selectOne');

        if (!empty($info)) {
            $info->ruta_archivo = env('RUTA_DOCUMENTOS') . $info->ruta_archivo;
        }

        return json_encode($info);
    }

    public static function ledRecomendadorCreditoEditarArchivo()
    {
        $contraparte = Request::input('contraparte');
        $archivo = Request::input('archivo');
        $info = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('select', $contraparte, null, null, null, $archivo), 'selectOne');

        return view('/led/led_recomendador_credito_editar_archivo') ->with(compact(['contraparte', 'info']));
    }

    public static function ledRecomendadorCreditoActualizarArchivo()
    {
        $contraparte = Request::input('contraparte');
        $archivo = Request::input('archivo');
        $titulo_archivo = Request::input('titulo_archivo');

        $temp = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('update', $contraparte, $titulo_archivo, null, null, $archivo), 'selectOne');
        $info = SQLConnection::backendStoreProcedure('LN_limite_credito_archivos_', array('select', $contraparte, null, null, null, $archivo), 'selectOne');

        if (!empty($info)) {
            $info->ruta_archivo = env('RUTA_DOCUMENTOS') . $info->ruta_archivo;
        }

        return json_encode($info);
    }


    public static function ledRecomendadorCreditoActualizarMonto()
    {
        $id = Request::input('contraparte');
        $limite = Request::input('limite');
        $limite_usd = Request::input('limite_usd');


        $nueva_nota = null;
        $nueva_nota_usd = null;
        $limite_credito = null;

        if (!empty($limite)) {
            if ($limite > 0) {
        
                /* La actualización del crédito otorgado devuelve el contenido de la nueva nota creada automáticamente */
                $nueva_nota = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('actualizar_credito_otorgado', $id, $limite, null, Session::get('usuario')->user_id), 'selectOne');

                if (null !== $nueva_nota) {

                    /* Asiento del indicador para el panel de control */
                    $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('monto_aprobado', null, null, null, $id, null, null, $limite, null, null, Session::get('usuario')->user_id), 'selectOne');
                }
            }
        }

        if (!empty($limite_usd)) {
            if ($limite_usd > 0) {

                /* La actualización del crédito otorgado devuelve el contenido de la nueva nota creada automáticamente */
                $nueva_nota_usd = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('actualizar_credito_otorgado_usd', $id, $limite_usd, null, Session::get('usuario')->user_id), 'selectOne');

                if (null !== $nueva_nota_usd) {

                    /* Asiento del indicador para el panel de control */
                    $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('monto_aprobado_usd', null, null, null, $id, null, null, $limite_usd, null, null, Session::get('usuario')->user_id), 'selectOne');
                }
            }
        }

        $limite_credito = SQLConnection::backendStoreProcedure('LN_limite_credito_', array('search', $id), 'selectOne');

        return json_encode(array($nueva_nota , $nueva_nota_usd, $limite_credito));
    }

    public static function ledLimiteCredito() {
      $id = Request::input('contraparte');
      if ($id > 0) {
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
        $solicitado = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'monto_solicitado'), 'selectOne');
        $otorgado = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'monto_otorgado'), 'selectOne');
      }
      return view('/led/led_limite_credito')->with(compact(['qcontrap','solicitado','otorgado']));
    }


    public static function ledDependenciaBalance() {

      $id = Request::input('contraparte');

      $cliente = Session::get('usuario')->cliente['client_id'];
      $id = Request::input('contraparte');
      if ($id > 0) {

        $depecon = new stdClass(); 
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
        $depecon = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'DEP_ECON_BALANCE'), 'selectOne'); 
        $fecha_bal = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente, null, null, $id, 'DEP_ECON_BALANCE_FECHA'), 'selectOne'); 
        $datos = SQLConnection::backendStoreProcedure('LN_dependencia_economica_balance', array($id), 'selectOne');
        $compras = SQLConnection::backendStoreProcedure('LN_dependencia_economica_compras', array($id), 'select');

      }

      return view('/led/led_dependencia_balance')->with(compact(['qcontrap', 'depecon', 'fecha_bal', 'datos', 'compras']));
    }

    /************************************************************************************/


    public static function ledBalances()
    {
        $id = Request::input('contraparte');
        /*
            $usuario              = Session::get('usuario');
            $cliente              = '';

            $token_por_secciones  = Request::input('token_por_secciones');
            $token_por_secciones  = json_decode(Misc::decrypt($token_por_secciones));
            self::$sesion_externa = isset($token_por_secciones->usuario->sesion_externa) ? true : false;


            if(self::$sesion_externa){

              $cliente = '1151080'; // '2254875';
              $token_por_secciones->usuario->cliente = get_object_vars($token_por_secciones->usuario->cliente);
              $token_por_secciones->usuario->cliente['client_id'] = $token_por_secciones->usuario->client_id;
              $token_por_secciones->user_id = 131214525; // 15342812;
              // agregado por marita 23/10/2018 (no andaba para usuarios externos)
              $token_por_secciones->user_id = 131214525; // 15342812;
              $usuario                    = $token_por_secciones->usuario;
              $usuario->cliente['client_id'] = $cliente;
              $usuario->user_id = 131214525; // 15342812;
              if (!isset($usuario->cliente[ENV('ID_INFORME_COMERCIAL')]) &&
                  isset($usuario->cliente['_empty_'])){
                  $usuario->cliente[ENV('ID_INFORME_COMERCIAL')] = $usuario->cliente['_empty_'] ;
              }
              Session::put('usuario',$usuario);
              Session::put('externo',true);
              Session::save();

            }else if($token_id_usuario){
              $datos_cliente  = SQLConnection::obtenerCliente($token_id_usuario->user_id);
              $secciones      = LoginController::obtenerSeccionesHabilitadas($token_id_usuario->user_id);
              $secciones      = array_change_key_case($secciones, CASE_LOWER);
              $cliente_ordenado = [];
              foreach($datos_cliente as $cliente){
                $cliente_ordenado[$cliente->id_producto] = $cliente;
              }

              $token_id_usuario->usuario->cliente = get_object_vars($token_id_usuario->usuario->cliente);
              $token_id_usuario->usuario->cliente[ENV('ID_INFORME_COMERCIAL')]->secciones = $secciones;
              $cliente                    = $token_id_usuario->usuario->cliente[ENV('ID_INFORME_COMERCIAL')]->client_id;
              $secciones_en_mantenimiento = [];
              $usuario                    = $token_id_usuario->usuario;
              $usuario->cliente['client_id'] = $cliente;
              Session::put('usuario',$usuario);
              Session::put('externo',true);
              Session::save();
            }else{
              $cliente            = $usuario->cliente['client_id'];
              $comentarios        = SQLConnection::obtenerComentario($cuit,$cliente);
            }
        */
        $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
        $analisis = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'ANALISIS_BAL'), 'selectOne');

        /*$id_balances = SQLConnection::backendStoreProcedure('LN_contrapartes_id_balances', array($id), 'select');

        $ids_bal = '0';
        foreach ($id_balances as $key => $id_balance) {
          $ids_bal .= ',' . $id_balance->id_balance;
        }*/


        /* Acá se debe hacer el chequeo de la existencia de balances publicados vinculados documentos LED */
        $tiene_score_balance = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_BAL'), 'selectOne');


        /* Cruce de información de balances LED de la contrparte con los balances_contables
                Un balance es provisto por fidelitas cuando está publicado y el doc correspondiente en LED no está Verificado
        */
        $ids_bal = '0';
        $faltantes = '';
        $cantidad_faltantes = 0;
        $info_balances = SQLConnection::backendStoreProcedure('LN_balances', array('balances_contraparte', $id), 'select');
        $hay_provistos_fidelitas = false;
        foreach ($info_balances as $key => $data_balance) {
            if ($data_balance->estado == 'PUBLICADO') {
                $ids_bal .= ',' . $data_balance->id_balance;
                $hay_provistos_fidelitas = ($data_balance->estado_doc != 'V') ? true : $hay_provistos_fidelitas;

                if ($data_balance->estado_doc != 'V') {
                    $faltantes = $faltantes . (('' != $faltantes) ? ', ' : '') . $data_balance->anio_ejercicio;
                    $cantidad_faltantes++;
                }
            }
        }

        if (!empty($tiene_score_balance)) {
            $score = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'SCORE_BAL'), 'selectOne');
            $valoracion = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', null, null, null, $id, 'VALORACION_BAL'), 'selectOne');
            return (self::LEDobtenerContables($qcontrap->identificacion, $ids_bal, $score, $valoracion, $analisis, $tiene_score_balance, $hay_provistos_fidelitas, $faltantes, $cantidad_faltantes));
        } else {
            return (self::LEDobtenerContables($qcontrap->identificacion, $ids_bal, null, null, null, $tiene_score_balance, $hay_provistos_fidelitas, $faltantes, $cantidad_faltantes));
        }
    }

    public static function LEDobtenerContables($cuit, $ids, $score, $valoracion, $analisis, $tiene_balance=true, $hay_provistos_fidelitas=false, $faltantes='', $cantidad_faltantes=0, $json=true, $grafico_capital_de_trabajo='', $grafico_patrimonial='', $grafico_solvencia='', $grafico_liquidez_corriente='', $grafico_endeudamiento_corriente='', $grafico_performance='', $grafico_efecto_palanca='', $grafico_ventas='', $grafico_gastos_totales_sobre_ventas='', $tipo_impresion = '')
    {
        $imagen_fidelitas               = Misc::obtenerImagenFidelitas();
        /*$cuit                           = Request::input('cuit');*/
        $ver_todos                      = (Session::get('externo')) ?  'S' : 'N';
        $notas_contables                = SQLConnection::obtenerNotasContables($cuit, null);
        /*$comentarios_contables          = SQLConnection::obtenerComentariosContables($cuit, null);*/
        $respuesta_activo               = SQLConnection::backendStoreProcedure('obtener_activo_resumido', array(null,null,$ids), 'select');
        //$respuesta_activo               = Misc::procesarBalance($respuesta_activo);
        $respuesta_pasivo               = SQLConnection::backendStoreProcedure('obtener_pasivo_resumido', array(null,null,$ids), 'select');
        //$respuesta_pasivo               = Misc::procesarBalance($respuesta_pasivo);
        $respuesta_estado               = SQLConnection::backendStoreProcedure('obtener_estado_de_resultados_resumido', array(null,null,$ids), 'select');
        //$respuesta_estado               = Misc::procesarBalance($respuesta_estado);
        $indices_de_gestion             = SQLConnection::backendStoreProcedure('obtener_indices_de_gestion_resumido', array(null,null,$ids), 'select');
        //$indices_de_gestion             = Misc::procesarBalance($indices_de_gestion);
        $respuesta_activo_extendido     = SQLConnection::backendStoreProcedure('obtener_activo_contables', array(null,null,$ids), 'select');
        //$respuesta_activo_extendido     = Misc::procesarBalance($respuesta_activo_extendido);
        $respuesta_pasivo_extendido     = SQLConnection::backendStoreProcedure('obtener_pasivo_contables', array(null,null,$ids), 'select');
        //$respuesta_pasivo_extendido     = Misc::procesarBalance($respuesta_pasivo_extendido);
        $respuesta_estado_extendido     = SQLConnection::backendStoreProcedure('obtener_estado_de_resultados_contables', array(null,null,$ids), 'select');
        //$respuesta_estado_extendido     = Misc::procesarBalance($respuesta_estado_extendido);
        $indices_de_gestion_extendido   = SQLConnection::backendStoreProcedure('obtener_indices_de_gestion', array(null,null,$ids), 'select');
        //$indices_de_gestion_extendido   = Misc::procesarBalance($indices_de_gestion_extendido);

        $contables                      = self::LEDcalcularContables($respuesta_activo, $respuesta_pasivo, $respuesta_estado, $indices_de_gestion);
        //print_r($contables); die();

        $contables_extendido            = self::LEDcalcularContables($respuesta_activo_extendido, $respuesta_pasivo_extendido, $respuesta_estado_extendido, $indices_de_gestion_extendido);
        $activo_extendido               = $contables_extendido['activo'];
        $pasivo_extendido               = $contables_extendido['pasivo'];
        $estado_de_resultados_extendido = $contables_extendido['estado_de_resultados'];
        $indices_extendido              = $contables_extendido['indices_de_gestion'];
        $activo                         = $contables['activo'];
        $pasivo                         = $contables['pasivo'];
        $estado_de_resultados           = $contables['estado_de_resultados'];
        $indices                        = $contables['indices_de_gestion'];
        $grafico_contable               = $contables['graficos'];
        $registros_contables            = self::obtenerRegistrosContables($respuesta_activo, $respuesta_estado, $indices_de_gestion, $respuesta_activo_extendido, $respuesta_pasivo_extendido, $respuesta_estado_extendido, $indices_de_gestion_extendido);
        $traducciones_graficos          = Misc::obtenerTraduccionesGraficos();
        $registro_act                   = $registros_contables['registro_act'];
        $registro_estado                = $registros_contables['registro_estado'];
        $registro_ind_gestion           = $registros_contables['registro_ind_gestion'];
        $registro_gestion_ext           = $registros_contables['registro_gestion_ext'];
        $registro_act_ext               = $registros_contables['registro_act_ext'];
        $registro_pas_ext               = $registros_contables['registro_pas_ext'];
        $registro_estado_ext            = $registros_contables['registro_estado_ext'];
        $registro_gestion_ext           = $registros_contables['registro_gestion_ext'];
        $tipo_persona                   = (substr($cuit, 0, 1) != '3') ? 'f' : 'j' ;

        /*$hay_analisis = ( sizeof($comentarios_contables) > 0 ? ( null != $comentarios_contables[0]->comentarios ? 1 : 0 ) : 0 );*/
        $hay_analisis = !empty($analisis) ? 1 : 0;

        //  $activo = $tiene_balance ? $activo : [];

        $cliente = Session::get('usuario')->cliente['client_id'];

        $productobalance = DB::selectOne("select LN_productos.producto, LN_productos.balance, 
                                  LN_productos.balance_analisis, LN_productos.balance_valoracion,
                                  ISNULL(LN_cliente_productos.version_balance, 'F') AS version_balance
                                from LN_productos
                                inner join LN_familia_productos on LN_productos.producto = LN_familia_productos.producto
                                inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
                                inner join LN_contrapartes on LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
                                inner join LN_cliente_productos on (LN_contrapartes.cliente = LN_cliente_productos.cliente
                                                          AND LN_productos.producto = LN_cliente_productos.producto)
                                inner join padrones on LN_contrapartes.id_padron = padrones.id_padron
                                where LN_productos.balance = 1
                                and LN_familia_productos.activo = 1
                                and LN_contraparte_familias.activo = 1
                                and LN_cliente_productos.activo = 1
                                and padrones.identificacion = '" . $cuit . "' and LN_contrapartes.cliente = " . $cliente, array());


        $balances_data = SQLConnection::backendStoreProcedure('LN_balances_data', array($cuit, null, $ids), 'select');

        $nuevo_extendido = null;
        foreach ($balances_data as $key => $datos_balance) {
            $nuevo_extendido['endeudamiento_corriente'][] = $datos_balance->endeudamiento_corriente;
            $nuevo_extendido['capital_corriente_sobre_activo'][] = $datos_balance->capital_corriente_sobre_activo;
            $nuevo_extendido['rotacion_pasivo_corriente'][] = $datos_balance->rotacion_pasivo_corriente;
            $nuevo_extendido['rotacion_activos'][] = $datos_balance->rotacion_activos;
            $nuevo_extendido['meses_deuda'][] = $datos_balance->meses_deuda;
            $nuevo_extendido['dias_deuda'][] = $datos_balance->dias_deuda;
            $nuevo_extendido['margen_operativo'][] = $datos_balance->margen_operativo;
            $nuevo_extendido['ebitda'][] = $datos_balance->ebitda;
            $nuevo_extendido['ebitda_ventas'][] = $datos_balance->ebitda_ventas;
            $nuevo_extendido['etitda_intereses'][] = $datos_balance->etitda_intereses;
            $nuevo_extendido['gastos_financieros_ventas'][] = $datos_balance->gastos_financieros_ventas;
            $nuevo_extendido['gastos_comerciales_ventas'][] = $datos_balance->gastos_comerciales_ventas;
            $nuevo_extendido['gastos_administracion_ventas'][] = $datos_balance->gastos_administracion_ventas;
            $nuevo_extendido['gastos_totales_ventas'][] = $datos_balance->gastos_totales_ventas;
            $nuevo_extendido['inversiones_bienes_uso'][] = $datos_balance->inversiones_bienes_uso;
            $nuevo_extendido['vida_restante_bienes_uso'][] = $datos_balance->vida_restante_bienes_uso;
        }


        $vista = \View::make('/led/led_contables_ext')->with(compact(
            'productobalance',
            'nuevo_extendido',
            'score',
            'valoracion',
            'analisis',
            'hay_analisis',
            'hay_provistos_fidelitas',
            'faltantes',
            'cantidad_faltantes',
            'activo',
            'pasivo',
            'estado_de_resultados',
            'indices',
            'activo_extendido',
            'pasivo_extendido',
            'estado_de_resultados_extendido',
            'indices_extendido',
            'grafico_capital_de_trabajo',
            'grafico_patrimonial',
            'grafico_solvencia',
            'grafico_liquidez_corriente',
            'grafico_endeudamiento_corriente',
            'grafico_performance',
            'grafico_efecto_palanca',
            'grafico_ventas',
            'grafico_gastos_totales_sobre_ventas',
            'json',
            'registro_act',
            'registro_estado',
            'registro_ind_gestion',
            'registro_gestion_ext',
            'registro_act_ext',
            'registro_pas_ext',
            'registro_estado_ext',
            'registro_gestion_ext',
            'tipo_impresion'
        ))->render();

        if (!$json) {
            return $vista;
        }

        //Session::put($cuit." ".date('Y-m-d').".contables",json_encode($vista));
        $grafico_exportable = false;
        /*if(isset(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')])){
          if(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')]->client_id == 2254875){
            $grafico_exportable = true;
          }
        }*/

        return \Response::json(
            array(
          'view' => $vista,
          'info'=>compact('activo', 'pasivo', 'estado_de_resultados', 'indices', 'grafico_contable', 'grafico_exportable', 'traducciones_graficos', 'tipo_persona', 'imagen_fidelitas')
        ),
            200,
            [],
            JSON_NUMERIC_CHECK
        );
    }



    private static function LEDcalcularContables($respuesta_activo, $respuesta_pasivo, $respuesta_estado, $indices_de_gestion)
    {
        $activo               = '';
        $pasivo               = '';
        $estado_de_resultados = '';
        $indices              = '';
        $grafico_contable     = [];
        ksort($respuesta_activo);
        ksort($respuesta_pasivo);
        ksort($respuesta_estado);
        ksort($indices_de_gestion);


        /* Para que muestre únicamente los últimos 3 balances */


        foreach ($indices_de_gestion as $key_indice => $indice) {
            //Cuenta 'Efecto Palanca'
            $ganancia     = $indice->ganancia;
            $activo_total = $indice->act_total;
            $resultado_efecto_palanca = $ganancia / $activo_total;
            $grafico_contable['periodo'][] = $indice->fecha_balance;
            $grafico_contable['solvencia'][$key_indice][] = $indice->ind_solvencia_pat ;
            $grafico_contable['liquidez_corriente'][$key_indice][] =  $indice->ind_liqcorr ;
            $grafico_contable['endeudamiento_corriente'][$key_indice][] =  $indice->ind_endeu;
            $grafico_contable['utilidad_neta'][$key_indice][] =  $indice->ind_utilfin ;
            $grafico_contable['efecto_palanca'][$key_indice][] = $resultado_efecto_palanca ;
            $indices = true;
        }
        


        foreach ($respuesta_activo as $key_respuesta => $balances) {
            $grafico_contable['periodo'][] = $balances->fecha_balance;
            $grafico_contable['total_activo_corriente'][$key_respuesta][] = $balances->ac_total ;
            $grafico_contable['activo'][$key_respuesta][] = $balances->act_total ;
            $activo = true;
        }


        foreach ($respuesta_pasivo as $key_respuesta => $balances) {
            $grafico_contable['periodo'][] = $balances->fecha_balance;
            $grafico_contable['total_pasivo_corriente'][$key_respuesta][] = $balances->pc_total ;
            $grafico_contable['pasivo'][$key_respuesta][] = $balances->pas_total ;
            $grafico_contable['patrimonio_neto'][$key_respuesta][] = $balances->patrimonio ;
            $respuesta_pasivo = true;
        }


        foreach ($respuesta_estado as $key_respuesta => $balances) {
            //Cuenta GASTOS TOTALES SOBRE VENTAS
            $gasto_adm    =  $balances->res_gasadm;
            $gasto_fin    =  $balances->res_gasfin;
            $gasto_comer  = $balances->res_gascom;
            $venta        = ($grafico_contable['res_vtanet'][$key_respuesta][] = $balances->res_vtanet);
            $gastos_totales_sobre_ventas = ($venta > 0)  ? ((($gasto_adm+$gasto_fin+$gasto_comer) * 100) / $venta) : 0 ;
            $grafico_contable['gastos_totales_sobre_ventas'][$key_respuesta][] =  $gastos_totales_sobre_ventas ;
            $grafico_contable['periodo'][] = $balances->fecha_balance;
            //$grafico_contable['efecto_palanca'][$key_respuesta][] = number_format( ($balances / $grafico_contable['activo'][$key_respuesta][1]),2);
            $grafico_contable['ventas'][$key_respuesta][] = $balances->res_vtanet;
            $respuesta_estado = true;
        }
        if (!$grafico_contable) {
            $grafico_contable = [];
        }
        $return['graficos']             = $grafico_contable;
        $return['activo']               = $activo;
        $return['pasivo']               = $pasivo;
        $return['estado_de_resultados'] = $estado_de_resultados;
        $return['indices_de_gestion']   = $indices;
        return $return;
    }




    private static function obtenerRegistrosContables($respuesta_activo, $respuesta_estado, $indices_de_gestion, $respuesta_activo_extendido, $respuesta_pasivo_extendido, $respuesta_estado_extendido, $indices_de_gestion_extendido)
    {
        $registro_act         = [];
        $registro_estado      = [];
        $registro_ind_gestion = [];
        $registro_act_ext     = [];
        $registro_pas_ext     = [];
        $registro_estado_ext  = [];
        $registro_gestion_ext = [];
        //ACTIVO-PASIVO-PN resumido
        foreach ($respuesta_activo as $key_array => $objeto) {
            $registro_act['periodo'][] = $objeto->fecha_balance;
            $registro_act['ac_total'][] = $objeto->ac_total;
            $registro_act['anc_total'][] = $objeto->anc_total;
            $registro_act['act_total'][] = $objeto->act_total;
            $registro_act['pc_total'][] = $objeto->pc_total;
            $registro_act['pnc_total'][] = $objeto->pnc_total;
            $registro_act['pas_total'][] = $objeto->pas_total;
            $registro_act['patrimonio'][] = $objeto->patrimonio;
            $registro_act['nombre_moneda'] = $objeto->nombre_moneda;
            $registro_act['ruta_archivo'][] = $objeto->ruta_archivo;
            $registro_act['fecha_amd'][] = $objeto->fecha_order;
            $registro_act['cuit'][] = $objeto->cuit;
        }
        //ESTADO DE RESULTADO resumido
        foreach ($respuesta_estado as $key_array => $objeto) {
            $registro_estado['periodo'][] = $objeto->fecha_balance;
            $registro_estado['res_vtanet'][] = $objeto->res_vtanet;
            $registro_estado['ganancia'][] = $objeto->ganancia;
            $registro_estado['nombre_moneda'] = $objeto->nombre_moneda;
        }
        //INDICE DE GESTION resumido
        foreach ($indices_de_gestion as $key_array => $objeto) {
            $registro_ind_gestion['periodo'][] = $objeto->fecha_balance;
            $registro_ind_gestion['ind_liqcorr'][] = $objeto->ind_liqcorr;
            $registro_ind_gestion['ind_endeu'][] = $objeto->ind_endeu;
            //se cambio "ind_solvencia_pat" x "ind_solvencia"
            //se cambio "ind_solvencia" x "ind_solvencia_pat" 28-12-2017 a pedido de edu
            $registro_ind_gestion['ind_solvencia_pat'][] = $objeto->ind_solvencia_pat;
            $registro_ind_gestion['ind_captra'][] = $objeto->ind_captra;
            $registro_ind_gestion['ind_rentabilidad'][] = $objeto->ind_rentabilidad;
            $registro_ind_gestion['ind_rotact'][] = $objeto->ind_rotact;
            $registro_ind_gestion['ind_rotinv'][] = $objeto->ind_rotinv;
            $registro_ind_gestion['ind_marbru'][] = $objeto->ind_marbru;
            $registro_ind_gestion['nombre_moneda'] = $objeto->nombre_moneda;
        }

        // ACTIVO extendido
        foreach ($respuesta_activo_extendido as $key_array => $objeto) {
            $registro_act_ext['periodo'][] = $objeto->fecha_balance;
            $registro_act_ext['ac_cajban'][] = $objeto->ac_cajban;
            $registro_act_ext['ac_inver'][] = $objeto->ac_inver;
            $registro_act_ext['ac_crevta'][] = $objeto->ac_crevta;
            $registro_act_ext['ac_otrcre'][] = $objeto->ac_otrcre;
            $registro_act_ext['ac_biecam'][] = $objeto->ac_biecam;
            $registro_act_ext['ac_bietan'][] = $objeto->ac_bietan;
            $registro_act_ext['ac_otract'][] = $objeto->ac_otract;
            $registro_act_ext['ac_total'][] = $objeto->ac_total;
            $registro_act_ext['anc_crevta'][] = $objeto->anc_crevta;
            $registro_act_ext['anc_otrcre'][] = $objeto->anc_otrcre;
            $registro_act_ext['anc_inver'][] = $objeto->anc_inver;
            $registro_act_ext['anc_actint'][] = $objeto->anc_actint;
            $registro_act_ext['anc_otract'][] = $objeto->anc_otract;
            $registro_act_ext['anc_bieuso'][] = $objeto->anc_bieuso;
            $registro_act_ext['anc_bieusovo'][] = $objeto->anc_bieusovo;
            $registro_act_ext['anc_depacu'][] = $objeto->anc_depacu;
            $registro_act_ext['anc_total'][] = $objeto->anc_total;
            $registro_act_ext['act_total'][] = $objeto->act_total;
            $registro_act_ext['nombre_moneda'] = $objeto->nombre_moneda;
        }
        //PASIVOS extendidos
        foreach ($respuesta_pasivo_extendido as $key_array => $objeto) {
            $registro_pas_ext['periodo'][] = $objeto->fecha_balance;
            $registro_pas_ext['pc_ctapag'][] = $objeto->pc_ctapag;
            $registro_pas_ext['pc_presta'][] = $objeto->pc_presta;
            $registro_pas_ext['pc_remune'][] = $objeto->pc_remune;
            $registro_pas_ext['pc_carfis'][] = $objeto->pc_carfis;
            $registro_pas_ext['pc_antcli'][] = $objeto->pc_antcli;
            $registro_pas_ext['pc_otrpas'][] = $objeto->pc_otrpas;
            $registro_pas_ext['pc_total'][] = $objeto->pc_total;
            $registro_pas_ext['pnc_cuepag'][] = $objeto->pnc_cuepag;
            $registro_pas_ext['pnc_previ'][] = $objeto->pnc_previ;
            $registro_pas_ext['pnc_presta'][] = $objeto->pnc_presta;
            $registro_pas_ext['pnc_otrpas'][] = $objeto->pnc_otrpas;
            $registro_pas_ext['pnc_deufis'][] = $objeto->pnc_deufis;
            $registro_pas_ext['pnc_total'][] = $objeto->pnc_total;
            $registro_pas_ext['pas_total'][] = $objeto->pas_total;
            $registro_pas_ext['capsoc'][] = $objeto->capsoc;
            $registro_pas_ext['res_noasig'][] = $objeto->res_noasig;
            $registro_pas_ext['patrimonio'][] = $objeto->patrimonio;
            $registro_pas_ext['nombre_moneda'] = $objeto->nombre_moneda;
        }
        //ESTADO DE RESULTADO extendido
        foreach ($respuesta_estado_extendido as $key_array => $objeto) {
            $v1 = $objeto->res_vtanet;
            $v2 = $objeto->res_cosmer;
            $resultado_bruto =  $v1 - $v2;
            $registro_estado_ext['periodo'][]         = $objeto->fecha_balance;
            $registro_estado_ext['res_vtanet'][]      = $objeto->res_vtanet;
            $registro_estado_ext['res_compras'][]     = $objeto->res_compras;
            $registro_estado_ext['res_cosmer'][]      = $objeto->res_cosmer;
            $registro_estado_ext['amortiza'][]        = $objeto->amortiza;
            $registro_estado_ext['res_gascom'][]      = $objeto->res_gascom;
            $registro_estado_ext['res_gasadm'][]      = $objeto->res_gasadm;
            $registro_estado_ext['res_gasfin'][]      = $objeto->res_gasfin;
            $registro_estado_ext['res_otrosegr'][]    = $objeto->res_otrosegr;
            $registro_estado_ext['res_otrosing'][]    = $objeto->res_otrosing;
            $registro_estado_ext['res_resfin'][]      = $objeto->res_resfin;
            $registro_estado_ext['res_iva'][]         = $objeto->res_iva;
            $registro_estado_ext['ganancia'][]        = $objeto->ganancia;
            $registro_estado_ext['resultado_bruto'][] = $resultado_bruto;
            $registro_estado_ext['nombre_moneda']     = $objeto->nombre_moneda;
        }
        //INDICE DE GESTION extendido
        //dd($indices_de_gestion_extendido);
        foreach ($indices_de_gestion_extendido as $key_array => $objeto) {
            $registro_gestion_ext['periodo'][] = $objeto->fecha_balance;
            $registro_gestion_ext['ind_liqcorr'][] = $objeto->ind_liqcorr;
            $registro_gestion_ext['ind_liqseca'][] = $objeto->ind_liqseca;
            $registro_gestion_ext['ind_endeu'][] = $objeto->ind_endeu;
            $registro_gestion_ext['ind_endeuact'][] = $objeto->ind_endeuact;
            //$registro_gestion_ext['ind_solvencia'][] = $objeto->ind_solvencia; se remplazo el 28/12/2017 a pedido de Edu x "ind_solvencia_pat"
            $registro_gestion_ext['ind_solvencia_pat'][] = $objeto->ind_solvencia_pat;
            $registro_gestion_ext['ind_captra'][] = $objeto->ind_captra;
            //$registro_gestion_ext['ind_cappro'][] = $objeto->ind_cappro;
            $registro_gestion_ext['ind_invbu'][] = $objeto->ind_invbu;
            //$registro_gestion_ext['ind_inmact'][] = $objeto->ind_inmact;
            //$registro_gestion_ext['ind_inmpat'][] = $objeto->ind_inmpat;
            $registro_gestion_ext['ind_retpat'][] = $objeto->ind_retpat;
            $registro_gestion_ext['ind_rotvta'][] = $objeto->ind_rotvta;
            $registro_gestion_ext['ind_marbru'][] = $objeto->ind_marbru;
            $registro_gestion_ext['ind_utilfin'][] = $objeto->ind_utilfin;
            $registro_gestion_ext['ind_rentabilidad'][] = $objeto->ind_rentabilidad;
            $registro_gestion_ext['ind_ebipas'][] = $objeto->ind_ebipas;
            $registro_gestion_ext['ind_indrot'][] = $objeto->ind_indrot;
            $registro_gestion_ext['ind_rotinv'][] = $objeto->ind_rotinv;
            $registro_gestion_ext['ind_prest_pn'][] = $objeto->ind_prest_pn;
            $registro_gestion_ext['ind_prest_vtas'][] = $objeto->ind_prest_vtas;
            $registro_gestion_ext['ind_rotact'][] = $objeto->ind_rotact;
            $registro_gestion_ext['nombre_moneda'] = $objeto->nombre_moneda;
        }
        $resp['registro_act']               = $registro_act;
        $resp['registro_estado']            = $registro_estado;
        $resp['registro_ind_gestion']       = $registro_ind_gestion;
        $resp['registro_gestion_ext']       = $registro_gestion_ext;
        $resp['registro_act_ext']           = $registro_act_ext;
        $resp['registro_pas_ext']           = $registro_pas_ext;
        $resp['registro_estado_ext']        = $registro_estado_ext;
        return $resp;
    }


    private function mostrarPdf($file_download,$fecha,$cuit)
    {
      header('Content-Transfer-Encoding: binary');
      header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($file_download)) . ' GMT');
      header('Accept-Ranges: bytes');
      header('Content-Length: ' . filesize($file_download));
      header('Content-Encoding: none');
      header('Content-Type: application/pdf');
      /*header('Content-Disposition: attachment; filename=Balance-'.$cuit.'-'.$fecha.'.pdf');*/
      readfile($file_download);
    }

  public function ledBalancePdf()
  {
    $archivo = Request::input('archivo_pdf');
    $fecha   = Request::input('fecha_pdf');
    $cuit    = Request::input('cuit_pdf');
    if ($archivo != '')
    {
        $file_download = env('PATH_COMPARTIDO') . $archivo; 
    }
    else 
    {
        $file_download = env('PATH_COMPARTIDO') . '/balances/generico.pdf'; 
    }
    $archivo = str_replace('/balances/','',$archivo); 
    return $this->mostrarPDF($file_download,$fecha,$cuit);
  }




    public static function CURLCall($url, $params, $type="POST")
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
                                                    CURLOPT_URL => $url,
                                                    CURLOPT_RETURNTRANSFER => true,
                                                    CURLOPT_ENCODING => "",
                                                    CURLOPT_MAXREDIRS => 10,
                                                    CURLOPT_TIMEOUT => 30,
                                                    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                                    CURLOPT_CUSTOMREQUEST => $type,
                                                    CURLOPT_POSTFIELDS => $params,
                                                    CURLOPT_HTTPHEADER => array(
                                                    "cache-control: no-cache",
                                                    "content-type: application/x-www-form-urlencoded"
                                                    ),
        ));

        $response = curl_exec($curl);
        $err      = curl_error($curl);

        curl_close($curl);

        if ($err) {
            return json_encode(array('error'=>true));
        } else {
            return $response;
        }
    }



    /*** FUNCIONES PARA CALCULOS DE SCORE ***/


    /* Para el producto balance con suscripción de indicadores por cliente */
    public static function actualizarIndicadoresBalance($id=null)
    {
        if ($id > 0) {
            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

            if (!empty($qcontrap)) {
                $cuit = $qcontrap->identificacion;

                $indicadores_balance = SQLConnection::backendStoreProcedure('LN_balances', array('obtener_indicadores', $id), 'select');

                $llamar_curl = false;

                if (!empty($indicadores_balance)) {
                    foreach ($indicadores_balance as $k => $ind) {
                        if ($ind->valoracion == 'A') {
                            /* Se obtiene por cálculo automático */
                            $llamar_curl = true;
                            break;
                        }
                    }
                }

                if ($llamar_curl === true) {
                    $apikey = env('API_KEY');
                    $params = 'apikey=' . $apikey . '&cuit=' . $cuit;

                    $balance = self::CURLCall(env('API_SCORE_BALANCE'), $params);

                    if (!empty($balance)) {
                        $datos = json_decode($balance);
                        $indices = isset($datos->indices) ? $datos->indices : null;

                        foreach ($indicadores_balance as $k => $ind) {
                            if ($ind->valoracion == 'A' and ($ind->tipo_dato == 'I' or $ind->tipo_dato == 'F')) {
                                switch ($ind->clave_indicador) {
                                    case 'SCORE_BAL':
                                        if (isset($datos->score) and $datos->score > 0) {
                                            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_balance', null, null, null, $id, null, $datos->score), 'selectOne');
                                        }
                                        break;
                                    case 'VALORACION_BAL':
                                        break;
                                    case 'ANALISIS_BAL':
                                        break;




                                    case 'BAL_ACTIVO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->activo_corriente_total) and $indices->activo_corriente_total != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ACTIVO_CORRIENTE', $indices->activo_corriente_total, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ACTIVO_NO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->activo_no_corriente_total) and $indices->activo_no_corriente_total != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ACTIVO_NO_CORRIENTE', $indices->activo_no_corriente_total, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ACTIVO_TOTAL':
                                        if ($indices !== null) {
                                            if (isset($indices->activo_total) and $indices->activo_total != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ACTIVO_TOTAL', $indices->activo_total, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_PASIVO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->pasivo_corriente_total) and $indices->pasivo_corriente_total != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PASIVO_CORRIENTE', $indices->pasivo_corriente_total, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_PASIVO_NO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->pasivo_no_corriente_total) and $indices->pasivo_no_corriente_total != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PASIVO_NO_CORRIENTE', $indices->pasivo_no_corriente_total, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_PASIVO_TOTAL':
                                        if ($indices !== null) {
                                            if (isset($indices->pasivo_total) and $indices->pasivo_total != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PASIVO_TOTAL', $indices->pasivo_total, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_PATRIMONIO_NETO':
                                        if ($indices !== null) {
                                            if (isset($indices->patrimonio_neto) and $indices->patrimonio_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PATRIMONIO_NETO', $indices->patrimonio_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->ventas_netas) and $indices->ventas_netas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_VENTAS', $indices->ventas_netas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_RESULTADO':
                                        if ($indices !== null) {
                                            if (isset($indices->resultado) and $indices->resultado != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_RESULTADO', $indices->resultado, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_SOLVENCIA_PATRIMONIAL':
                                        if ($indices !== null) {
                                            if (isset($indices->solvencia_patrimonial) and $indices->solvencia_patrimonial != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_SOLVENCIA_PATRIMONIAL', $indices->solvencia_patrimonial, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ENDEUDAMIENTO_TOTAL':
                                        if ($indices !== null) {
                                            if (isset($indices->endeudamiento_total) and $indices->endeudamiento_total != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ENDEUDAMIENTO_TOTAL', $indices->endeudamiento_total, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ENDEUDAMIENTO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->endeudamiento_corriente) and $indices->endeudamiento_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ENDEUDAMIENTO_CORRIENTE', $indices->endeudamiento_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_CAPITAL_TRABAJO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_de_trabajo) and $indices->capital_de_trabajo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_CAPITAL_TRABAJO', $indices->capital_de_trabajo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_CAPITAL_CORRIENTE_ACTIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_corriente_sobre_activo) and $indices->capital_corriente_sobre_activo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_CAPITAL_CORRIENTE_ACTIVO', $indices->capital_corriente_sobre_activo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_LIQUIDEZ_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->liquidez_corriente) and $indices->liquidez_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_LIQUIDEZ_CORRIENTE', $indices->liquidez_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_LIQUIDEZ_SECA':
                                        if ($indices !== null) {
                                            if (isset($indices->liquidez_seca) and $indices->liquidez_seca != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_LIQUIDEZ_SECA', $indices->liquidez_seca, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_CREDITOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_creditos) and $indices->rotacion_de_creditos != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_CREDITOS', $indices->rotacion_de_creditos, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_PASIVO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_pasivo_corriente) and $indices->rotacion_pasivo_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_PASIVO_CORRIENTE', $indices->rotacion_pasivo_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_INVENTARIOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_inventarios) and $indices->rotacion_inventarios != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_INVENTARIOS', $indices->rotacion_inventarios, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_ACTIVOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_activos) and $indices->rotacion_activos != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_ACTIVOS', $indices->rotacion_activos, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_ROTACION_ACTIVO_FIJO':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_activo_fijo) and $indices->rotacion_activo_fijo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_ROTACION_ACTIVO_FIJO', $indices->rotacion_activo_fijo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_PRESTAMOS_PATRIMONIO_NETO':
                                        if ($indices !== null) {
                                            if (isset($indices->prestamos_sobre_patrimonio_neto) and $indices->prestamos_sobre_patrimonio_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_PRESTAMOS_PATRIMONIO_NETO', $indices->prestamos_sobre_patrimonio_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MESES_DEUDA':
                                        if ($indices !== null) {
                                            if (isset($indices->meses_deuda) and $indices->meses_deuda != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MESES_DEUDA', $indices->meses_deuda, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_DIAS_DEUDA':
                                        if ($indices !== null) {
                                            if (isset($indices->dias_deuda) and $indices->dias_deuda != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_DIAS_DEUDA', $indices->dias_deuda, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_BRUTO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_bruto) and $indices->margen_bruto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_BRUTO', $indices->margen_bruto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_NETO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_neto) and $indices->margen_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_NETO', $indices->margen_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_OPERATIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_operativo) and $indices->margen_operativo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_OPERATIVO', $indices->margen_operativo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_SOBRE_PATRIMONIO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_sobre_patrimonio) and $indices->margen_sobre_patrimonio != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_SOBRE_PATRIMONIO', $indices->margen_sobre_patrimonio, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_MARGEN_SOBRE_ACTIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->margen_sobre_activo) and $indices->margen_sobre_activo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_MARGEN_SOBRE_ACTIVO', $indices->margen_sobre_activo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_EBITDA':
                                        if ($indices !== null) {
                                            if (isset($indices->ebitda) and $indices->ebitda != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_EBITDA', $indices->ebitda, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_EBITDA_PASIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->ebitda_pasivo) and $indices->ebitda_pasivo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_EBITDA_PASIVO', $indices->ebitda_pasivo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_EBITDA_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->ebitda_ventas) and $indices->ebitda_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_EBITDA_VENTAS', $indices->ebitda_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_EBITDA_INTERESES':
                                        if ($indices !== null) {
                                            if (isset($indices->etitda_intereses) and $indices->etitda_intereses != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_EBITDA_INTERESES', $indices->etitda_intereses, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_GASTOS_FINANCIEROS_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->gastos_financieros_ventas) and $indices->gastos_financieros_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_GASTOS_FINANCIEROS_VENTAS', $indices->gastos_financieros_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_GASTOS_COMERCIALES_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->gastos_comerciales_ventas) and $indices->gastos_comerciales_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_GASTOS_COMERCIALES_VENTAS', $indices->gastos_comerciales_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_GASTOS_ADMINISTRACION_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->gastos_administracion_ventas) and $indices->gastos_administracion_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_GASTOS_ADMINISTRACION_VENTAS', $indices->gastos_administracion_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_GASTOS_TOTALES_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->gastos_totales_ventas) and $indices->gastos_totales_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_GASTOS_TOTALES_VENTAS', $indices->gastos_totales_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_INVERSIONES_BIENES_USO':
                                        if ($indices !== null) {
                                            if (isset($indices->inversiones_bienes_uso) and $indices->inversiones_bienes_uso != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_INVERSIONES_BIENES_USO', $indices->inversiones_bienes_uso, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'BAL_VIDA_RESTANTE_BIENES_USO':
                                        if ($indices !== null) {
                                            if (isset($indices->vida_restante_bienes_uso) and $indices->vida_restante_bienes_uso != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'BAL_VIDA_RESTANTE_BIENES_USO', $indices->vida_restante_bienes_uso, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;






                                    case 'LIQUIDEZ_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->liquidez_corriente) and $indices->liquidez_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'LIQUIDEZ_CORRIENTE', $indices->liquidez_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'LIQUIDEZ_SECA':
                                        if ($indices !== null) {
                                            if (isset($indices->liquidez_seca) and $indices->liquidez_seca != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'LIQUIDEZ_SECA', $indices->liquidez_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ENDEUDAMIENTO_CORRIENTE':
                                        if ($indices !== null) {
                                            if (isset($indices->endeudamiento_corriente) and $indices->endeudamiento_corriente != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ENDEUDAMIENTO_CORRIENTE', $indices->endeudamiento_corriente, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ENDEUDAMIENTO_ACTIVO_FIJO':
                                        if ($indices !== null) {
                                            if (isset($indices->endeudamiento_activo_fijo) and $indices->endeudamiento_activo_fijo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ENDEUDAMIENTO_ACTIVO_FIJO', $indices->endeudamiento_activo_fijo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'SOLVENCIA':
                                        if ($indices !== null) {
                                            if (isset($indices->solvencia) and $indices->solvencia != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'SOLVENCIA', $indices->solvencia, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'SOLVENCIA_PATRIMONIAL':
                                        if ($indices !== null) {
                                            if (isset($indices->solvencia_patrimonial) and $indices->solvencia_patrimonial != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'SOLVENCIA_PATRIMONIAL', $indices->solvencia_patrimonial, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'CAPITAL_TRABAJO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_de_trabajo) and $indices->capital_de_trabajo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'CAPITAL_TRABAJO', $indices->capital_de_trabajo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'CAPITAL_PROPIO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_propio) and $indices->capital_propio != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'CAPITAL_PROPIO', $indices->capital_propio, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'INVERSIONES_BIENES_USO':
                                        if ($indices !== null) {
                                            if (isset($indices->inversiones_bienes_uso) and $indices->inversiones_bienes_uso != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'INVERSIONES_BIENES_USO', $indices->inversiones_bienes_uso, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'INMOBILIZACION_ACTIVOS':
                                        if ($indices !== null) {
                                            if (isset($indices->inmovilizacion_de_activos) and $indices->inmovilizacion_de_activos != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'INMOBILIZACION_ACTIVOS', $indices->inmovilizacion_de_activos, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'INMOBILIZACION_PATRIMONIO_NETO':
                                        if ($indices !== null) {
                                            if (isset($indices->inmovilizacion_patrimonio_neto) and $indices->inmovilizacion_patrimonio_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'INMOBILIZACION_PATRIMONIO_NETO', $indices->inmovilizacion_patrimonio_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'UTILIDAD_BRUTA':
                                        if ($indices !== null) {
                                            if (isset($indices->utilidad_bruta) and $indices->utilidad_bruta != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'UTILIDAD_BRUTA', $indices->utilidad_bruta, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'UTILIDAD_NETA':
                                        if ($indices !== null) {
                                            if (isset($indices->utilidad_neta) and $indices->utilidad_neta != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'UTILIDAD_NETA', $indices->utilidad_neta, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RETORNO_PATRIMONIO':
                                        if ($indices !== null) {
                                            if (isset($indices->retorno_sobre_patrimonio) and $indices->retorno_sobre_patrimonio != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RETORNO_PATRIMONIO', $indices->retorno_sobre_patrimonio, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_ventas) and $indices->rotacion_de_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_VENTAS', $indices->rotacion_de_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_VENTAS_DIAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_ventas_dias) and $indices->rotacion_de_ventas_dias != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_VENTAS_DIAS', $indices->rotacion_de_ventas_dias, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_ACTIVO_FIJO':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_activo_fijo) and $indices->rotacion_activo_fijo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_ACTIVO_FIJO', $indices->rotacion_activo_fijo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_ACTIVO_FIJO_DIAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_activo_fijo_dias) and $indices->rotacion_activo_fijo_dias != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_ACTIVO_FIJO_DIAS', $indices->rotacion_activo_fijo_dias, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RENTABILIDAD_SOBRE_ACTIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->rentabilidad_sobre_activo) and $indices->rentabilidad_sobre_activo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RENTABILIDAD_SOBRE_ACTIVO', $indices->rentabilidad_sobre_activo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'EBITDA_PASIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->ebitda_pasivo) and $indices->ebitda_pasivo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'EBITDA_PASIVO', $indices->ebitda_pasivo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_CREDITOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_creditos) and $indices->rotacion_de_creditos != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_CREDITOS', $indices->rotacion_de_creditos, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_CREDITOS_DIAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_de_creditos_dias) and $indices->rotacion_de_creditos_dias != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_CREDITOS_DIAS', $indices->rotacion_de_creditos_dias, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_INVENTARIOS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_inventarios) and $indices->rotacion_inventarios != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_INVENTARIOS', $indices->rotacion_inventarios, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'ROTACION_INVENTARIOS_DIAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rotacion_inventarios_dias) and $indices->rotacion_inventarios_dias != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'ROTACION_INVENTARIOS_DIAS', $indices->rotacion_inventarios_dias, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'PRESTAMOS_PATRIMONIO_NETO':
                                        if ($indices !== null) {
                                            if (isset($indices->prestamos_sobre_patrimonio_neto) and $indices->prestamos_sobre_patrimonio_neto != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'PRESTAMOS_PATRIMONIO_NETO', $indices->prestamos_sobre_patrimonio_neto, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'PRESTAMOS_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->prestamos_sobre_ventas) and $indices->prestamos_sobre_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'PRESTAMOS_VENTAS', $indices->prestamos_sobre_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'CAPITAL_TRABAJO_ACTIVO':
                                        if ($indices !== null) {
                                            if (isset($indices->capital_de_trabajo_activo) and $indices->capital_de_trabajo_activo != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'CAPITAL_TRABAJO_ACTIVO', $indices->capital_de_trabajo_activo, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RENTABILIDAD_BRUTA':
                                        if ($indices !== null) {
                                            if (isset($indices->rentabilidad_bruta) and $indices->rentabilidad_bruta != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RENTABILIDAD_BRUTA', $indices->rentabilidad_bruta, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'VENTAS_BALANCE':
                                        if ($indices !== null) {
                                            if (isset($indices->ventas) and $indices->ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'VENTAS_BALANCE', $indices->ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RENTABILIDAD_SOBRE_VENTAS':
                                        if ($indices !== null) {
                                            if (isset($indices->rentabilidad_sobre_ventas) and $indices->rentabilidad_sobre_ventas != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RENTABILIDAD_SOBRE_VENTAS', $indices->rentabilidad_sobre_ventas, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;
                                    case 'RENTABILIDAD_OPERATIVA':
                                        if ($indices !== null) {
                                            if (isset($indices->rentabilidad_operativa) and $indices->rentabilidad_operativa != null) {
                                                $temp = SQLConnection::backendStoreProcedure('LN_balances', array('actualizar_indicador', $id, null, 'RENTABILIDAD_OPERATIVA', $indices->rentabilidad_operativa, Session::get('usuario')->user_id), 'selectOne');
                                            }
                                        }
                                        break;

                                }
                            }
                        }
                    }
                }
            }
        }
    }


    public static function actualizarScoreBalance($id=null)
    {
        if ($id > 0) {
            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
            if (!empty($qcontrap)) {

                /*$calcula_score_balance = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_BAL'), 'selectOne');

                if(!empty($calcula_score_balance)) {*/

                /** Busco si el indicador de score de balance del producto balance que tenga asociada la contraparte es de cálculo automático **/

                $datosindicador = DB::selectOne("select LN_indicadores.indicador, LN_indicadores.producto, LN_indicadores.valoracion
                                from LN_indicadores inner join LN_familia_productos on
                                LN_indicadores.producto = LN_familia_productos.producto inner join
                                LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
                                inner join LN_productos on LN_indicadores.producto = LN_productos.producto
                                where LN_productos.producto_id = 'balances' 
                                and LN_contraparte_familias.contraparte = " . $id . " 
                                and LN_indicadores.clave_indicador = 'SCORE_BAL'
                                and LN_contraparte_familias.activo = 1 
                                and LN_familia_productos.activo = 1");

                $calcula = (!empty($datosindicador)) ? (($datosindicador->valoracion == 'A') ? true : false) : false;

                if ($calcula == true) {
                    $apikey = env('API_KEY');
                    $params = 'apikey=' . $apikey . '&cuit=' . $qcontrap->numero;

                    $balance = self::CURLCall(env('API_SCORE_BALANCE'), $params);
                    if (!empty($balance)) {
                        $bal = json_decode($balance);

                        //dd($bal);

                        if (isset($bal->score)) {
                            $scb = ($bal->score >= 0) ? round($bal->score, 1) : 0;

                            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_balance', null, null, null, $id, null, $scb), 'selectOne');
                            return ($scb);
                        }
                    }
                }
                    

                /*}*/
            }
        }
        return false;
    }

    public static function actualizarScoreComercialSinBalance($id=null)
    {
        if ($id > 0) {
            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
            if (!empty($qcontrap)) {

                /*$calcula_score_comercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_IC'), 'selectOne');
                if (!empty($calcula_score_comercial)) {*/

                $apikey = env('API_KEY');
                $params = 'apikey=' . $apikey . '&cuit=' . $qcontrap->numero . '&cliente=' . $qcontrap->cliente;

                $infcom =   self::CURLCall(env('API_SCORE_INFORME_SIN_BALANCE'), $params);
                if (!empty($infcom)) {
                    $inf = json_decode($infcom);
                    if (isset($inf->score) and $inf->score > 0) {
                        $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_comercial', null, null, null, $id, null, round($inf->score, 1)), 'selectOne');
                        return (round($inf->score, 1));
                    }
                }

                /*}*/
            }
        }
        return false;
    }

    public static function actualizarScoreComercialConBalance($id=null)
    {
        if ($id > 0) {
            $qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));

            if (!empty($qcontrap)) {
                $calcula_score_comercial = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_IC'), 'selectOne');

                if (!empty($calcula_score_comercial)) {
                    $apikey = env('API_KEY');
                    $params = 'apikey=' . $apikey . '&cuit=' . $qcontrap->numero . '&cliente=' . $qcontrap->cliente;

                    //Córdoba, cambié API_SCORE_INFORME_CON_BALANCE por API_SCORE_INFORME_COMERCIAL en el ENV.
                    $infcom =   self::CURLCall(env('API_SCORE_INFORME_COMERCIAL'), $params);

                    if (!empty($infcom)) {
                        $inf = json_decode($infcom);
                        if (isset($inf->score) and $inf->score > 0) {
                            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_comercial', null, null, null, $id, null, round($inf->score, 1)), 'selectOne');
                            return (round($inf->score, 1));
                        }
                    }
                }
            }
        }
        return false;
    }


    public static function actualizarMonitoreo($id=null)
    {
        if ($id > 0) {
            $fecha = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ultima_novedad_contraparte', null, null, null, $id), 'selectOne');
            return (!empty($fecha) ? $fecha : false);

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $calcula_ultima_novedad = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'ULTIMA_NOVEDAD'), 'selectOne');
                if (!empty($calcula_ultima_novedad)) {
                    $fecha = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('ultima_novedad_contraparte', null, null, null, $id), 'selectOne');
                    return (!empty($fecha) ? $fecha : false);
                }
            }*/
        }
        return false;
    }


    public static function actualizarScoreDocumentos($id=null)
    {
        if ($id > 0) {
            $docs = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_documentos', null, null, null, $id), 'selectOne');
            return (!empty($docs) ? round($docs->score, 1) : false);

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $calcula_score_documentos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'SCORE_DOC'), 'selectOne');
                if (!empty($calcula_score_documentos)) {
                    $docs = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_documentos', null, null, null, $id), 'selectOne');
                    return (!empty($docs) ? round($docs->score,1) : false);
                }
            }*/
        }
        return false;
    }

    public static function actualizarCumplimientoDocumentos($id=null)
    {
        if ($id > 0) {
            $cumpl = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('cumplimiento_documentos', null, null, null, $id), 'selectOne');
            return (!empty($cumpl) ? round($cumpl->score, 1) : false);

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $calcula_cumplimiento_documentos = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('verifica_indicador', null, null, null, $id, 'CUMPL_DOC'), 'selectOne');
                if (!empty($calcula_cumplimiento_documentos)) {
                    $cumpl = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('cumplimiento_documentos', null, null, null, $id), 'selectOne');
                    return (!empty($cumpl) ? round($cumpl->score,1) : false);
                }
            }*/
        }
        return false;
    }

    public static function actualizarScoreFinal($id=null)
    {
        if ($id > 0) {
            $sf = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_final_contraparte', null, null, null, $id), 'selectOne');
            return (!empty($sf) ? round($sf->score, 1) : false);


            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $sf = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('score_final_contraparte', null, null, null, $id), 'selectOne');
                return (!empty($sf) ? round($sf->score,1) : false);
            }*/
        }
        return false;
    }

    public static function actualizarSubcontratistas($id=null)
    {
        if ($id > 0) {
            $cs = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('cantidad_subcontratistas', null, null, null, $id), 'selectOne');
            return (!empty($cs) ? $cs->cantidad : false);

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                $cs = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('cantidad_subcontratistas', null, null, null, $id), 'selectOne');
                return (!empty($cs) ? $cs->cantidad : false);
            }*/
        }
        return false;
    }

    /* estas funciones sólo son válidas si el ID de contraparte es un subcontratista */
    public static function actualizarControlEtico($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('control_etico', null, null, null, $id), 'selectOne');
        }
        return false;
    }
    public static function actualizarControlCalidad($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('control_calidad', null, null, null, $id), 'selectOne');
        }
        return false;
    }
    public static function actualizarControlComercial($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('control_comercial', null, null, null, $id), 'selectOne');
        }
        return false;
    }
    public static function actualizarHomologacionSubcontratista($id=null)
    {
        if ($id > 0) {
            $hmlg = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('homologacion_subcontratista', null, null, null, $id), 'selectOne');

            /*$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
            if(!empty($qcontrap)) {
                if ($qcontrap->subcontratista > 0) {
                    $hmlg = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('homologacion_subcontratista', null, null, null, $id), 'selectOne');
                }
            }*/
        }
        return false;
    }


    public static function actualizarDossierDemo($id=null)
    {
        return false;
    }


    /* Indicador de Fidecheck */
    public static function actualizarFidecheck($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('fidecheck', null, null, null, $id), 'selectOne');
        }
        return false;
    }

    /* Alertas BCRA - Situación bancaria y cheques rechazados */
    public static function actualizarAlertasBCRA($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('alertas_cendeu', null, null, null, $id), 'selectOne');
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('alertas_cheques', null, null, null, $id), 'selectOne');
        }
    }

    public static function actualizarDependenciaEconomica($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('dependencia_economica_calc', null, null, null, $id), 'selectOne');
        }
        return false;
    }

    public static function actualizarRentabilidadOperativa($id=null)
    {
        if ($id > 0) {
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('dias_deuda_ventas', null, null, null, $id), 'selectOne');
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('rentabilidad_operativa_lc', null, null, null, $id), 'selectOne');
            $temp = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('rentabilidad_operativa_lc_fecha', null, null, null, $id), 'selectOne');
        }
        return false;
    }



    /*** FIN FUNCIONES PARA CALCULOS DE INDICADORES ***/


    /** Para llamados por http de actualización de score de balance y valoración de balance (por CUIT) **/
    public static function callActualizarScoreBalance($cuit=null)
    {
        $cuit = (null == $cuit) ? Request::input('cuit') : $cuit;
        $c = 0;
        if (null != $cuit) {
            $contrapartes = DB::select("SELECT LN_contrapartes.contraparte
                            FROM LN_contrapartes INNER JOIN padrones
                            ON LN_contrapartes.id_padron = padrones.id_padron
                            WHERE padrones.identificacion = '" . $cuit . "'");

            $c = sizeof($contrapartes);

            foreach ($contrapartes as $thiscontr) {
                $tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $thiscontr->contraparte);

                /* Cálculo de Scores */
                if ($tiene_balance->balance > 0) {
                    $score_balance = self::actualizarScoreBalance($thiscontr->contraparte);
                    self::actualizarScoreFinal($thiscontr->contraparte);
                }
            }
        }
        return (json_encode(['result' => true, 'CUIT' => $cuit, 'CONTRAPARTES' => $c]));
    }



    public static function callActualizarValoracionBalance($cuit=null)
    {
        if (null != $cuit) {
        }
    }








    public static function ledContrapartesBatch()
    {
        /*$cliente = Session::get('usuario')->cliente['client_id'];*/

        /* Cliente patagonia / usuario patagonia*/
        $cliente = 7333225;
        $user_id = 449870566;


        $lista = DB::select("select ln_contrapartes.* from ln_contrapartes where cliente = " . $cliente . " AND activo = 1");

        $aa = 0;

        if ($aa == 1) {
            foreach ($lista as $key => $thiscontr) {
                $gest = DB::selectOne('EXEC LN_gestiones_ ?,?,?,?,?,?,?,?', array('search', null, null, $thiscontr->contraparte, null, null, 1, null));

                $clave = Misc::generateRandomString(6);
                $f = date('Y-m-d');
                

                /* Antes de actualizar el legajo por primera vez pongo a la contraparte en estado de carga inicial */
                $temp = DB::selectOne("update LN_contrapartes set carga_inicial = 1, limite_carga_inicial = NULL," .
                                                    "clave = '" . $clave . "', clave_temporal = 1, clave_cambio = NULL, fecha_ultimo_cierre = NULL, periodicidad_ejercicio = NULL, " .
                                                    "clave_expira = DATETIMEFROMPARTS( year(dateadd(day,15,getdate())), month(dateadd(day,15,getdate())), day(dateadd(day,15,getdate())),23,59,0,0)" .
                                                    "WHERE contraparte = " . $thiscontr->contraparte);

                /* Generación de los documentos, todos con la tolerancia de carga inicial */
                $temp = DB::selectOne('EXEC dbo.LN_actualizar_legajo ?, ?, ?', array($thiscontr->contraparte, $gest->gestion, $user_id));

                $dataprov = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $thiscontr->contraparte, null, null, null, null, null, null, null, null, null, null, null, null, $user_id));
                //dd($dataprov);

                /* Evalúo si la contraparte tiene asociado el producto balances */
                $tiene_balance = DB::selectOne('EXEC LN_verificar_balance_contraparte '. $thiscontr->contraparte);

                /* Cálculo de Scores */
                if ($tiene_balance->balance > 0) {
                    $score_balance = self::actualizarScoreBalance($thiscontr->contraparte);
                    $score_informe = self::actualizarScoreComercialSinBalance($thiscontr->contraparte);
                } else {
                    $score_informe = self::actualizarScoreComercialConBalance($thiscontr->contraparte);
                }
                self::actualizarScoreDocumentos($thiscontr->contraparte);
                self::actualizarCumplimientoDocumentos($thiscontr->contraparte);
                self::actualizarScoreFinal($thiscontr->contraparte);
                /* Fin cálculo de Scores */


                /* send mail */
                $content = array('nombre_cliente' => $dataprov->nombre_cliente,
                                            'nombre_persona' => $dataprov->nombre_persona,
                                            'abreviatura' => $dataprov->abreviatura,
                                            'numero' => $dataprov->numero,
                                            'nombre_contacto' => $dataprov->nombre_contacto,
                                            'email_contacto' => $dataprov->email_contacto,
                                            'country_code' => $dataprov->country_code,
                                            'country_name' => $dataprov->country_name,
                                            'clave' => $clave,
                                            'clave_expira' => $dataprov->clave_expira,
                                            'url' => env('LED_WEB_PROVEEDOR_URL') );


                $from = 'servicio@fidelitas.com.ar';
                $to = (env('LED_TEST_MODE') == true) ? env('LED_TEST_EMAIL_ADDR') : trim($dataprov->email_contacto);
                $bcc = (env('LED_TEST_MODE') == true) ? null : 'soporteled@fidelitas.com.ar';
                $replyto = 'soporteled@fidelitas.com.ar';
                /*Misc::enviarMailLED('/led/led_contrapartes_email' , $from, $to, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Alta de contrapartes");*/
            }
        } else {
            $from = 'servicio@fidelitas.com.ar';
            $to = env('LED_TEST_EMAIL_ADDR');
            $bcc = 'soporteled@fidelitas.com.ar';
            $replyto = 'soporteled@fidelitas.com.ar';
            $content = $lista;
            Misc::enviarMailLED('/led/mail_prueba', $from, $to, $bcc, $replyto, $content, "Fidelitas Legajo Electrónico Dinámico - Prueba");
        }

        return redirect('/led/led-contrapartes');
    }


    public static function obtenerDataGrafico(){
      /*
      GRAFICO IC

        0 => {#903 ▼
          +"rango": "R1"
          +"etiqueta": "81-100"
          +"color": "63b68c"
          +"total": "315"
        }
        
        LN_contraparte_indicadores.valor_numerico >= 81 then 'R1'
        LN_contraparte_indicadores.valor_numerico >= 61 then 'R2'
        LN_contraparte_indicadores.valor_numerico >= 41 then 'R3'
        LN_contraparte_indicadores.valor_numerico >= 21 then 'R4'
        LN_contraparte_indicadores.valor_numerico >= 0 then 'R5'
      */
        $label           = Request::input('label');
        $valor_indicador = Request::input('value');
        $valor_min       = Request::input('min');
        $valor_max       = Request::input('max');
        $nombre_grafico  = Request::input('nombre_grafico');
        $cliente         = Session::get('usuario')->cliente['client_id'];
        $clave_indicador = '';
        $all             = Request::input();

        /*
          @p_valor_indicador                          int=NULL,
          @p_valor_min                                int=NULL,
          @p_valor_max 
        */
        switch ($nombre_grafico) {
          //GRAFICO INFORME COMERCIAL
          case 'grafico_ic':
            $clave_indicador = 'SCORE_IC';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');     
            break;
          //GRAFICO FIDECHECK  
          case 'grafico_pep':
            //dd($all);
            $clave_indicador = 'FIDECHECK';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico_fidecheck', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');     
            break;
          //GRAFICO SCORE FINAL  
          case 'grafico_sf':
            $clave_indicador = 'SCORE_FINAL';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');     
            break;
          //GRAFICO SCORE BALANCE  
          case 'grafico_sb':
            $clave_indicador = 'SCORE_BAL';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');     
            break;
          //GRAFICO SCORE DOCUMENTOS  
          case 'grafico_scoreDoc':
            /*
            'LN_contraparte_indicadores.valor_numerico' : para el cliente '2046807993'.
              NO TRAE RESULTADOS PORQUE LOS REGISTROS NO TIENEN UN VALOR NUMERICO Y NO PUEDE BUSCAR CON EL PARAMETRO DE "RANGO($label)"   
            */
            $clave_indicador = 'SCORE_DOC';
            $res = SQLConnection::backendStoreProcedure('LN_dashboard_cliente_DEV', array('resp_grafico', $cliente, null, null, null,$clave_indicador,null,null,null,null,null,null,null,$label,$valor_indicador,$valor_min,$valor_max), 'select');
            break;        
          
          
        }
            
        return $res;


    }
}
