<?php namespace App\Http\Controllers;

use App\Custom\SQLConnection;
use App\Custom\Misc;
use App\Custom\ScoringUtilities;
use Request;
use Session;
use DateTime;
use Illuminate\Support\Facades\Input;
use DB;
use App\Http\Controllers\ServiciosExternosController;
use Sunra\PhpSimple\HtmlDomParser;
use App\Http\Controllers\ApiControllerV1;
use Jenssegers\Mongodb\Schema\Blueprint;
// use Illuminate\Session\TokenMismatchException;

class MainController extends Controller {

  private static $amerita_situacion_1 = false;
  private static $cantidad_situacion_1 = 0;
  private static $cuit = '';
  private static $tiene_pdf = false;
  private static $observado = false;
  private static $sesion_externa = '';
  private static $suma_de_grupos = 0;
  private static $porcentaje_por_grupo_afectado_por_preferencias = 0;
  private static $score_contables = 0;
  private static $edad = 28;
  public static $hoja = '';


 

  public function obtenerBuscador(){
    $productos        = Session::get('usuario')->cliente;
    $user_id          = Session::get('usuario')->user_id;
    $id_cliente       = Session::get('usuario')->cliente["client_id"];
    $consumos         = Misc::obtenerConsumos($productos,env('ID_INFORME_COMERCIAL'));
    $lista_paises     = SQLConnection::obtenerPaises();
    $lista_provincias = SQLConnection::obtenerProvincias('54');
    $nombre           = Request::input('p');
    $falta_data       = self::obtenerDatosPerfil($user_id);
    $productos_ids    = self::obtenerIdProductosCliente($id_cliente,'S','S');
      $monitoreo = 0;
    foreach ($productos_ids as $key => $value) {
      if ($value == 16) {
        $monitoreo = 1;
      }
    }
    return view('informes/buscador')->with(compact('lista_paises','lista_provincias','consumos','nombre','falta_data','productos_ids','monitoreo'));
  }

  public static function obtenerResultadoPadronAutocomplete(){
    $todos_los_paises = false;
    $cms              = false;
    if(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')]->client_id == 3920694){
      $cms = true;
    }
    if($cms === false){

      $input_autocomplete = Request::input('input_autocomplete');
      //$input_autocomplete = str_replace("-","",$input_autocomplete);
      //$input_autocomplete = Misc::parsearBusquedaPadron($input_autocomplete);
      if(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')]->client_id == 2254875){
        $todos_los_paises = true;
      }
      return SQLConnection::busquedaPadronAutocomplete($input_autocomplete,$todos_los_paises);
    }else{
      $input_autocomplete = Request::input('input_autocomplete');
      //$input_autocomplete = Misc::parsearBusquedaPadron($input_autocomplete);
   
      return SQLConnection::busquedaPadronAutocompleteCMS($input_autocomplete,$todos_los_paises);
    }
  }
  
  public static function obtenerResultadoPadron($input_autocomplete=""){
    $todos_los_paises   = false;
    $input_autocomplete = ($input_autocomplete != "") ? $input_autocomplete : Request::input('input_autocomplete');
    //$input_autocomplete = str_replace("-", "", $input_autocomplete);
    //$input_autocomplete = Misc::parsearBusquedaPadron($input_autocomplete);
    if(isset(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')])){
      if(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')]->client_id == 2254875){
        $todos_los_paises = true;
      }
    }
      return SQLConnection::busquedaPadron($input_autocomplete,$todos_los_paises);
  }

  public static function obtenerResultadoPadronAvanzado(){
    $razon_social_avanzado  = Request::input('razon_social_avanzado');
    $fisica_juridica        = Request::input('select_fisica_juridica');
    $pais                   = Request::input('select_pais');
    $provincia              = Request::input('select_provincia');
    $edad                   = Request::input('select_rango');
    $genero                 = Request::input('select_genero');
    $condicion_fiscal       = Request::input('select_condicion');
    $actividad_economica    = Request::input('select_actividad');
    $tipo_persona           = Request::input('select_fisica_juridica');
    if ($tipo_persona == 'j') {
      $actividad_economica = null;
    }

    $resultado_avanzado     = SQLConnection::obtenerPadronAvanzado($razon_social_avanzado,$fisica_juridica,$pais,$provincia,$edad,$genero,$condicion_fiscal,$actividad_economica,$tipo_persona); 

    $vista = \View::make('tablasgenerales/tabla_resultado_padron_avanzado')->with(compact('resultado_avanzado'))->render();
    return $vista;
    /*  
    return \Response::json(
      array(
        'view' => $vista
      ), 200, [], JSON_NUMERIC_CHECK);  
    */
  }

  public function obtenerRegistroActividad(){
    $user_id            = Session::get('usuario')->user_id;
    $id_cliente         = Session::get('usuario')->cliente["client_id"];
    $registro_actividad = SQLConnection::obtenerRegistroActividad($user_id,$id_cliente);
    $productos_ids      = self::obtenerIdProductosCliente($id_cliente,'S','S');
    $monitoreo = 0;
    foreach ($productos_ids as $key => $value) {
      if ($value == 16) {
        $monitoreo = 1;
      }
    } 

    return view('informes/registro_actividad')->with(compact('registro_actividad','monitoreo'));
  }

  public function obtenerRegistroConsumos(){
    $user_id    = Session::get('usuario')->user_id;
    $id_cliente     = Session::get('usuario')->cliente["client_id"];
    $productos_ids        = self::obtenerIdProductosCliente($id_cliente,'S','S');

    $monitoreo = 0;
    foreach ($productos_ids as $key => $value) {
      if ($value == 16) {
        $monitoreo = 1;
      }
    }

    return view('informes/registro_consumos')->with(compact('monitoreo'))->render();
  }
  
  public function filtrarRegistroConsumos(){
    $fecha_desde = Request::input('fecha_desde_con');
    $fecha_hasta = Request::input('fecha_hasta_con');
    $user_id   = Session::get('usuario')->user_id;
    $id_cliente  = Session::get('usuario')->cliente["client_id"];
    $producto    = env('ID_INFORME_COMERCIAL');
    
    if ($fecha_desde == '') { $fecha_desde = ' ';}
    if ($fecha_hasta == '') { $fecha_hasta = ' ';}
    $fecha_desde_dmy = substr($fecha_desde, 8, 2) . "/" . substr($fecha_desde, 5, 2) . "/" . substr($fecha_desde, 0, 4);
    $fecha_hasta_dmy = substr($fecha_hasta, 8, 2) . "/" . substr($fecha_hasta, 5, 2) . "/" . substr($fecha_hasta, 0, 4);

    //$id_cliente = '460960454';
    $tipo = 'C'; // ve las consultas de todo el cliente
    if ($id_cliente == '592432729') {  
      $tipo = 'U'; // ve las consultas solo del username
    }
    /*
    if ($id_cliente == '460960454') { 
        $tipo = 'F'; // ve todas las consultas de todos los clientes unificados en la facturacion
    }
    */
    $union = 0; 
    $union = DB::selectOne("SELECT top 1 cliente from clientes_union where cliente_union = " . $id_cliente);
    $tipo = 'C'; // ve las consultas de todo el cliente
    if (isset($union)) 
    { 
        $tipo = 'F'; // ve todas las consultas de todos los clientes unificados en la facturacion
    }
    
    $registros  = SQLConnection::obtenerRegistroConsumos($id_cliente,$user_id,$fecha_desde,$fecha_hasta,$producto,$tipo);

    $totales = [] ; 
    $total_gral = 0;
    foreach ($registros as $registro) {
        $total_gral += 1; 
        if (isset($totales[$registro->username])) {
            $totales[$registro->username] += 1;
        }
        else
        {
            $totales[$registro->username] = 1;
        }
    }
    //print_r($totales); die(); 
    return view('informes/tabla_registro_consumos')->with(compact('registros','totales','total_gral','fecha_desde_dmy','fecha_hasta_dmy')); 
  }



  
  public static function busquedaPadron(){
    $dni              = Request::input('dni');
    $cuit             = Request::input('cuit');
    $razon_social     = Request::input('razon_social');
    $todos_los_paises = false;
    if(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')]->client_id == 2254875){
      $todos_los_paises = true;
    } 
    return SQLConnection::busquedaPadronAutocomplete($cuit.$dni.$razon_social,$todos_los_paises);
  }
  
  public function test(){
    return file_put_contents("reconocimiento.txt", "test");
  }

  
  public static function obtenerCompacto($version_sabana = false, $secciones_sabana = []){
    $mostrar_homonimos = true;
    $incluir_homonimos_impresion = Request::input('incluir_homonimos_impresion');
    if (isset(Session::get('usuario')->preferencias->incluir_homonimos) && (!(Session::get('usuario')->preferencias->incluir_homonimos))) {
      $mostrar_homonimos = false;
    } elseif(isset($incluir_homonimos_impresion)) {
      $mostrar_homonimos = ($incluir_homonimos_impresion == 'on');
    } 

    $cuit                 = Request::input('cuit');
    $nc                   = Request::input('nc');
    $razon_social         = Request::input('rs');
    $razon_social         = str_replace('#', 'ñ', $razon_social);
    $idp                  = Request::input('idp');
    $token                = Request::input('_token');
    $token_por_secciones  = Request::input('token_por_secciones');
    $token_por_secciones  = json_decode(Misc::decrypt($token_por_secciones));
    $token_id_usuario     = Request::input('token_id_usuario');
    $token_id_usuario     = json_decode(Misc::decrypt($token_id_usuario));
    $usuario              = Session::get('usuario');
    $monitoreo            = 0;
    $cliente              = '';
    self::$sesion_externa = isset($token_por_secciones->usuario->sesion_externa) ? true : false;
    $comentarios = [];
    
    
    if(self::$sesion_externa){

      $cliente = '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 = 15342812;
      /* agregado por marita 23/10/2018 (no andaba para usuarios externos) */
      $token_por_secciones->user_id = 15342812;
      $usuario                    = $token_por_secciones->usuario; 
      $usuario->cliente['client_id'] = $cliente;
      $usuario->user_id = 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(); 
      //var_dump(Session::get('usuario')); 
      /* */ 


    }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);  
    }
    $comentarios          = SQLConnection::obtenerComentario($cuit,$cliente);
    $num_comentarios      = count($comentarios);
    $productos_ids        = self::obtenerIdProductosCliente($cliente,'S','S');
    $idp                  = SQLConnection::obtenerIdPadron($cuit);
    $idp = $idp->id_padron;
    $usuario = Session::get('usuario');
    $productos_especiales = SQLConnection::backendStoreProcedure('obtener_productos_usuario', array($usuario->user_id), false);
    if(!empty($productos_especiales)){ 
      $usuario->productos_especiales = $productos_especiales;
      Session::put('usuario',$usuario);
    }
    if($version_sabana == false){
      $version_sabana = 0;
    }else{
      $json = false;
      //Session::put('html', 1);
      $version_sabana = 1;
    }

    foreach ($productos_ids as $key => $value) {
      if ($value == 16) {
        $monitoreo = 1;
      }
      
    }

    
   // if(!$razon_social || $razon_social == 'null'){
      $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona;
      $nc = $razon_social . ' ' . $cuit;
   // }

    if($token_por_secciones){
      $secciones = [];
      $secciones_habilitadas    = LoginController::obtenerSeccionesHabilitadas($token_por_secciones->user_id);

      foreach($secciones_habilitadas as $key=> $sh ){
        if($token_por_secciones->secciones == strtolower($sh->nombre_seccion) ){
          $secciones[$key] = $sh; 
        }
      }
      
      $secciones      = array_change_key_case($secciones, CASE_LOWER);
      $secciones_en_mantenimiento = [];
      $usuario                    = $token_por_secciones->usuario;
      $usuario->cliente[ENV('ID_INFORME_COMERCIAL')]->secciones = $secciones;
      $secciones_en_mantenimiento = SQLConnection::obtenerSeccionesEnMantenimientoUsuarioCuit($token_por_secciones->user_id,$cuit);

      Session::put('usuario',$usuario);
      Session::put('externo',true);
      Session::save();   
    }else{
      $id_usuario                 = Session::get('usuario')->user_id;
      $secciones_en_mantenimiento = SQLConnection::obtenerSeccionesEnMantenimientoUsuarioCuit($id_usuario,$cuit);
      $secciones                  = Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->secciones;
    }
    
    /*
    foreach ($secciones_en_mantenimiento as $key => $value) {
      if($value->seccion_mantenimiento == "9" || $value->seccion_mantenimiento == "10" || $value->seccion_mantenimiento == "99"){
        $secciones_en_mantenimiento[$key] = $value->seccion_mantenimiento;
      }else{
        unset($secciones_en_mantenimiento[$key]); 
      }
    }
    */
    foreach ($secciones_en_mantenimiento as $key => $value) {
      $secciones_en_mantenimiento[$key] = $value->seccion_mantenimiento;
    }
    
    if(
      isset($secciones['fuentes_externas']->nombre_seccion) && $secciones['fuentes_externas']->nombre_seccion == 'fuentes_externas' ||
      isset($secciones['otras_fuentes']->nombre_seccion) && $secciones['otras_fuentes']->nombre_seccion == 'otras_fuentes'
      ){
      $secciones['fuentes_externas']->nombre_seccion = 'Otras Fuentes';
    }
    //$secciones_monitoreo = $secciones;
    $secciones_monitoreo          = SQLConnection::obtenerSeccionesMantenimiento($cliente);
    unset($secciones_monitoreo['fuentes_externas']);
    
    return View('informes/compacto')
    ->with(compact('nc','cuit','token','idp','razon_social','secciones','secciones_en_mantenimiento','secciones_monitoreo','num_comentarios','monitoreo','version_sabana','secciones_sabana', 'mostrar_homonimos'));
  }
  
  public function obtenerComerciales($json = true){
    $imagen_fidelitas = Misc::obtenerImagenFidelitas();
    $cuit             = Request::input('cuit');
    $consultas_ramos  = SQLConnection::obtenerConsultasPorRamos($cuit);
    $seguros          = SQLConnection::backendSeguros($cuit);
    $datos_generales  = SQLConnection::obtenerDatosGenerales($cuit);
    $misc_truncate    = '\App\Custom\Misc::truncate';
    $marcas           = $this->obtenerMarcas();


    foreach($datos_generales as $datos){
      if($datos->titulo == 'MARCAS, PATENTES Y LICENCIAS'){
        $datos->titulo = 'MPL';
      }
    $datos_generales_ordenados[$datos->titulo][] = $datos;
    }

    if (isset($datos_generales_ordenados)) {
      $datos_generales = $datos_generales_ordenados;
    }else{
      $datos_generales = '';
    }

    $consultas = [];
    $ramo = "";
    if($consultas_ramos){
      foreach($consultas_ramos as $consulta){
        $consultas[$consulta->descripcion][$consulta->antiguedad] = $consulta->cantidad;
      }
      foreach($consultas as $key => $consulta){
        if(!isset($consultas[$key]['entre_0_1'])){
          $consultas[$key]['entre_0_1'] = 0;
        }
        if(!isset($consultas[$key]['entre_1_2'])){
          $consultas[$key]['entre_1_2'] = 0;
        }
        if(!isset($consultas[$key]['entre_2_5'])){
          $consultas[$key]['entre_2_5'] = 0;
        }
        ksort($consultas[$key]);
      }

    } 
    //$enviar_mail = '\App\Custom\Misc::enviarMail';
    $vista = \View::make('informes/comerciales')->with(compact('consultas','seguros','datos_generales','marcas','misc_truncate','json'))->render();
    //Session::put($cuit." ".date('Y-m-d').".comerciales",json_encode($vista));
      if(!$json){
       return $vista;
    }
    /*
    if(!$json){
      return \View::make('informes/comerciales')->with(compact('consultas'))->render();
    }*/
      return \Response::json(
      array(
        'view' => $vista,
        'info' => compact('seguros','datos_generales','consultas','marcas','imagen_fidelitas')
      )
    , 200, [], JSON_NUMERIC_CHECK);
  }

  public static function obtenerConstanciaPDF($json = true){
    $cuit               = Request::input('cuit');
    $link_pdf = env('AFIP_URL_COMPARTIDO_PEGAR').'/'.substr($cuit, 0, 2).'/'.substr($cuit, 2, 3).'/'.substr($cuit, 5, 3).'/'.$cuit.'.pdf';
    if(!file_exists($link_pdf)){
        return \Response::make('', 200, [
      'Content-Type' => 'application/pdf',
      'Content-Disposition' => 'inline; filename="constancia.pdf"'
    ]);
    }
    return \Response::make(file_get_contents($link_pdf), 200, [
      'Content-Type' => 'application/pdf',
      'Content-Disposition' => 'inline; filename="constancia.pdf"'
    ]);
  }

  public function obtenerFiscales($json = true,$pdf_inscripcion = ''){
    $imagen_fidelitas             = Misc::obtenerImagenFidelitas();
    $cuit                         = Request::input('cuit');
    $id_padron                    = Request::input('idp');
    $inscripciones                = SQLConnection::obtenerInscripciones($cuit);
    $arba                         = SQLConnection::obtenerArba($cuit);
    $claes                        = SQLConnection::obtenerClae($cuit);
    $sircreb                      = SQLConnection::obtenerSircreb($cuit);
    $fuentes_procesadas           = SQLConnection::obtenerUltimoPeriodoProcesado("sircreb");
    $padron_impuestos             = SQLConnection::obtenerPadronImpuestos($id_padron);
    $padron_actividades           = SQLConnection::obtenerPadronActividades($id_padron);
    $padron_caracterizaciones     = SQLConnection::obtenerPadronCaracterizaciones($id_padron);
    $obtener_domicilios           = SQLConnection::obtenerDomicilios($cuit);
    $domicilios                   = new \stdClass;
    $domicilios->domicilio_fiscal = '';
    $tipo_persona                 = (substr($cuit,0,1) != '3') ? 'f' : 'j' ;
    $razon_social                 = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona;
    $defuncion                    = SQLConnection::obtenerDefuncion($cuit);

    foreach ($padron_impuestos as $key => $value) {
      if (isset($value->fecha_inscripcion)) {
        $value->fecha_inscripcion = Misc::convertirFormatoFecha($value->fecha_inscripcion,'Y-m-d','d/m/Y');
      }else{
        $value->fecha_inscripcion = '';
      }
    }
  
    foreach($obtener_domicilios as  $domicilio){
      //if($domicilio->tipo_domicilio == 'F'){
      if(strpos($domicilio->tipo_domicilio, 'F') !== false){
        if($domicilio->domicilio !=''){
          $domicilios->domicilio_fiscal = Misc::armarDomicilio($domicilio->domicilio,$domicilio->codpos,$domicilio->loc_nombre,$domicilio->prv_nombre,$domicilio->pai_nombre);
          break; 
        }else{
          $domicilios->domicilio_fiscal = '';
        }
      }
    }

    $fiscal_sircreb = array();

    if($sircreb){
      // Estableciendo las fechas correctas
      foreach($sircreb as $key => $info){
        $sircreb[$key]->fecha_publicacion = Misc::convertDate($info->fecha_publicacion,'d/m/Y');
        $sircreb[$key]->vigencia_hasta    = Misc::convertDate($info->vigencia_hasta,'d/m/Y');
        $sircreb[$key]->vigencia_desde    = Misc::convertDate($info->vigencia_desde,'d/m/Y');
      }
      $anio_actual = date("Y");
      $mes_actual = date("n");
      $fiscal_sircreb_anios = array();
      $fiscal_trimestres = array(
        0 => array(1,2,3),
        1 => array(4,5,6),
        2 => array(7,8,9),
        3 => array(10,11,12),
      );
      // Recorriendo fechas 
      foreach($sircreb as $key => $value) { 
        //$fiscal_mes  = substr($value->fecha_publicacion, 3,2);
        //$fiscal_anio = substr($value->fecha_publicacion, 6,4);
        $fiscal_mes  = substr($value->vigencia_desde, 3,2);
        $fiscal_mes = (int)$fiscal_mes;
        $fiscal_anio = substr($value->vigencia_desde, 6,4);
        $fiscal_anio = (int)$fiscal_anio;
        // Años fiscales desde/hasta
        if($key == 0) {
          $diferencia_anios = $anio_actual - $fiscal_anio;

          for($x=0; $x <= $diferencia_anios; $x++) {
            $nuevo_anio = $fiscal_anio + $x;
            $fiscal_sircreb_anios[$nuevo_anio] = $nuevo_anio;
          }
        }
        // Estableciendo Trimestres
        foreach($fiscal_trimestres as $key2 => $trimestre) {
          foreach($trimestre as $value_trimestre){
            if($fiscal_mes == $value_trimestre) {
              $fiscal_sircreb[$fiscal_anio][$key2] = "Riesgo Fiscal";
            }else
            {
              if(!isset($fiscal_sircreb[$fiscal_anio][$key2])){
                $fiscal_sircreb[$fiscal_anio][$key2] = "-";
              }
            }
          }
        }
      }
      if($fuentes_procesadas) {
        $fuentes_procesadas   = Misc::convertDate($fuentes_procesadas,'d/m/Y');
        $mes_fuente_procesada = substr($fuentes_procesadas, 3,2);
      }
      // Estableciendo los años/trimestres completos
      foreach($fiscal_sircreb_anios as $anio) {
        if(!isset($fiscal_sircreb[$anio])) {
          foreach($fiscal_trimestres as $key => $trimestre) {
            foreach($trimestre as $value_trimestre) {
              // Evaluando si existe registro fiscal en el año que esta transcurriendo
              if(($anio_actual == $anio) && ($value_trimestre >= $mes_actual)) {
                if((isset($mes_fuente_procesada)) && ($value_trimestre == $mes_fuente_procesada)) {
                  $fiscal_sircreb[$anio][$key] = "-";
                }else{
                  $fiscal_sircreb[$anio][$key] = "";
                }
              } else{
                  $fiscal_sircreb[$anio][$key] = "-";
              }
            }
          }
        }
      }
      ksort($fiscal_sircreb);
    }

    
    /*
    if($claes){
      foreach($claes as $clae){
        if($clae->fecha_inicio_actividad){
        $fecha_inicio_actividad =  $clae->fecha_inicio_actividad;
        }
      }
    }
    */

    $link_pdf       = env('AFIP_URL_COMPARTIDO_PEGAR').'/'.substr($cuit, 0, 2).'/'.substr($cuit, 2, 3).'/'.substr($cuit, 5, 3).'/'.$cuit.'.pdf';
    $link_pdf_vista = env('AFIP_URL_COMPARTIDO_LEER').'/'.substr($cuit, 0, 2).'/'.substr($cuit, 2, 3).'/'.substr($cuit, 5, 3).'/'.$cuit.'.pdf';
    $pdf_disponible = false;
    $texto_pdf = '';
    if(file_exists($link_pdf) && (filesize($link_pdf) > 3000)) {
      $pdf_disponible = true;
    } else {
      $exec = SQLConnection::backendStoreProcedure('afip_texto_sin_constancia', array($id_padron), true);
      $texto_pdf = ($exec->texto_constancia) ?? 'Sin constancia o identificador inválido';
    }

    $apocrifas = SQLConnection::backendStoreProcedure('obtener_apocrifas', array($cuit), false);

    $aportes = ($tipo_persona == 'f') ? SQLConnection::backendStoreProcedure('backend_mis_aportes', array($cuit, NULL, 12, 1), false) : SQLConnection::backendStoreProcedure('mis_aportes_empresa', array($cuit), false);
    $misaportes = [];

    if($tipo_persona == 'f') {   
      foreach ($aportes as $x => $aporte) {
          $misaportes[$aporte->nombre_empleador . ' - ' . $aporte->identificador_empleador . ' ' . $aporte->cuit_empleador][$aporte->periodo_str]['ddjj'] = $aporte->ddjj;
          $misaportes[$aporte->nombre_empleador . ' - ' . $aporte->identificador_empleador . ' ' . $aporte->cuit_empleador][$aporte->periodo_str]['aportes_os'] = $aporte->aportes_os;
          $misaportes[$aporte->nombre_empleador . ' - ' . $aporte->identificador_empleador . ' ' . $aporte->cuit_empleador][$aporte->periodo_str]['aportes_ss'] = $aporte->aportes_ss;
          $misaportes[$aporte->nombre_empleador . ' - ' . $aporte->identificador_empleador . ' ' . $aporte->cuit_empleador][$aporte->periodo_str]['contr_patronal'] = $aporte->contr_patronal;
      }
    }
    else {
      foreach ($aportes as $x => $aporte) {
          $misaportes[$aporte->periodo_str]['ddjj'] = $aporte->ddjj;
          $misaportes[$aporte->periodo_str]['aportes_os'] = $aporte->aportes_os;
          $misaportes[$aporte->periodo_str]['aportes_ss'] = $aporte->aportes_ss;
          $misaportes[$aporte->periodo_str]['contr_patronal'] = $aporte->contr_patronal;
      }     
    }

    /*$aporteshtml = (sizeof($misaportes) > 0) ? utf8_decode(Misc::decrypt($misaportes[0]->source_html)) : NULL;*/
    
    $vista = \View::make('informes/fiscales')->with(compact('inscripciones','arba','claes','fecha_inicio_actividad','datos_generales','sircreb','domicilios', 'fiscal_sircreb','pdf_disponible','padron_impuestos','padron_actividades','padron_caracterizaciones','tipo_persona','razon_social','defuncion', 'texto_pdf','pdf_inscripcion','link_pdf_vista', 'apocrifas', 'misaportes'))->render();
    //Session::put($cuit." ".date('Y-m-d').".fiscales",json_encode($vista));
    if(!$json){
       return $vista;
    }
    return \Response::json(
      array(
        'view' => $vista,
        'info'=>['pdf_disponible' => $pdf_disponible],
        'info_varios'=>compact('domicilios','inscripciones','padron_impuestos','padron_actividades','padron_caracterizaciones','fiscal_sircreb','arba','pdf_disponible','defuncion','imagen_fidelitas','link_pdf_vista', 'apocrifas', 'misaportes')
      )
    , 200, [], JSON_NUMERIC_CHECK);
  }

  public function obtenerFormales($json=true){
    $imagen_fidelitas   = Misc::obtenerImagenFidelitas();
    $cuit               = Request::input('cuit');
    $id_padron          = Request::input('idp');
    if(!$id_padron){
      $idp       = SQLConnection::obtenerIdPadron($cuit);
      $id_padron = $idp->id_padron;
    }
    $fisica_juridica = Misc::tipoPersona($cuit); 
    $persona_fisica = ($fisica_juridica == 'F') ? true : false;
    $persona            = [];
    $sociedades         = [];
    $empleado_de        = [];
    $empleados          = [];
    $defuncion          = [];
    $razon_social       = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona;
    $usuario            = Session::get('usuario');
    $cliente            = $usuario->cliente['client_id'];     
    $comentarios        = SQLConnection::obtenerComentario($cuit,$cliente);
    $inscripciones      = SQLConnection::obtenerInscripciones($cuit);
    $padron_actividades = SQLConnection::obtenerPadronActividades($cuit);
    if(!$persona_fisica){
      $nombres_anteriores = SQLConnection::backendCambiosNombres($cuit);
      $empleados      = SQLConnection::obtenerEmpleados($cuit);
      $sociedades     = SQLConnection::obtenerSociedades($cuit);
    }else{
      $dni            = (int)substr($cuit, 2,-1);
      $defuncion      = SQLConnection::obtenerDefuncion($cuit);
      $persona        = SQLConnection::obtenerPersona($cuit); 
      $empleado_de    = SQLConnection::obtenerEmpleadoDe($cuit);
      $persona->edad  = '';
      if(!empty($persona->fecha_nacimiento)){
        $edad = Misc::calcularEdad($persona->fecha_nacimiento);
        if($edad){
          $persona->edad = $edad;
        }
      }
    }

    $domicilios     = new \stdClass;
    $formales       = SQLConnection::obtenerDomicilios($cuit);
    $telefonos      = SQLConnection::backendStoreProcedure('obtener_telefono', array($id_padron));
    //armarDomicilio($domicilio,$codpos,$loc_nombre,$prv_nombre,$pai_nombre)
    //$generales      = SQLConnection::obtenerDatosGenerales($cuit);
    $generales = [];
    /*$generales[0]->texto = utf8_encode($generales[0]->texto);
    $generales[0]->mostrar = utf8_encode($generales[0]->mostrar);
    $generales[0]->texto_formateado = utf8_encode($generales[0]->texto_formateado);
    *///$generales      = [];
    //$otros_domicilios = SQLConnection::obtenerOtrosDomicilios($cuit);

    //$domicilios->domicilio vs $domicilios->otros_domicilios
    
    $domicilios->telefonos          = '';
    $domicilios->domicilio_fiscal   = '';
    $domicilios->domicilio_legal    = '';
    $domicilios->otros_domicilios   = '';
    $domicilios->domicilio          = '';
    foreach($formales as $formal) {
/* Telefonos */
      if(isset($formal->telefono) && $formal->telefono != ""){
        $domicilios->telefonos .= $formal->telefono.' <br> ';
      }
 /* Domicilio Legal */
     //if($formal->tipo_domicilio == 'L'){
      if(strpos($formal->tipo_domicilio, 'L') !== false){
        if (isset($domicilios->domicilio_legal) && $domicilios->domicilio_legal != '')
        {
          if (strpos($formal->tipo_domicilio, 'D') === false &&
              strpos($formal->tipo_domicilio, 'E') === false &&
              strpos($formal->tipo_domicilio, 'F') === false)
          {$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';}
        }
        else 
        {
          $domicilios->domicilio_legal = Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
        }
      }
/* Domicilio Fiscal */
      //if($formal->tipo_domicilio == 'F'){
      if(strpos($formal->tipo_domicilio, 'F') !== false){
        if (isset($domicilios->domicilio_fiscal) && $domicilios->domicilio_fiscal != '')
        {
          if (strpos($formal->tipo_domicilio, 'D') === false &&
              strpos($formal->tipo_domicilio, 'E') === false &&
              strpos($formal->tipo_domicilio, 'L') === false)
              {$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';}
        }
        else 
        {
          $domicilios->domicilio_fiscal = Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
        }
      }

/* Domicilio Principal */ 
      //if($formal->tipo_domicilio == 'D' ||  $formal->tipo_domicilio == 'E'){
      if(strpos($formal->tipo_domicilio, 'D') !== false ||
         strpos($formal->tipo_domicilio, 'E') !== false){

        if (isset($domicilios->domicilio) && $domicilios->domicilio != '')
        {
          if (strpos($formal->tipo_domicilio, 'F') === false &&
              strpos($formal->tipo_domicilio, 'L') === false)
          {$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';}
        }
        else 
        {
          $domicilios->domicilio = Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
        }
      }
/* Otros Domicilios */
      //if($formal->tipo_domicilio == 'O'){
      if (strpos($formal->tipo_domicilio, 'O') !== false &&
          strpos($formal->tipo_domicilio, 'D') === false &&
          strpos($formal->tipo_domicilio, 'E') === false &&
          strpos($formal->tipo_domicilio, 'L') === false &&
          strpos($formal->tipo_domicilio, 'F') === false){
          $domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
      }

    }


    if($domicilios->domicilio == '' && $domicilios->domicilio_fiscal != ''){
      $domicilios->domicilio  .= $domicilios->domicilio_fiscal;
    }

     if (isset($domicilios->domicilio_legal) && $domicilios->domicilio_legal != '') {
         $domicilios->otros_domicilios .= $domicilios->domicilio_legal . '<br>'; 
     }

    //$inscripciones  = SQLConnection::obtenerInscripciones($cuit,$id_padron);
    $claes          = SQLConnection::obtenerClae($cuit);
    if($claes){
      foreach($claes as $clae){
        if($clae->fecha_inicio_actividad){
        $fecha_inicio_actividad =  $clae->fecha_inicio_actividad;
        }
      }
    }
    $vista = \View::make('informes/formales')->with(compact('sociedades','inscripciones','formales','domicilios','generales','claes','persona_fisica','persona','empleado_de','fecha_inicio_actividad','defuncion','empleados','razon_social','cuit','comentarios','padron_actividades', 'json','nombres_anteriores','id_padron','telefonos'))->render();

    if(!$json){
       return $vista;
    }
    return \Response::json(
      array(
        'view' => $vista,
        'info'=>compact('sociedades','persona','persona_fisica','imagen_fidelitas')

      )
    , 200, [], JSON_NUMERIC_CHECK);
  }
      
public function obtenerSociedades($json=true){
    $imagen_fidelitas  = Misc::obtenerImagenFidelitas();
    $mostrar_homonimos = true;
    $incluir_homonimos_impresion = Request::input('incluir_homonimos_impresion');
    if($json==false){
      if($incluir_homonimos_impresion== 'on') {
        $mostrar_homonimos = true;
      }else{
        $mostrar_homonimos = false; 
      }
    }else{
      if (isset(Session::get('usuario')->preferencias->incluir_homonimos) && (!(Session::get('usuario')->preferencias->incluir_homonimos))) {
        $mostrar_homonimos = false;
      }
    }

    $cuit                      = Request::input('cuit');
    $razon_social_todos        = [];  
    $razon_social              = Request::input('razon_social');
    $razon_social              = str_replace('#', 'ñ', $razon_social);

    $razon_social_todos[5]     = $razon_social;
    $razon_social_f            = Request::input('razon_social');
    $razon_social_f            = str_replace('#', 'ñ', $razon_social_f);
    $razon_social_f            = preg_replace('/\(|\)/','',$razon_social);
    $malla_razon_social        = $razon_social;
    $participaciones_ordenados = [];
    $resultado_razon_social    = [];
    $sociedades                = SQLConnection::obtenerSociedades($cuit);
    $accionista_de             = SQLConnection::obtenerAccionistasDe($cuit);
    $tipo_persona              = (substr($cuit,0,1) != '3') ? 'f' : 'j' ;
    $resultado_nombres_ant     = []; 
    //busca nombres anteriores de la empresa relacionados con el CUIT
    //$nombres_anteriores        = SQLConnection::obtenerNombresAnteriores($cuit);
    $nombres_anteriores = SQLConnection::backendCambiosNombres($cuit);
    $resultado_nombres_ant[] = $razon_social;
    if ($tipo_persona =='j') {
      $accionistas = SQLConnection::obtenerAccionistasNew($cuit);
      if ($nombres_anteriores) {
        
        foreach ($nombres_anteriores as $nombre_ant) {
            $resultado_nombres_ant[] = $nombre_ant->nombre; 
        }
      }
    }else{
      $accionistas = '';
    }

    $participaciones           = SQLConnection::obtenerParticipacionSociosDirectores($cuit);
    //formateo de fechas - participaciones
    foreach ($participaciones as $key => $value) {
      $participaciones[$key]->desde = Misc::convertirFormatoFecha($value->desde,'Y-m','m-Y'); 
      $participaciones[$key]->hasta = Misc::convertirFormatoFecha($value->hasta,'Y-m','m-Y'); 
    }

    $edictos_homonimos         = [];
    $edictos                   = SQLConnection::obtenerEdictos($cuit);
    $socios_directores         = SQLConnection::obtenerSociosDirectores($cuit,$tipo_persona);
    $sinonimos                 = '';
    $razon_social_completa     = '';
    $razon_social_explode      = explode(" ", $razon_social_f);
    //formateo de fechas - socios_directores
    foreach ($socios_directores as $key => $value) {
      $socios_directores[$key]->c04_periodo_desde = Misc::convertirFormatoFecha($value->c04_periodo_desde,'Y-m','m-Y');
      $socios_directores[$key]->c04_periodo_hasta = Misc::convertirFormatoFecha($value->c04_periodo_hasta,'Y-m','m-Y');
      $socios_directores[$key]->fecha_cons        = Misc::convertirFormatoFecha($value->fecha_cons,'Y-m-d','d-m-Y');
    }
    //formateo de fechas - accionistas_de
    foreach ($accionista_de as $key => $value) {
      $accionista_de[$key]->fecha_ins_rpc = Misc::convertirFormatoFecha($value->fecha_ins_rpc,'Y-m-d','d-m-Y');
      $accionista_de[$key]->fecha_cons = Misc::convertirFormatoFecha($value->fecha_cons,'Y-m-d','d-m-Y');
    }
    //Elimina de las combinaciones los valores que contienen una letra 
    $explode_aux = [];
    foreach ($razon_social_explode as $key => $value) {
      if(isset($value) && (strlen($value) > 1)) {
        $explode_aux[] = $value;
        /*
        $longitud = strlen($razon_social_explode[$key]);
        if ($longitud == 1){
          $razon_social_explode[$key] = '';
          $razon_social_explode = array_filter($razon_social_explode);
        }
        */
      }
    }
    $razon_social_explode = $explode_aux;
    //P. FISICA
    if($tipo_persona == 'f'){
      $razon_social_explode = array_values($razon_social_explode);
      $resultado_razon_social    = Misc::resultadoCombinaciones($razon_social_explode);
      //Limita a 10 resultados las combinaciones en PF
      $resultado_razon_social = array_slice($resultado_razon_social, -10);
      $cant_resultado_razon_social = count($resultado_razon_social);

      if($cant_resultado_razon_social < 10){
        foreach($resultado_razon_social as $key => $rs){
          if(!(end($resultado_razon_social) == $rs)){
            $razon_social_completa .='NEAR(('.str_replace(" ",",",$rs).'),0,true) OR ';
          }else{
            $razon_social_completa .= 'NEAR(('.str_replace(" ",",",$rs).'),0,true)';
          }
        }
      }else{
        $razon_social_completa = "\"".$razon_social_f."\"";
        //$razon_social_completa = "\"".$$razon_social_todos[5]."\"";
      }
    }
    // P. JURIDICA
      //INCLUIR HOMONIMOS EN LA BUSQUEDA POR PERFIL DE USUARIO
      if ($mostrar_homonimos) {

        if($tipo_persona == 'j'){
            $sinonimos                 = Misc::diccionarioSinonimosTEST($resultado_nombres_ant);
            $count_sinonimo = count($sinonimos)-1;
            foreach($sinonimos as $key => $rs){
              if(!($key == $count_sinonimo)){
                $razon_social_completa .= $rs.'OR';
              }else{
                $razon_social_completa .= $rs;
              }
            }
            if(!$razon_social_completa){$razon_social_completa = "\"".$razon_social."\"";}

            $edictos_homonimos         = SQLConnection::obtenerEdictosHomonimos($razon_social_completa);
        }else{
          //Edictos para PF
          $edictos_homonimos       = SQLConnection::obtenerEdictosHomonimos($razon_social_completa);
          $sinonimos = $razon_social_completa; 
        }
        
        if($edictos_homonimos){
          if($tipo_persona == 'f') {
            $edictos_homonimos = Misc::ResaltarResultadosEdictosHomonimosPF($edictos_homonimos,$resultado_razon_social);
          }else{
            //if ($nombres_anteriores) {
              $edictos_homonimos   = Misc::ResaltarResultadosEdictosHomonimosNombresAnt($edictos_homonimos, $sinonimos);
            //}
          }
        }
      } //fin de incluir homonimos por perfil de usuario
      


    if($edictos) {
        $palabras_agregar = []; 
        $sinonimos        = [];
        $razon_social_segmentada = [];
        $razon_social     = Misc::diccionarioSinonimos($razon_social_todos[5]);
        $razon_social     = str_replace('"','',$razon_social);

        //inicio - Obtener Sinonimos
        $palabras = explode(' ',$razon_social);
        //sinonimos PF usa combinacion de nombres que obtiene de $resultado_razon_social
        if ($tipo_persona == 'f') {
          $sinonimos = $resultado_razon_social;
          $edictos = Misc::ResaltarResultadosEdictos($edictos,'',$sinonimos);
        }else{
          //print_r(" 1 - ResaltarResultadosEdictos(edictos,razon_social,'')");
          $edictos = Misc::ResaltarResultadosEdictos($edictos,$razon_social,'');
        }
        
        foreach($palabras as $key => $palabra){
          if(strlen($palabra) > 1){
            $razon_social_segmentada[] = $palabra;
          }
        }

        foreach($razon_social_segmentada as $sinonimo){
          $resp = SQLConnection::obtenerSinonimos($sinonimo);
          if(empty($resp)){
            //print_r(" 2 - ResaltarResultadosEdictos(edictos,razon_social,'')");
            $edictos = Misc::ResaltarResultadosEdictos($edictos,$razon_social,'');
          }else{
            $palabras_agregar[] = $resp;
          }
        }
        foreach ($palabras_agregar as $key => $value) {
          foreach ($value as $sinonimo) {
            if (!empty($sinonimo)) {
              $sinonimos[] =  $palabras[0]." ".$sinonimo;
            }
          }
        }

        if ($sinonimos) {
          //print_r(" 3 - ResaltarResultadosEdictos(edictos,'',sinonimos)");
          $edictos = Misc::ResaltarResultadosEdictos($edictos,'',$sinonimos);
        }
        
    }

    foreach($participaciones as $participacion){
      $participaciones_ordenados[$participacion->nombre_socio][] =  $participacion;
    }
    $malla_societaria     = SQLConnection::grafoSociedades($cuit,$tipo_persona);
    foreach($malla_societaria as $malla){
      $malla_societaria[$malla->seccion] = true;
    }

    $vinculaciones              = SQLConnection::obtenerVinculaciones($cuit);
    //formateo de fechas - vinculaciones
    foreach ($vinculaciones as $key => $value) {
      $vinculaciones[$key]->desde = Misc::convertirFormatoFecha($value->desde,'Y-m','m-Y');
      $vinculaciones[$key]->hasta = Misc::convertirFormatoFecha($value->hasta,'Y-m','m-Y');
    }
    $vinculaciones_indirectas   = SQLConnection::obtenerVinculacionesIndirectas($cuit);
    $vista = \View::make('informes/sociedades')->with(compact('sociedades','socios_directores','accionista_de','edictos','vinculaciones','vinculaciones_indirectas','participaciones_ordenados','accionistas','edictos','json','edictos_homonimos','tipo_persona','idp','malla_societaria','nombres_anteriores','malla_razon_social', 'mostrar_homonimos'))->render();
    //Session::put($cuit." ".date('Y-m-d').".sociedades",json_encode($vista));
    if(!$json){
      return $vista;
    }
    return \Response::json(
      array(
        'view' => $vista,
        'info'=> compact('malla_societaria','tipo_persona','socios_directores','accionistas','accionista_de','vinculaciones','participaciones_ordenados','vinculaciones_indirectas','edictos','edictos_homonimos', 'mostrar_homonimos', 'idp','nombres_anteriores','malla_razon_social','imagen_fidelitas')

      )
    , 200, [], JSON_NUMERIC_CHECK);
  }

  public function obtenerPrensa(){
    //'{"responseData": null, "responseDetails": "This API is no longer available.", "responseStatus": 403}'
    //$razon_social = Request::input('razon_social');
    $buscar_prensa = Request::input('buscar');
    $infobae = "http://www.infobae.com/search/".$buscar_prensa."/?q=".$buscar_prensa."";
    $google_news = "https://www.google.com.ar/search?biw=1600&bih=770&tbm=nws&q=".$buscar_prensa."&oq=".$buscar_prensa."&gs_l=psy-ab.3...17448.18101.0.18209.0.0.0.0.0.0.0.0..0.0....0...1.1.64.psy-ab..0.0.0.BODGyPGXk-U";
    $google_custom_search = "https://www.googleapis.com/customsearch/v1?q=".$buscar_prensa."";
    //$google_news = "https://news.google.com/news/search/section/q/".$buscar_prensa."/".$buscar_prensa."?hl=en&ned=us";

    //$html_infobae = file_get_contents($infobae);
    $html_google_news = file_get_contents($google_news);
    $html_articulos =   preg_match_all('/<article(\s)+class="result-item result-teaser result-teaser-normal">.*?<\/article>/i', $html_google_news, $articulos);
    $count_articulos = count($articulos);


    $vista  = \View::make('informes/prensa')->with(compact('articulos'))->render();
    return response()->json(array('view' => $vista), 200, [], JSON_NUMERIC_CHECK);
  }

  public function formPrensa(){
    $razon_social = Request::input('razon_social');
    $cuit         = Request::input('cuit');
    $tipo_persona = (substr($cuit,0,1) != '3') ? 'f' : 'j' ;
    $vista        = \View::make('informes/form_prensa')->with(compact('razon_social','tipo_persona'))->render();
    return response()->json(array('view' => $vista), 200, [], JSON_NUMERIC_CHECK);
  }

  private function calcularContables($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);

    foreach ($indices_de_gestion as $key_indice => $indice) { 
      //Cuenta 'Efecto Palanca' 
      $ganancia     = $indice->ganancia;
      $activo_total = $indice->act_total;
      if($activo_total > 0){
        $resultado_efecto_palanca = $ganancia / $activo_total;
      }else{
        $resultado_efecto_palanca = 0;
      }
      $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;
  }

  public function obtenerContables($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';
    $respuesta_activo               = SQLConnection::obtenerActivoResumido($cuit,$ver_todos);
    $respuesta_activo               = Misc::procesarBalance($respuesta_activo);
    $respuesta_pasivo               = SQLConnection::obtenerPasivoResumido($cuit,$ver_todos);
    $respuesta_pasivo               = Misc::procesarBalance($respuesta_pasivo);
    $respuesta_estado               = SQLConnection::obtenerEstadodeResultadosResumido($cuit,$ver_todos);
    $respuesta_estado               = Misc::procesarBalance($respuesta_estado);
    $indices_de_gestion             = SQLConnection::obtenerIndicesDeGestionResumido($cuit,$ver_todos);
    $indices_de_gestion             = Misc::procesarBalance($indices_de_gestion);
    $respuesta_activo_extendido     = SQLConnection::obtenerActivo($cuit,$ver_todos);
    $respuesta_activo_extendido     = Misc::procesarBalance($respuesta_activo_extendido);
    $respuesta_pasivo_extendido     = SQLConnection::obtenerPasivo($cuit,$ver_todos);
    $respuesta_pasivo_extendido     = Misc::procesarBalance($respuesta_pasivo_extendido);
    $respuesta_estado_extendido     = SQLConnection::obtenerEstadodeResultados($cuit,$ver_todos);
    $respuesta_estado_extendido     = Misc::procesarBalance($respuesta_estado_extendido);
    $indices_de_gestion_extendido   = SQLConnection::obtenerIndicesDeGestion($cuit,$ver_todos);
    $indices_de_gestion_extendido   = Misc::procesarBalance($indices_de_gestion_extendido);
    $contables                      = self::calcularContables($respuesta_activo,$respuesta_pasivo,$respuesta_estado,$indices_de_gestion);
    $contables_extendido            = self::calcularContables($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            = $this->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' ;

    $vista = \View::make('informes/contables')->with(compact('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','ver_todos'))->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);
  }

public function obtenerLegales($json=true){
    $imagen_fidelitas  = Misc::obtenerImagenFidelitas();
    $mostrar_homonimos = true;
    $incluir_homonimos_impresion = Request::input('incluir_homonimos_impresion');
    if($json==false){
      if($incluir_homonimos_impresion== 'on') {
        $mostrar_homonimos = true;
      }else{
        $mostrar_homonimos = false; 
      }
    }else{
      if (isset(Session::get('usuario')->preferencias->incluir_homonimos) && (!(Session::get('usuario')->preferencias->incluir_homonimos))) {
        $mostrar_homonimos = false;
      }
    }

    if(isset(Session::get('usuario')->preferencias->cantidad_juicios)) {
      $cantidad = is_numeric(Session::get('usuario')->preferencias->cantidad_juicios) ? Session::get('usuario')->preferencias->cantidad_juicios : 500;
    } else {
      $cantidad = 500;
    }

    $mostrar_todos_los_juicios = Request::input('mostrar_todos');
 
    if ($mostrar_todos_los_juicios == 'true') {
      $mostrar_todos_los_juicios = true;
    } else {
      $mostrar_todos_los_juicios = false;
    }

    $razon_social               = Request::input('razon_social');
    $razon_social               = str_replace('#', 'ñ', $razon_social);
    $malla_razon_social        = $razon_social;


    //inicio -var- nombres-anteriores
    $razon_social_todos         = [];
    $razon_social_todos[5]      = $razon_social;
    //inicio -var- nombres-anteriores
    $cuit                       = Request::input('cuit');
    $cuit_enmascarado           = $cuit;
    $otros_juicios_comerciales  = [];
    $concursos_quiebras         = [];
    $pedidos_quiebra            = [];

    if ($mostrar_todos_los_juicios) {
      $demandados                 = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'D', $cuit, 60, 1));
      $actor                      = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null,'A',$cuit, 60, 1));
    } else {
      $demandados                 = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'D', $cuit, 60, 1, $cantidad));
      $actor                      = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null,'A',$cuit, 60, 1, $cantidad));
    }
    $dni                        = '';
    $sinonimos                  = [];
    $demandado_homonimo         = [];
    $actores_homonimos          = [];
    //$p_fisica = (substr($cuit,0,1) == 3) ? false : true;
    $fisica_juridica = Misc::tipoPersona($cuit); 
    $p_fisica = ($fisica_juridica == 'F') ? true : false;

    $mask = substr( $cuit_enmascarado, 1,1 );
    $mask .= '-';
    $cuit_enmascarado = substr_replace ( $cuit_enmascarado, $mask, 1,1);
    $mask = substr( $cuit_enmascarado, -1,-1 );
    $mask .= '-';
    $cuit_enmascarado = substr_replace ( $cuit_enmascarado, $mask, -1,-1);
    $razon_social_completa     = '';
    $resultado_nombres_ant     = [];     
    $nombres_anteriores = []; 
    if($p_fisica){
      $dni = (int)substr($cuit, 2,-1);
    }

    //if($json == true){
      if($p_fisica == false) {
        //P Juridica
        $nombres_anteriores = SQLConnection::backendCambiosNombres($cuit);
        if ($nombres_anteriores) {
          foreach ($nombres_anteriores as $nombre_ant) {
              $resultado_nombres_ant[] = $nombre_ant->nombre; 
          }
          $resultado_nombres_ant[] = $razon_social;
        } 
        //$razon_social = "\"".$razon_social."\"";
        
        $sinonimos =  Misc::diccionarioSinonimosTest($resultado_nombres_ant);
        //print_r("sinonimos: "); 
        //var_dump($sinonimos); 
        $count_sinonimo = count($sinonimos)-1;
        foreach($sinonimos as $key => $rs) {
          if(!($key == $count_sinonimo)){
            $razon_social_completa .= $rs.'OR';
          }else{
            $razon_social_completa .= $rs;
          }
        }

        if(!$razon_social_completa) { $razon_social_completa = "\"".$razon_social."\""; }
      } else {//caso PF
        $razon_social_completa = "\"".$razon_social."\"";
      }
      //print_r("razon_social: "); 
      //var_dump($razon_social);   

      $razon_social_legales = Misc::diccionarioSinonimos($razon_social);
      /*
      print_r("razon_social_legales: "); 
      var_dump($razon_social_legales);
      print_r("razon_social_completa: "); 
      var_dump($razon_social_completa);
      */
      if ($mostrar_homonimos){
        if ($mostrar_todos_los_juicios) {
          //$demandado_homonimo = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social_legales,'D'));
          //$actores_homonimos  = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social_legales,'A'));
          // Abril 2019: Se empiezan a mostrar los homonimos de nombres anteriores 
          // si se quiere que solo se muestre los homonimos de la razon social actual volver a cambiar por las dos lineas anteriores (buscar $razon_social_legales)
          $demandado_homonimo = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social_completa,'D'));
          $actores_homonimos  = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social_completa,'A'));
        } else {
          //$demandado_homonimo = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social_legales,'D', $cantidad));
          //$actores_homonimos  = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social_legales,'A', $cantidad));
          // Abril 2019: Se empiezan a mostrar los homonimos de nombres anteriores
          // si se quiere que solo se muestre los homonimos de la razon social actual volver a cambiar por las dos lineas anteriores (buscar $razon_social_legales)
          $demandado_homonimo = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social_completa,'D', $cantidad));
          $actores_homonimos  = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social_completa,'A', $cantidad));

          // foreach ($actores_homonimos as $key => $value) {
          //  if (isset($value->actor) || isset($value->id_tipo_causa) || isset($value->nombre_causa) || isset($value->tipo_de_novedad) ) {
          //    $actores_homonimos;
          //  }else{
          //    $actores_homonimos = [];
          //  }
          // }
        }
      }
    //}


    if ($mostrar_todos_los_juicios) {
      $remates = SQLConnection::obtenerRemates($cuit,$cuit_enmascarado,$dni);
    } else {
      $remates = SQLConnection::backendStoreProcedure('obtener_remates', array($cuit,$cuit_enmascarado,$dni, $cantidad));
    }

    if($remates){
      $remates = Misc::ResaltarResultadosRemates($remates,$razon_social);
    }
  //  $concursos_quiebras = SQLConnection::obtenerConcursosQuiebras($cuit);
    if($demandados){
      foreach($demandados as $demandado){
        if($demandado->grupo  == 'OJC'){
          $otros_juicios_comerciales[]  = $demandado;
        }elseif($demandado->grupo  == 'CYQ'){
          $concursos_quiebras[] = $demandado;
        }elseif($demandado->grupo  == 'PQ'){
          $pedidos_quiebra[] = $demandado;
        }
      }
    }
    /*
    if ($demandado_homonimo) {
      foreach ($demandado_homonimo as $key => $value) {
        $fecha_causa_dmy = $value->fecha_causa_dmy;
        $demandado_homonimo[$key]->fecha_causa_dmy =  str_replace('/', '-', $fecha_causa_dmy); 
      }    
    }
    */
    $vista = \View::make('informes/legales')->with(compact('actor','pedidos_quiebra','concursos_quiebras','otros_juicios_comerciales','remates','actores_homonimos','p_fisica','json','nombre','demandado_homonimo', 'mostrar_homonimos', 'mostrar_todos_los_juicios','malla_razon_social','nombres_anteriores'))->render();
    
    if(!$json){
       return $vista;
    }
    return \Response::json(
      array(
        'view' => $vista,
        'info_varios'=>compact('concursos_quiebras','remates','pedidos_quiebra','otros_juicios_comerciales','actor','actores_homonimos','demandado_homonimo', 'mostrar_homonimos','imagen_fidelitas','malla_razon_social','nombres_anteriores')
      )
    , 200, [], JSON_NUMERIC_CHECK);
  }

  public static function procesarGraficoGarantias($data,$periodos){
    $grafico_ordenado = [];
    $n=0;
    foreach($data as $key_info => $info){
      foreach($periodos as $key_periodo => $periodo){
        $fecha = substr($periodo, 0,4).'-'.substr($periodo, 4,6).'-'.'01';
      if($info->periodo == $fecha){
          $grafico_ordenado[$fecha]['periodo'] =  $fecha;
          
          if(isset($grafico_ordenado[$fecha]['con_garantias_a'])){
            $grafico_ordenado[$fecha]['con_garantias_a'] +=  $info->con_garantias_a;
          }else{
            $grafico_ordenado[$fecha]['con_garantias_a'] =  ($info->con_garantias_a) ? $info->con_garantias_a : 0;
          }

          if(isset($grafico_ordenado[$fecha]['con_garantias_b'])){
            $grafico_ordenado[$fecha]['con_garantias_b'] +=  $info->con_garantias_b;
          }else{
            $grafico_ordenado[$fecha]['con_garantias_b']=  ($info->con_garantias_b) ? $info->con_garantias_b : 0;
          }

          if(isset($grafico_ordenado[$fecha]['sin_garantias'])){
            $grafico_ordenado[$fecha]['sin_garantias'] +=  $info->sin_garantias;
          }else{
            $grafico_ordenado[$fecha]['sin_garantias']=  ($info->sin_garantias) ? $info->sin_garantias : 0;
          }

          if(isset($grafico_ordenado[$fecha]['total'])){
            $grafico_ordenado[$fecha]['total'] +=  $info->total;
          }else{
            $grafico_ordenado[$fecha]['total']=  ($info->total) ? $info->total : 0;
          }
        }
        else{
          if(!isset($grafico_ordenado[$fecha]['periodo'])){
            $grafico_ordenado[$fecha]['periodo']          =  $fecha;
            $grafico_ordenado[$fecha]['con_garantias_a']  =  0;
            $grafico_ordenado[$fecha]['con_garantias_b']  =  0;
            $grafico_ordenado[$fecha]['sin_garantias']    =  0;
            $grafico_ordenado[$fecha]['total']            =  0;
          }
        }
        
      }
    }
      return array_values($grafico_ordenado);
  }
  private function procesarGraficoSituaciones($data,$periodos){
    $grafico_ordenado = [];
    $n=0;
    foreach($data as $key_info => $info){
      foreach($periodos as $key_periodo => $periodo){
        $fecha = substr($periodo, 0,4).'-'.substr($periodo, 4,6).'-'.'01';
      if($info->periodo == $fecha){
          $grafico_ordenado[$fecha]['periodo'] =  $fecha;
          
          if(isset($grafico_ordenado[$fecha]['con_garantias_a'])){
            $grafico_ordenado[$fecha]['con_garantias_a'] +=  $info->con_garantias_a;
          }else{
            $grafico_ordenado[$fecha]['con_garantias_a'] =  ($info->con_garantias_a) ? $info->con_garantias_a : 0;
          }

          if(isset($grafico_ordenado[$fecha]['con_garantias_b'])){
            $grafico_ordenado[$fecha]['con_garantias_b'] +=  $info->con_garantias_b;
          }else{
            $grafico_ordenado[$fecha]['con_garantias_b']=  ($info->con_garantias_b) ? $info->con_garantias_b : 0;
          }

          if(isset($grafico_ordenado[$fecha]['sin_garantias'])){
            $grafico_ordenado[$fecha]['sin_garantias'] +=  $info->sin_garantias;
          }else{
            $grafico_ordenado[$fecha]['sin_garantias']=  ($info->sin_garantias) ? $info->sin_garantias : 0;
          }

          if(isset($grafico_ordenado[$fecha]['total'])){
            $grafico_ordenado[$fecha]['total'] +=  $info->total;
          }else{
            $grafico_ordenado[$fecha]['total']=  ($info->total) ? $info->total : 0;
          }
        }
        else{
          if(!isset($grafico_ordenado[$fecha]['periodo'])){
            $grafico_ordenado[$fecha]['periodo']          =  $fecha;
            $grafico_ordenado[$fecha]['con_garantias_a']  =  0;
            $grafico_ordenado[$fecha]['con_garantias_b']  =  0;
            $grafico_ordenado[$fecha]['sin_garantias']    =  0;
            $grafico_ordenado[$fecha]['total']            =  0;
          }
        }
        
      }
    }
      return array_values($grafico_ordenado);
  }

  public function obtenerBancos($json = true,$grafico_cheques_bancos='',$grafico_financiero='',$grafico_situaciones='',$grafico_garantias=''){
    $imagen_fidelitas           = Misc::obtenerImagenFidelitas();
    $id_persona                 = Request::input('idp');
    $cuit                       = Request::input("cuit");
    $vinculados_segun_bcra      = SQLConnection::backendStoreProcedure('obtener_vinculados_segun_BCRA', array($cuit));
    $cheques_ordenados          = [];
  //  $periodo_maximo             = SQLConnection::obtenerPeriodoMaximo($cuit);
    $periodo_maximo             = SQLConnection::obtenerPeriodoMaximo($cuit);
    $card_status_bancario       = SQLConnection::obtenerStatusBancario($cuit);
    $periodos_ordenados         = [];
    $periodos_graficos          = [];
    $bancos_ordenados           = [];
    $bancos_ordenados_separados = [];
    $fecha = time();
    $n=0;
    if(isset(Session::get('usuario')->preferencias->cantidad_cheques)) {
      $cantidad = is_numeric(Session::get('usuario')->preferencias->cantidad_cheques) ? Session::get('usuario')->preferencias->cantidad_cheques : 500;
    } else {
      $cantidad = 500;
    }
    //$cheques      = SQLConnection::obtenerCheques($cuit,$id_persona);
    $cheques      = SQLConnection::backendStoreProcedure('obtener_cheques', array($cuit,$id_persona,$cantidad));
    $cheques_vinculaciones_todas = SQLConnection::backendStoreProcedure('obtener_cheques_vinculaciones_todas', array($cuit,$id_persona,$cantidad));
    $financiero             = SQLConnection::obtenerFinancieroBrief($cuit);
    //Gráfico de Situaciones
    $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; }

    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    = self::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;
    $env      = Misc::obtenerColoresEnv();
    $vista =  \View::make('informes/bancos')->with(compact('periodo','obtener_bancos','cheques','persona_fisica','card_status_bancario','json'
      ,'grafico_cheques_bancos','grafico_financiero','grafico_situaciones','grafico_garantias','cancelaciones', 'id_persona', 'cuit','vinculados_segun_bcra'))->render();
    //Session::put($cuit." ".date('Y-m-d').".bancos",json_encode($vista));
    if(!$json){
      return $vista;
    }
    return \Response::json(
      array(
        'view' => $vista,
        'info'=>compact('financiero','situaciones','garantias','env','grafico_cheques','cheques','obtener_bancos','cancelaciones','imagen_fidelitas')
    
      )
    , 200, [], JSON_NUMERIC_CHECK);
  }
  
  public function obtenerComex($json=true,$grafico_impo_comex='',$grafico_expo_comex='',$grafico_pais_impo_comex='',$grafico_rubro_impo_comex='',$grafico_pais_expo_comex='',$grafico_rubro_expo_comex=''){
    $imagen_fidelitas   = Misc::obtenerImagenFidelitas();
    $cuit               = Request::input("cuit");
    $periodo            = '';
    $periodos_null      = '';
    $periodo_expo       = '';
    $consumo            = '';
    $temporal           = '';
    $deposito           = '';
    $zonafranca         = '';
    $total              = '';
    $comex_pais_impo    = [];
    $comex_pais_expo    = [];
    $comex_grafico_impo = [];
    $otros_pais_impo    = 0;
    $otros_pais_expo    = 0;
    $periodo_procesado  = SQLConnection::obtenerUltimoPeriodoProcesado('comercio_exterior');
    $comex_impo         = SQLConnection::obtenerComex($cuit);
    $tipo_persona       = (substr($cuit,0,1) != '3') ? 'f' : 'j' ;

    if($comex_impo){
      for ($i = 0; $i <= 24; $i++) {
            $periodos_null[$i] = date("Ym", strtotime($periodo_procesado." -$i months"));
            $anio     = substr($periodos_null[$i], 0,4);
            $mes      = substr($periodos_null[$i], 4,6);
            $comex_grafico_impo[$i]             = new \stdClass;
            $comex_grafico_impo[$i]->mes        = $mes;
            $comex_grafico_impo[$i]->anio       = $anio;
            $comex_grafico_impo[$i]->consumo    = 0;
            $comex_grafico_impo[$i]->temporal   = 0;
            $comex_grafico_impo[$i]->procesado  = 0;
            $comex_grafico_impo[$i]->date       = 0;
            $comex_grafico_impo[$i]->Date       = 0;
            $comex_grafico_impo[$i]->deposito   = 0;
            $comex_grafico_impo[$i]->zonafranca = 0;
            $comex_grafico_impo[$i]->total      = 0;
      }
      $number =0;
      $total_consumo     = '';
      $total_temporal    = '';  
      $total_deposito    = '';  
      $total_zona_franca = '';  
      $total_totales     = '';  
      foreach($comex_impo as $key=>$impo){
        //totales que se muestran en 'tabla_comex'
        $total_consumo    = $impo->consumo;
        $total_temporal   = $impo->temporal;
        $total_deposito   = $impo->deposito;
        $total_zonafranca = $impo->zonafranca;
        $total_totales    = $impo->total;
        foreach($comex_grafico_impo as $key => $graf){
          if($impo->anio==$graf->anio && $impo->mes == $graf->mes){
            //if($key == 0){

              $number = $key;
            //}
            if($graf->total != 0){
              $number++;
              $comex_grafico_impo[$number] = $impo;

            }else{
              $comex_grafico_impo[$number] = $impo;
              $number++;
            }
          }
          //sort($comex_grafico_impo['ordenar']);
        }
      }
      //totales que se muestran en 'tabla_comex'
      /*
      $total_consumo    = array_sum($total_consumo);
      $total_temporal   = array_sum($total_temporal);
      $total_deposito   = array_sum($total_deposito);
      $total_zonafranca = array_sum($total_zonafranca);
      $total_totales    = array_sum($total_totales);
      */
    }
    $comex_expo         = SQLConnection::obtenerGraficoExportaciones($cuit);
    $periodo_procesado  = SQLConnection::obtenerUltimoPeriodoProcesado('comex_pais_rubro');
    $comex_grafico_exportaciones            = [];
    $comex_grafico_exportaciones[]          = new \stdClass;
    
    if($comex_expo){
      for ($i = 0; $i <= 24; $i++) {
            $periodos_null[$i] = date("Ym", strtotime($periodo_procesado." -$i months"));
            $comex_grafico_exportaciones[$i]                = new \stdClass;
            $comex_grafico_exportaciones[$i]->valor_mensual = 0;
            $comex_grafico_exportaciones[$i]->periodo       = $periodos_null[$i];
      }

      foreach($comex_expo as $expo){
        foreach($comex_grafico_exportaciones as $key => $graf){
          if($expo->periodo==$graf->periodo){
              $comex_grafico_exportaciones[$key] = $expo;
          }
        }
      }

      foreach($comex_grafico_exportaciones as $key => $expo){
        $comex_grafico_exportaciones[$key]->anio = substr($expo->periodo, 0, 4);
        $comex_grafico_exportaciones[$key]->mes = substr($expo->periodo, 4, 6) - 1;
      }
    }
    $comex_paises     = SQLConnection::obtenerComexPais($cuit);
    $comex_rubros     = SQLConnection::obtenerComexRubros($cuit);
    $comex_totales    = SQLConnection::obtenerComexTotales($cuit);
    $ni               = 0;
    $ne               = 0;
    $total_pais_impo  = 0;
    $total_pais_expo  = 0;
    //Importacion/Exportacion PAISES
    foreach ($comex_paises as $key => $comex_pais){
      
      if($comex_pais->tipo_operacion == 'IMPO'){
        if($ni <5){
          $ni++;
          $comex_pais_impo[] = $comex_pais;
          $comex_pais->nombre = mb_strtoupper($comex_pais->nombre);
        }else{
          $otros_pais_impo += $comex_pais->fob;
        }
          $total_pais_impo += $comex_pais->fob;
      }

      if($comex_pais->tipo_operacion == 'EXPO'){
        if($ne <5){
          $ne++;
          $comex_pais_expo[] = $comex_pais;
          $comex_pais->nombre = mb_strtoupper($comex_pais->nombre);
        }else{
          $otros_pais_expo += $comex_pais->fob;
        }
          $total_pais_expo += $comex_pais->fob;
      }

    }
    if($otros_pais_expo > 0){
      $object = new \stdClass();
      $object->tipo_operacion = 'EXPO';
      $object->nombre   = 'Otros';
      $object->fob    = (string)$otros_pais_expo;
      $comex_pais_expo[] = $object;
    }

    $object = new \stdClass();
    $object->tipo_operacion = 'EXPO';
    $object->nombre   = 'Totales';
    $object->fob    = (string)$total_pais_expo;
     if($total_pais_expo > 0){
      $comex_pais_expo[] = $object;
    }

    if($otros_pais_impo > 0){
      $object = new \stdClass();
      $object->tipo_operacion = 'IMPO';
      $object->nombre   = 'Otros';
      $object->fob    = (string)$otros_pais_impo;
      $comex_pais_impo[] = $object;
    }

    $object = new \stdClass();
    $object->tipo_operacion = 'IMPO';
    $object->nombre   = 'Totales';
    $object->fob    = (string)$total_pais_impo;
    if($total_pais_impo > 0){
      $comex_pais_impo[] = $object;
    }
        //Importacion/Exportacion RUBROS
    $comex_rubro_impo = [];
    $comex_rubro_expo = [];
    $ni_r             = 0;
    $ne_r             = 0;
    $total_rubro_impo = 0;
    $total_rubro_expo = 0;
    $otros_rubro_impo = 0;
    $otros_rubro_expo = 0;

    foreach ($comex_rubros as $key => $comex_rubro){
      
    if($comex_rubro->tipo_operacion == 'IMPO'){
      if($ni_r <5){
        $ni_r++;
        $comex_rubro_impo[] = $comex_rubro;
      }else{
        $otros_rubro_impo += $comex_rubro->fob;
      }
        $total_rubro_impo += $comex_rubro->fob;
    }

    if($comex_rubro->tipo_operacion == 'EXPO'){
      if($ne_r <5){
        $ne_r++;
        $comex_rubro_expo[] = $comex_rubro;
      }else{
        $otros_rubro_expo += $comex_rubro->fob;
      }
        $total_rubro_expo += $comex_rubro->fob;
      }
    }
    
    if($otros_rubro_expo > 0){
      $obj                 = new \stdClass();
      $obj->tipo_operacion = 'EXPO';
      $obj->descripcion    = 'Otros';
      $obj->fob            = (string)$otros_rubro_expo;
      $comex_rubro_expo[]  = $obj;
    }
    $obj                 = new \stdClass();
    $obj->tipo_operacion = 'EXPO';
    $obj->descripcion    = 'Totales';
    $obj->fob            = (string)$total_rubro_expo;
    if($total_rubro_expo > 0){
      $comex_rubro_expo[] = $obj;
    }
    if($otros_rubro_impo > 0){
      $obj                  = new \stdClass();
      $obj->tipo_operacion  = 'IMPO';
      $obj->descripcion     = 'Otros';
      $obj->fob             = (string)$otros_rubro_impo;
      $comex_rubro_impo[]   = $obj;
    }

    $obj = new \stdClass();
    $obj->tipo_operacion  = 'IMPO';
    $obj->descripcion     = 'Totales';
    $obj->fob             = (string)$total_rubro_impo;
    if($total_rubro_impo > 0){
      $comex_rubro_impo[] = $obj;
    }

    $vista =  \View::make('informes/comex')->with(compact('total_pais_impo','total_pais_expo','periodo','consumo','temporal','deposito','zonafranca','total','comex_totales','json','grafico_impo_comex','grafico_expo_comex','grafico_pais_impo_comex','grafico_rubro_impo_comex','grafico_pais_expo_comex','grafico_rubro_expo_comex','comex_pais_impo','comex_pais_expo','comex_rubro_impo','comex_rubro_expo','total_rubro_impo','total_rubro_expo','comex_impo','comex_expo','total_consumo','total_temporal','total_deposito','total_zonafranca','total_totales'))->render();
    if(!$json){
       return $vista;
    }
    Session::put($cuit." ".date('Y-m-d').".comex",json_encode($vista));
    $comex_json = json_encode($comex_impo);
    return \Response::json(
      array(
        'view' =>$vista,
        'info'=>compact('comex_impo','comex_expo','maximo','sort_pais_impo','sort_pais_expo','sort_rubros_impo','sort_rubros_expo','comex_grafico_exportaciones','comex_pais_expo','comex_pais_impo','comex_rubro_impo','comex_rubro_expo','tipo_persona','total_consumo','total_temporal','total_deposito','total_zonafranca','total_totales')
      )
    );
  }

  public function obtenerBrief($json=true,$graf_pdf_financiero='',$graf_pdf_empleados='',$graf_pdf_cheques='',$graf_pdf_score='',$graf_pdf_comex ='',$incluye_balance = 0){
    $idp               = Request::input('idp');
    $cuit              = Request::input("cuit");
    $imagen_fidelitas  = Misc::obtenerImagenFidelitas();
    $afip_respuesta = [];
    if(ENV('SERVICIOS_AFIP') == true){
      $afip_respuesta = AFIPController::obtenerPadron($cuit);
    }
    // Agregado 10/07/2018: Si es persona fisica, ve si puede completar datos con Padron Electoral (ultimo domicilio, año de nacimiento)
    $fisica_juridica = Misc::tipoPersona($cuit); 
    $p_fisica = ($fisica_juridica == 'F') ? true : false;
    if ($p_fisica)  
    {
      $actualiza = SQLConnection::actualizarDatosConPadron($cuit,'0');
    }


    // Obtener Bancos para calcular si amerita por situación uno y sumar al score
    // Se almacenan en variable de clase para ser reutilizadas en la pestaña de bancos
    $obtener_bancos = SQLConnection::obtenerBancos($cuit);
    $situacion_1 = Misc::ameritaPorSituacionUno($obtener_bancos);
    self::$amerita_situacion_1 = $situacion_1['amerita'];
    self::$cantidad_situacion_1 = $situacion_1['cantidad'];

    $link_pdf = env('AFIP_URL_COMPARTIDO_LEER').'/'.substr($cuit, 0, 2).'/'.substr($cuit, 2, 3).'/'.substr($cuit, 5, 3).'/'.$cuit.'.pdf';
    self::$tiene_pdf = file_exists($link_pdf);

    $card_score                   = [];
    $card_bancos                  = [];
    $card_cheques                 = [];
    $card_domicilios              = [];
    $card_empleados               = [];
    $card_comex                   = [];
    $card_personas_relacionadas   = [];
    $card_sociedades_relacionadas = [];
    //$p_fisica                     = (substr($cuit,0,1) == 3) ? false : true;
    $fisica_juridica = Misc::tipoPersona($cuit); 
    $p_fisica = ($fisica_juridica == 'F') ? true : false;
    $periodo                      = [];
    $grafico_cheques_ordenados    = [];
    $cheques[]                    =  new \stdClass;
    $env                          = Misc::obtenerColoresEnv();
    $score_ordenado               = [];
    $defuncion                    = [];
    /*CALCULO SCORE inicio*/
    $debug_score                  = '';
    $sesion_externa               = (Session::get('externo')) ? true : false;
    $comex_impo                   = SQLConnection::obtenerComex($cuit);

    if(!$sesion_externa){
      if(isset(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')])){
        $cliente = Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->nombre_cliente;
      }
    }else{
      $cliente = 'Externo';
    }
    /* card 6 empleados inicio*/
    if(!$p_fisica){
      $card_fiscales = SQLConnection::obtenerCardFiscales($cuit);
      //$card_fiscales); //error con AKAPOL SA CUIT 30504065207 (12/09/2017) 
      if (is_null($card_fiscales)) {
          $card_fiscales = '';
      }else{
          $card_fiscales->inicio_actividad = Misc::convertirFormatoFecha($card_fiscales->inicio_actividad,'Y-m-d','d/m/Y');
      } 
    }else{
      $card_fiscales = SQLConnection::obtenerCardFiscalesPF($cuit);
      self::$edad = Misc::obtenerEdadPersonaFisica($cuit);

    }
    $sircreb = SQLConnection::obtenerSircreb($cuit);

    $riesgo_fiscal = 'NO';
    if($sircreb){
      foreach($sircreb as $info){
        $hoy = date('Y-m-d h:i:s');
        if (($hoy > $info->vigencia_desde) && ($hoy < $info->vigencia_hasta))
        {
          $riesgo_fiscal='SI';
        }else if($hoy > $info->vigencia_desde){
          $riesgo_fiscal = '--';
        }
      }
    }
    /* card 6 empleados fin*/
    if (!self::$tiene_pdf && empty($card_fiscales)){
      self::$observado = true;
    }
     $respuesta_score = '';
    if(strlen($cuit) == 11){
      $respuesta_score  = json_decode(ApiControllerV1::obtenerServicioScore($cuit,true),true);
    }
    if($respuesta_score == ''){
      $score = 0;
      $debug_score = '';
    }else{
      $score        = $respuesta_score['score'];
      $debug_score  = $respuesta_score['debug_score'];
    }
    if($p_fisica){
      $defuncion      = SQLConnection::obtenerDefuncion($cuit);
      $dni            = (int)substr($cuit, 2,-1);
    }
   
// En el detalle del score, se muestra la respuesta de AFIP
    $afip_ordenado = '';
    $afip_decode = [];
    if(is_array($afip_respuesta)){
      foreach($afip_respuesta as $afip){
        $afip_decode[] = json_decode($afip,true);
      }
      $afip_respuesta = $afip_decode;
    }
    //dd($afip_respuesta); 
    if(!is_array($afip_respuesta)) {
        $afip_ordenado .= "<br>" . $afip_respuesta;
    }
    else
    {
      foreach ($afip_respuesta as $key => $value) {
        if(!is_array($value)) {
          $afip_ordenado  .= "<strong><br>". $key .":</strong> ". $value ;
          }else{
            $afip_ordenado .= "<strong><br>" . $key . ":" . "</strong>";
            foreach ($value as $key2 => $value2) {
                if(!is_array($value2)) {
                   $afip_ordenado  .= "<strong><br>   ". $key2 .":</strong> ". $value2 ;
                }else{
                  $afip_ordenado .= "<strong><br>   " . $key2 . ":" . "</strong>";

                  foreach ($value2 as $key3 => $value3) {
                    if(!is_array($value3)) {
                      $afip_ordenado  .= "<strong><br>      ". $key3 .":</strong> ". $value3 ;
                    }else{
                      foreach ($value3 as $key4 => $value4) {
                        if(!is_array($value4)) {
                          $afip_ordenado  .= "<strong><br>      ". $key4 .":</strong> ". $value4 ;
                        }else{
                          
                        }
                      }
                    }
                  }
                }
            }
        }
      }
    }
    if ($afip_ordenado != '')
    {
    $debug_score .= "<br>---------------<br><strong>RESPUESTA AFIP</strong><br>---------------" .$afip_ordenado;
    }
//
   
    if(!$p_fisica){
      $datos_card_score   = SQLConnection::obtenerCardScore($cuit);
    }else{
      $datos_card_score   = SQLConnection::obtenerCardScorePF($cuit);
    }
    /*CALCULO SCORE fin*/
  
    /*card 1 inicio */
    
    
    $user_id = Session::get('usuario')->user_id;
    if(isset( Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')])){
      $servicio = SQLConnection::consumirServicio($user_id,$cuit,ENV('ID_INFORME_COMERCIAL'));
    }else if(isset(Session::get('usuario')->cliente[ENV('INFORME_API')])){
      $servicio = SQLConnection::consumirServicio($user_id,$cuit,ENV('INFORME_API'));
    }else{
        $servicio = new \stdClass;
        $servicio->sumar = 0;
    }
    if($servicio->sumar == 1){
      if(isset( Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')])){
       // SQLConnection::insertarRegistroActividad("INFORME COMERCIAL",$cuit);
        Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->usuario_consumido++;
        Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->cliente_consumido++;
      }
    }
    
    
    $cheque_ultimo_rechazo_desde = '';
    if(!$p_fisica && strlen($cuit) == 11){
      $sintomas = SQLConnection::backendStoreProcedure('obtener_sintomas_de_vitalidad', array($cuit), true);
      $cheque_ultimo_rechazo_desde   = SQLConnection::backendStoreProcedure('obtener_no_cheqrech_desde', array($cuit), true);
      $vitalidad = 1;
      if ((!$p_fisica) && isset($sintomas->vitalidad) && $sintomas->vitalidad == 0) {
        $score = 0;
        $vitalidad = 0;
        $motivo_vitalidad = $sintomas->motivo; 
      }
    }
    
    $card_score['score']= $score;
    $card_score['datos']= $datos_card_score;
    /*card 1 fin */
    
    /*card 2 inicio */
    $garantias          = SQLConnection::obtenerGarantiasBrief($cuit);
    $financiero         = SQLConnection::obtenerFinancieroBrief($cuit);
    $card_bancos        = SQLConnection::obtenerCardBancos($cuit);
    /*card 2 fin */

    /* card 3 cheques rechazados inicio*/
    $card_cheques     = SQLConnection::obtenerCardChequesRechazados($cuit);
    $grafico_cheques  = SQLConnection::graficoCardChequesRechazados($cuit);
    // return response()->json($grafico_cheques);
    $grafico_cheques  = self::generarGraficoCheques($grafico_cheques,24);

  /* card 3 cheques rechazados fin*/
    
    /* card 4 domicilios inicio*/
    $domicilios = new \stdClass;
    $formales       = SQLConnection::obtenerDomicilios($cuit);
    $domicilios->otros_domicilios = '';
    $domicilios->domicilio_legal  = '';
    $domicilios->domicilio        = '';
    $domicilios->domicilio_fiscal = '';

    foreach($formales as $formal) {
 /* Domicilio Legal */
     //if($formal->tipo_domicilio == 'L'){
      if(strpos($formal->tipo_domicilio, 'L') !== false){
        if (isset($domicilios->domicilio_legal) && $domicilios->domicilio_legal != '')
        {
          if (strpos($formal->tipo_domicilio, 'D') === false &&
              strpos($formal->tipo_domicilio, 'E') === false &&
              strpos($formal->tipo_domicilio, 'F') === false)
          {$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';}
        }
        else 
        {
          $domicilios->domicilio_legal = Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
        }
      }
/* Domicilio Fiscal */
      //if($formal->tipo_domicilio == 'F'){
      if(strpos($formal->tipo_domicilio, 'F') !== false){
        if (isset($domicilios->domicilio_fiscal) && $domicilios->domicilio_fiscal != '')
        {
          if (strpos($formal->tipo_domicilio, 'D') === false &&
              strpos($formal->tipo_domicilio, 'E') === false &&
              strpos($formal->tipo_domicilio, 'L') === false)
              {$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';}
        }
        else 
        {
          $domicilios->domicilio_fiscal = Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
        }
      }

/* Domicilio Principal */ 
      //if($formal->tipo_domicilio == 'D' ||  $formal->tipo_domicilio == 'E'){
      if(strpos($formal->tipo_domicilio, 'D') !== false ||
         strpos($formal->tipo_domicilio, 'E') !== false){

        if (isset($domicilios->domicilio) && $domicilios->domicilio != '')
        {
          if (strpos($formal->tipo_domicilio, 'F') === false &&
              strpos($formal->tipo_domicilio, 'L') === false)
          {$domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';}
        }
        else 
        {
          $domicilios->domicilio = Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre);
        }
      }
/* Otros Domicilios */
      //if($formal->tipo_domicilio == 'O'){
      if (strpos($formal->tipo_domicilio, 'O') !== false &&
          strpos($formal->tipo_domicilio, 'D') === false &&
          strpos($formal->tipo_domicilio, 'E') === false &&
          strpos($formal->tipo_domicilio, 'L') === false &&
          strpos($formal->tipo_domicilio, 'F') === false){
          $domicilios->otros_domicilios .= Misc::armarDomicilio($formal->domicilio,$formal->codpos,$formal->loc_nombre,$formal->prv_nombre,$formal->pai_nombre).'<br>';
      }

    }

    if($domicilios->domicilio == '' && $domicilios->domicilio_fiscal != ''){
      $domicilios->domicilio  .= $domicilios->domicilio_fiscal;
    }

    $card_domicilios['domicilios'] = $domicilios;
    
    /* card 4 domicilios fin*/
    
    /* card 5 empleados inicio*/
    $card_empleados = SQLConnection::obtenerEmpleados($cuit);
    /* card 5 empleados fin*/
    
    

    /* card 7 empleados inicio*/
    $primero =date('Y');
    $segundo =date('Y')-1;
    $tercero =date('Y')-2;
    $mostrar_grafico_card_comex = false;
    $card_comex[$primero] = SQLConnection::obtenerCardComex($cuit,$primero);
    $card_comex[$segundo] = SQLConnection::obtenerCardComex($cuit,$segundo);
    $card_comex[$tercero] = SQLConnection::obtenerCardComex($cuit,$tercero);
    foreach($card_comex as $comex){
      foreach($comex as $info){
        if(!empty($info) && $info->total_anual != null){
          $mostrar_grafico_card_comex = true;
        }
      }
    }
    /* card 7 empleados fin*/

    /* card 8 empleados inicio*/
    $card_personas_relacionadas = SQLConnection::obtenerCardPersonasRelacionadas($cuit);
    /* card 8 empleados fin*/
    
    /* card 9 empleados inicio*/
    $tipo_persona = (substr($cuit,0,1) != '3') ? 'f' : 'j' ;
    $card_sociedades_relacionadas = SQLConnection::obtenerCardSociedadesRelacionadas($cuit,$tipo_persona);
    /* card 9 empleados fin*/

    /*card 10 Juicios*/
    $razon_social       = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona;
    $razon_social_legales = Misc::diccionarioSinonimos($razon_social);
    
    /*
    $demandados                 = SQLConnection::obtenerJuiciosDemandadoActor(null,'D',$cuit);
    $actor                      = SQLConnection::obtenerJuiciosDemandadoActor(null,'A',$cuit);
    $demandado_homonimo = SQLConnection::obtenerJuiciosHomonimos($razon_social_legales,'D');
    $actores_homonimos  = SQLConnection::obtenerJuiciosHomonimos($razon_social_legales,'A');
    */
    $cuit_enmascarado = $cuit;

    $dni = '';
    if($p_fisica){
      $dni = (int)substr($cuit, 2,-1);
    }
    $mask = substr( $cuit_enmascarado, 1,1 );
    $mask .= '-';
    $cuit_enmascarado = substr_replace ( $cuit_enmascarado, $mask, 1,1);
    $mask = substr( $cuit_enmascarado, -1,-1 );
    $mask .= '-';
    $cuit_enmascarado = substr_replace ( $cuit_enmascarado, $mask, -1,-1);

    $card_juicios = new \stdClass();
    $card_juicios->concursos_quiebras         = [];
    $card_juicios->pedidos_quiebra            = [];
    $card_juicios->remates                    = SQLConnection::obtenerRemates($cuit,$cuit_enmascarado,$dni);;
    $card_juicios->otros_juicios_comerciales  = [];
    /*
    if($demandados){
      foreach($demandados as $demandado){
        if($demandado->grupo  == 'OJC'){
          $card_juicios->otros_juicios_comerciales[]  = $demandado;
        }elseif($demandado->grupo  == 'CYQ'){
          $card_juicios->concursos_quiebras[] = $demandado;
        }elseif($demandado->grupo  == 'PQ'){
          $card_juicios->pedidos_quiebra[] = $demandado;
        }
      }
    }
    $card_juicios->pedidos_quiebra = sizeof($card_juicios->pedidos_quiebra);
    $card_juicios->concursos_quiebras = sizeof($card_juicios->concursos_quiebras);
    $card_juicios->otros_juicios_comerciales = sizeof($card_juicios->otros_juicios_comerciales);
    $card_juicios->actor = sizeof($actor);
    $card_juicios->demandado_homonimo = sizeof($demandado_homonimo);
    $card_juicios->actores_homonimos = sizeof($actores_homonimos);
    */
    $card_juicios->remates = sizeof($card_juicios->remates);
    
    $juicios_cantidades  =  SQLConnection::backendStoreProcedure('obtener_count_juicios',array($cuit,$razon_social_legales),true);
    
    $card_juicios->otros_juicios_comerciales = $juicios_cantidades->cantidad_ojc;
    $card_juicios->concursos_quiebras        = $juicios_cantidades->cantidad_cyq;
    $card_juicios->pedidos_quiebra           = $juicios_cantidades->cantidad_pq;
    $card_juicios->actor                     = $juicios_cantidades->cantidad_actor;
    $card_juicios->demandado_homonimo        = $juicios_cantidades->cantidad_demandado_homonimo;
    $card_juicios->actores_homonimos         = $juicios_cantidades->cantidad_actor_homonimo; 

    $card_juicios->total = $card_juicios->actores_homonimos + $card_juicios->demandado_homonimo + $card_juicios->actor + $card_juicios->otros_juicios_comerciales + $card_juicios->remates + $card_juicios->concursos_quiebras + $card_juicios->pedidos_quiebra;
    /*card 10 Juicios*/

    //$sesion_externa = (Session::get('externo')) ? true : false;
    if(isset(Session::get('usuario')->cliente[env('ID_INFORME_COMERCIAL')])){
    $secciones = array_keys(Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->secciones);
    }else if(isset(Session::get('usuario')->cliente[env('INFORME_API')])){
    $secciones = array_keys(Session::get('usuario')->cliente[ENV('INFORME_API')]->secciones);
    }
    
    $antiguedad_situacion_1 = SQLConnection::backendStoreProcedure('obtener_cendeu_sit1_desde', array($cuit),true);

    $nivel_socioeconomico = new \stdClass();
    if($tipo_persona == 'j'){
      if($score > 50){
        /*agregado el 28/06 a prod directamente por Leo.*/
        $nivel_socioeconomico = SQLConnection::backendStoreProcedure('obtener_nivel_socioeconomico', array($cuit,$tipo_persona),true);
        /**/
      }else{
        $nivel_socioeconomico->error = 'El Nivel del rango de ventas de la compañia no puede ser calculado';
      }
    }else{
      $nivel_socioeconomico = SQLConnection::backendStoreProcedure('obtener_nivel_socioeconomico', array($cuit,$tipo_persona),true);
    }
    $sujeto_obligado    = 0;
    $apocrifas          = SQLConnection::backendStoreProcedure('obtener_apocrifas', array($cuit), true);
    $client_id          = isset(Session::get('usuario')->cliente['client_id'] ) ? Session::get('usuario')->cliente['client_id'] : 0;
    if($client_id > 0 AND ($client_id == '2254875' || $client_id == '745239806')) {
      $respuestaso      =  SQLConnection::backendStoreProcedure('obtener_sujeto_obligado',array($cuit),true);
      if(!empty($respuestaso)){
        $sujeto_obligado = $respuestaso->sujeto_obligado;
      }  
    }

    $vista= view('informes/brief')->with(compact('card_score','card_bancos','card_cheques','card_domicilios','card_empleados','card_fiscales', 'apocrifas', 'card_comex','card_personas_relacionadas','card_sociedades_relacionadas','json','p_fisica','debug_score','riesgo_fiscal','graf_pdf_empleados','graf_pdf_financiero','graf_pdf_cheques','graf_pdf_score','cliente','mostrar_grafico_card_comex','graf_pdf_comex','idp', 'card_juicios','nivel_socioeconomico','antiguedad_situacion_1','cheque_ultimo_rechazo_desde','sujeto_obligado'))->render();

    if(!$json){
       return $vista;
    }


    //Session::put($cuit." ".date('Y-m-d').".brief",json_encode($vista));
    return \Response::json(
      array(
        'view' =>$vista,
        'info'=>compact('score','cheques','financiero','env','card_empleados','grafico_cheques','secciones','p_fisica','card_comex','mostrar_grafico_card_comex','defuncion','card_fiscales', 'vitalidad', 'motivo_vitalidad','menor_de_edad', 'card_bancos','idp','imagen_fidelitas','cuit')
      )
    , 200, [], JSON_NUMERIC_CHECK);
  }

  public function generarGraficoCheques($grafico_cheques,$meses){
    $grafico_cheques_ordenados['total']  = 0;
    for ($i = 0; $i < $meses; $i++) {
      $periodo[$i] = date("Y-m", strtotime( date("Y-m")." -$i months"));
      $grafico_cheques_ordenados['abonado'][$periodo[$i]]           = 0;
      $grafico_cheques_ordenados['pendiente_de_pago'][$periodo[$i]] = 0;
      $grafico_cheques_ordenados['defectos_formales'][$periodo[$i]] = 0;
    }
    sort($periodo);
    //$periodo = array_values($periodo);
    if($grafico_cheques){
      foreach($grafico_cheques as $key_cheque =>$cheque){
        foreach($periodo as $key_mes => $mes){

          if($mes == $cheque->fecha){
            if ($cheque->id_causa == 1) {
              $grafico_cheques_ordenados['total'] += 1;
              $grafico_cheques_ordenados['defectos_formales'][$mes] += 1;
            } else {
              if($cheque->abonado == 1){
                $grafico_cheques_ordenados['total'] += 1;
                $grafico_cheques_ordenados['abonado'][$mes] += 1;
              } else {
                $grafico_cheques_ordenados['total'] += 1;
                $grafico_cheques_ordenados['pendiente_de_pago'][$mes] += 1;
              }
            }
          }
        }
      }
    }
    //sort($grafico_cheques_ordenados['abonado']);
    if (isset($grafico_cheques_ordenados['defectos_formales'])) {
    ksort($grafico_cheques_ordenados['defectos_formales']);
    }
    if (isset($grafico_cheques_ordenados['abonado'])) {
    ksort($grafico_cheques_ordenados['abonado']);
    }
    if (isset($grafico_cheques_ordenados['pendiente_de_pago'])) {
      ksort($grafico_cheques_ordenados['pendiente_de_pago']);
    }
    return $grafico_cheques_ordenados;
  }

  public function generarContenidoExportable($html=false){
    Session::put('html', 1);
    $cuit           = Request::input('cuit');
    $usuario        = Session::get('usuario')->username;
    $nombre_cliente = Session::get('usuario')->cliente[ENV('ID_INFORME_COMERCIAL')]->nombre_cliente;
    $token          = Request::input('_token');
    $titulo_pdf     = Request::input('titulo_pdf');
    $header         = '<div class="col-md-12 title-report background-fidelitas" style="margin-top:30px;padding:5px;">
  <div class="col-md-7 col-sm-7 col-xs-7 text-left" id="nc" style="padding: 5px; ">
  '.$titulo_pdf.'
  </div>
  <div class="col-md-5 col-sm-5 col-xs-5 text-right" id="nc" style="padding-right: 50px; padding-top: 5px; padding-bottom: 5px; padding-left: 5px;">
   '.$nombre_cliente. '-'.$usuario.'
  </div>
  </div>';
    $fidelitas  = Misc::obtenerImagenFidelitas();
    //fiscales
    $pdf_inscripcion = Request::input('imp_pdf_inscripcion');
    //comex
    $grafico_impo_comex                  = Request::input('grafico_impo_comex');
    $grafico_expo_comex                  = Request::input('grafico_expo_comex');
    $grafico_pais_impo_comex             = Request::input('grafico_pais_impo');
    $grafico_rubro_impo_comex            = Request::input('grafico_rubros_impo');
    $grafico_pais_expo_comex             = Request::input('grafico_pais_expo');
    $grafico_rubro_expo_comex            = Request::input('grafico_rubros_expo');
    //brief
    $grafico_financiero_brief            = Request::input('grafico_financiero_brief');
    $grafico_empleados_brief             = Request::input('grafico_empleados_brief');
    $grafico_cheques_brief               = Request::input('grafico_cheques_brief');
    $grafico_score_brief                 = Request::input('grafico_score_brief');
    $grafico_comex_brief                 = Request::input('grafico_comex_brief');
    //contables
    $imp_grafico_capital_de_trabajo      = Request::input('grafico_capital_de_trabajo_esp');
    $imp_grafico_patrimonial             = Request::input('grafico_patrimonial_esp');
    $imp_grafico_solvencia               = Request::input('grafico_solvencia_esp');
    $imp_grafico_liquidez_corriente      = Request::input('grafico_liquidez_corriente_esp');
    $imp_grafico_endeudamiento_corriente = Request::input('grafico_endeudamiento_corriente_esp');
    $imp_efecto_palanca                  = Request::input('grafico_efecto_palanca_esp');
    $imp_ventas                          = Request::input('grafico_ventas_esp');
    $imp_gastos_totales_sobre_ventas     = Request::input('grafico_gastos_totales_sobre_ventas_esp');
    $imp_grafico_performance             = Request::input('grafico_performance_esp');
    //bancos
    $grafico_cheques_bancos   = Request::input('grafico_cheques_bancos');
    $grafico_financiero       = Request::input('grafico_financiero');
    $grafico_situaciones      = Request::input('grafico_situaciones');
    $grafico_garantias        = Request::input('grafico_garantias');
    $html = '';
    $html .= view('exportar/css')->render();
    $html .= '<div class="container">';
    $seccion_contables_extendido = Request::input('seccion_contables_extendido');
    $seccion_contables_compacto  = Request::input('seccion_contables_compacto');
    $seccion_contables           = Request::input('seccion_contables');
    //dd(Request::input());
    foreach (Input::except('_token') as $seccion => $valor) {
      switch($seccion){
        //TODO
        case 'seccion_brief':
         $html .= '<img src="'.$fidelitas.'"  class="text-left"  style="margin-top: 50px;">';
         $html .= $header;
         $html .= "<h2 class='text-center' style='margin-top: 25px;' >Resumen</h2>";
         $html .= self::obtenerBrief(false,$grafico_financiero_brief,$grafico_empleados_brief,$grafico_cheques_brief,$grafico_score_brief,$grafico_comex_brief);
         //$html .= self::obtenerBrief(false,$grafico_financiero_brief,$grafico_empleados_brief,$grafico_cheques_brief,$grafico_score_brief);
         $html .= '<div class="page-breaker">';
         $html .= "</div>";
        break;
        case 'seccion_formales': 
          $html .= '<img src="'.$fidelitas.'"  class="text-left"  style="margin-top: 50px;">';
          $html .= $header;
          $html .= "<h2 class='text-center' style='margin-top: 25px;' >Formales</h2>";
          $html .= self::obtenerFormales(false);
          $html .= '<div class="page-breaker">';
          $html .= "</div>";
        break;
        case 'seccion_fiscales':
          //$html .= '<div class="page-breaker">';
          $html .= '<img src="'.$fidelitas.'"  class="text-left"  style="margin-top: 50px;">';
          $html .= $header;
          $html .= "<h2 class='text-center' style='margin-top: 25px;'>Fiscales</h2>";
          $html .= self::obtenerFiscales(false,$pdf_inscripcion);
          $html .= '<div class="page-breaker">';
          $html .= "</div>";
        break;
        case 'seccion_comerciales':
          //$html .= '<div class="page-breaker">';
          $html .= '<img src="'.$fidelitas.'"  class="text-left"  style="margin-top: 50px;">';
          $html .= $header;
          $html .= "<h2 class='text-center' style='margin-top: 25px;'>Comerciales</h2>";
          $html .= self::obtenerComerciales(false);
          $html .= '<div class="page-breaker">';
          $html .= "</div>";
        break;
        case 'seccion_contables':
            //contable simple + extendido
            if($seccion_contables == 'on' && $seccion_contables_extendido == 'on') {
              //$html .= '<div class="page-breaker">';
              $html .= '<img src="'.$fidelitas.'"  class="text-left"  style="margin-top: 50px;">';
              $html .= $header;
              $html .= "<h2 class='text-center' style='margin-top: 25px;'>Contables</h2>";
              $html .= self::obtenerContables(false,$imp_grafico_capital_de_trabajo,$imp_grafico_patrimonial,$imp_grafico_solvencia,$imp_grafico_liquidez_corriente,$imp_grafico_endeudamiento_corriente,$imp_grafico_performance,$imp_efecto_palanca,$imp_ventas,$imp_gastos_totales_sobre_ventas,'impresion_extendido');
              $html .= '<div class="page-breaker">';
              $html .= "</div>";
            } elseif($seccion_contables == 'on' && $seccion_contables_compacto == 'on'){
            //contable simple + compacto
              //$html .= '<div class="page-breaker">';
              $html .= '<img src="'.$fidelitas.'"  class="text-left"  style="margin-top: 50px;">';
              $html .= $header;
              $html .= "<h2 class='text-center' style='margin-top: 25px;'>Contables</h2>";
              $html .= self::obtenerContables(false,$imp_grafico_capital_de_trabajo,$imp_grafico_patrimonial,$imp_grafico_solvencia,$imp_grafico_liquidez_corriente,$imp_grafico_endeudamiento_corriente,$imp_grafico_performance,$imp_efecto_palanca,$imp_ventas,$imp_gastos_totales_sobre_ventas,'impresion_compacto');
              $html .= '<div class="page-breaker">';
              $html .= "</div>";
            }
        break;
        case 'seccion_sociedades':
          //$html .= '<div class="page-breaker">';
          $html .= '<img src="'.$fidelitas.'"  class="text-left"  style="margin-top: 50px;">';
          $html .= $header;
          $html .= "<h2 class='text-center' style='margin-top: 25px;'>Sociedades</h2>";
          $html .= self::obtenerSociedades(false);
          $html .= '<div class="page-breaker">';
          $html .= "</div>";
        break;
        case 'seccion_legales':
          //$html .= '<div class="page-breaker">';
          $html .= '<img src="'.$fidelitas.'"  class="text-left"  style="margin-top: 50px;">';
          $html .= $header;
          $html .= "<h2 class='text-center' style='margin-top: 25px;'>Legales</h2>";
          $html .= self::obtenerLegales(false);
          $html .= '<div class="page-breaker">';
          $html .= "</div>";
        break;
        case 'seccion_bancos':
          //$html .= '<div class="page-breaker">';
          $html .= '<img src="'.$fidelitas.'"  class="text-left"  style="margin-top: 50px;">';
          $html .= $header;
          $html .= "<h2 class='text-center' style='margin-top: 25px;'>Bancos</h2>";
          $html .= self::obtenerBancos(false,$grafico_cheques_bancos,$grafico_financiero,$grafico_situaciones,$grafico_garantias);
          $html .= '<div class="page-breaker">';
          $html .= "</div>";
        break;
        case 'seccion_comex':
          //$html .= '<div class="page-breaker">';
          $html .= '<img src="'.$fidelitas.'" class="text-left" style="margin-top: 50px;">  ';
          $html .= $header;
          $html .= "<h2 class='text-center' style='margin-top: 25px;'>Comercio Exterior</h2>";
          $html .= self::obtenerComex(false,$grafico_impo_comex,$grafico_expo_comex,$grafico_pais_impo_comex,$grafico_rubro_impo_comex,$grafico_pais_expo_comex,$grafico_rubro_expo_comex);
          $html .= '<div class="page-breaker">';
          $html .= "</div>";
        break;
      }
    }
    $html   .= "</div>";
    $html   .= "</body>";

    $user_id = Session::get('usuario')->user_id;
    $nombre    = $cuit."_".$user_id.".html";
    //$nombre .= date('Y-m-d').'.html';
    if(!isset(Session::get('usuario')->cliente['client_id'])){
      return false;
    }

    $client_id = Session::get('usuario')->cliente['client_id'];
    $file           = ENV('TEMP_PDF').'/'.$client_id.'/'.$nombre;
    $file_download  = ENV('HISTORICO_PDF').'/'.$client_id.'/'.str_replace('.html', '.pdf', $nombre);
    if(!is_dir(ENV('TEMP_PDF').'/'.$client_id)){
        mkdir(ENV('TEMP_PDF').'/'.$client_id, 0777,true);
//        chmod(filename, 777);
    }

    if(!is_dir(ENV('HISTORICO_PDF').'/'.$client_id)){
        mkdir(ENV('HISTORICO_PDF').'/'.$client_id, 0777,true);
//      chmod(filename, 777);
    }
    file_put_contents($file,utf8_decode($html));
    chmod($file, 0777);
    exec("/usr/local/bin/wkhtmltopdf -d 300 -L 10 -R 10 -T 10 -B 10 --header-font-size 8 --header-right ' [page] de [toPage]'  --viewport-size 1920x1080 --zoom 1 ".ENV('TEMP_PDF').'/'.$client_id."/".$nombre." ".ENV('HISTORICO_PDF').'/'.$client_id."/".str_replace('.html', '.pdf', $nombre));
    /*
    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=' .$cuit.'_'.date("Y-m-d").'.pdf');
    readfile($file_download);
    $chmod = chmod($file_download, 0777);
    return 'ok';
  */
    Session::forget('html');
    //return response()->download($file_download);
    return response()->download($file_download);

  } 

  public static function cookieDisclaimer(){
    \Cookie::queue('disclaimer', true, 21600);
    return 'ok';
  }

  public function enviarSolicitudDossier(){
    $user_id      = Session::get('usuario')->user_id;     
    $cuit         = Request::input('dossier_cuit');
    $analisis     = Request::input('dossier_analisis');
    $confidencial = Request::input('dossier_confidencial');
    $observacion  = Request::input('dossier_observacion');
    $telefono     = Request::input('dossier_telefono');
    $dato_cliente = SQLConnection::obtenerDatosCliente($user_id);
    $content = array(
    "user_id" => $user_id,
    "cuit_dossier" => $cuit,
    "analisis"=> $analisis,
    "confidencial"=> $confidencial,
    "observacion"=> $observacion,
    "dato_cliente" => $dato_cliente,
    "telefono" => $telefono,
    );

    if (!$dato_cliente) {
      return 0;
    } 
      
    $envio_mail = Misc::enviarMail('mails/solicitud_dossier','ventas@fidelitas.com.ar', $content,"Consulta desde formulario");
    SQLConnection::consumirServicio($user_id,$cuit,ENV('ID_DOSSIER'));
    
    return 'ok';
  }

  public function enviarComentarioComercial(){
    $usuario        = Session::get('usuario');
    $user_id        = $usuario->user_id;
    $cliente        = $usuario->cliente['client_id'];
    $msj_comentario = Request::input('comentario_observacion');
    $cuit           = Request::input('cuit');

    if(!$usuario){
      return 0;
    }
    
    $comentarios = SQLConnection::cargaComentario($user_id,$cliente,$msj_comentario,$cuit);
    return \Response::json($comentarios, 200, [], JSON_NUMERIC_CHECK);
  }

  private 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['estado'][] = $objeto->estado;
      $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;
    }
    //ESTADO DE RESULTADO resumido
    foreach ($respuesta_estado as $key_array => $objeto) {
      $registro_estado['periodo'][] = $objeto->fecha_balance;
      $registro_estado['estado'][] = $objeto->estado;
      $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['estado'][] = $objeto->estado;
      $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['estado'][] = $objeto->estado;
      $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['estado'][] = $objeto->estado;
      $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['estado'][] = $objeto->estado;
      $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
    foreach ($indices_de_gestion_extendido as $key_array => $objeto) {
      $registro_gestion_ext['periodo'][] = $objeto->fecha_balance;
      $registro_gestion_ext['estado'][] = $objeto->estado;
      $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;   
  }

  public function mailMasivo(){
    if(Misc::enviarMail("mails/mail_masivo",array('leonel.turchetto@fidelitas.com.ar','juan.elidd@fidelitas.com.ar','alejandro.burgol@fidelitas.com.ar','npenza@colorin.com','ttulchinsky@segurossura.com.ar','avisodepago@ipesa.com.ar','pagos.argentina@ar.atlascopco.com','lilia.holubek@ferro.com','alejandro.andreas@icbc.com.ar','maximo.richards@metlife.com.ar','franco.merlini@revlon.com','veronica.lixklett@rabobank.com','cobranzas@forvis.com.ar','rmorello@bandex.com.ar','marianaf@iraola.com','cleveroni@petroleracopsa.com.ar','facturaselectronicas@nacion-seguros.com.ar','rch@uniformes-saber.com.ar','fabior@artwresolution.com','sergiorodriguez@seguvip.com.ar','nildaprieto@fibertel.com.ar','radiceo@fadete.com','cal@editores.org.ar','acerinoxargentina@acerinox.com','egulmez@arcor.com','efava@ryhlsa.com.ar','erabra@fibertel.com.ar','hbarbiero@propato.com.ar','talasesco@envases-riviere.com.ar','alejandra@tejidosdelrincon.com','facturacion@ospm.org.ar','nildaprieto@fibertel.com.ar','mcalvet@electra.com.ar','info@vbgpropiedades.com.ar','departamentolegal@neumatex.com.ar','calabreseyjuan@redynet2.com.ar','lmb@copanseguros.com.ar','samanta@pinturasandina.com.ar','montalbanohnos@yahoo.com.ar','a.borroni@acerosborroni.com','carolina@estudioaranguren.com.ar','ctaspagartrn@transener.com.ar','evazquez@sintesis.com.ar','administracion@amecco.org.ar','generaltrading@interlink.com.ar','rosanap@bancopublicitario.com','dgf.infopagosar@dhl.com','proveedores@abcsalud.com.ar','bua.curz@gsk.com','anita@tora.com.br','silvia.boschi@dellteam.com','gviale@pagina12.com.ar','romina.ramirez@symrise.com','administracion@chillari.com.ar','schocho@elsolarshopping.com.ar','gabriela.bordon@bausch.com','fabi_admreyes@hotmail.com','rperalta@bafcapital.net','credimar-ave@speedy.com.ar','administracion@cosenaseguros.com.ar','personalsol5@yahoo.com.ar','controlfinanciero@heritage.com.uy','etabasso@hamui-louys.com.ar','diego.chimirri@metlife.com.ar','mmitchelena@fuerzasolidaria.gov.ar','creditam_cooperativa@yahoo.com','fvalenti@cadime.com.ar','riesgos@solunion.com.ar','CorreaUrquizaM@ver.com.ar','smesa@pkfargentina.com.ar','russobienesraices@hotmail.com','proveedores@tucanotours.com.ar','inesfernandez@aibal.com.ar','convac@elcable.tv','escribanogomez_@hotmail.com','fernandop@zimil.com.ar','fabiola@loneco.com.ar','mquinteros@cetsa.com.ar','pagoproveedores@gasmeridional.com.ar','gperez@micropack.com.ar','alejandro.leone@renault.com','gabrielchazarreta@solucion-credito.com','anavaleriablanco@hotmail.com','mutualamerica@hotmail.com','monica@stoppello.com.ar','proveedores@saniplast.com.ar','constructoraaconcagua@hotmail.com','marina@maure.com.ar','alp@totalluz.com.ar','smarkov@arm-service.com','jaortiz@eling.com.ar','brebolledo@funmedorg.ar','ventas@bszapatos.com','paulacassano@hotmail.com','proveedores@sixcom.com.ar','fruiz@ase.com.ar','lperrotta@vfb.com.ar','info@cucchiara.sba.com.ar','administracion@rulemanesalvear.com.ar','martintavano@telpin.com.ar','pfrias@maco.com.ar','creditos@pagani-sa.com.ar','mcoroas@ldcsemillas.com','patricia@vairo.com','dscullino@bavsa.com','jbalderrama@ecadat.com.ar','ib@llauro.com.ar','jaexposito@fibercorp.com.ar','proveedores@taccahnos.com.ar','cristina.desouza@vicentin.com.ar','gabrielfernandez@lapompeya.com.ar','hernan.wehr@carrier.utc.com','ddidelitoseconomicos@outlook.com','adelantos@drogueria-avenida.com.ar','joseclaudiorusso@hotmail.com','distribuidorapinocor@hotmail.com','alquileresmosca@gmail.com','contrataciones@mseg.gba.gov.ar','admin@sabtextil.com','amendelzon@responsa.com.ar','MELISA@COOPSANJOSE.COM.AR','amuratorio@celulosasanpedro.com.ar','anne.bruentrup@eulerhermes.com','trafficmgr@asiancredit.com','pscagliotti@worldsys.com.ar','lmaldonado@bna.com.ar','info@tasa-sa.com.ar')
      ,'nada',"Fidelitas SA - Aumento de Tarifa")){
      print_r('enviado');

    }
  }

  public static function obtenerDatosPerfil($user_id){
    //$user_id              = Session::get('usuario')->user_id;
    $datos_usuario_perfil = SQLConnection::obtenerPerfil($user_id);
    $nombre               = $datos_usuario_perfil->first_name;
    $apellido             = $datos_usuario_perfil->last_name;
    //$fecha_nacimiento     = $datos_usuario_perfil->birthday;
    $email                = $datos_usuario_perfil->email;
    //$cargo                = $datos_usuario_perfil->position;
    $falta_data           = 0;
    
    if(is_null($nombre) || is_null($apellido) || is_null($email) ) {
      $falta_data = 1;
    }elseif( $nombre !='' || $apellido !='' || $email !=''){
      $falta_data = 1 ;
    }else{
      $falta_data = 0;
    }

    if( isset($nombre) && isset($apellido) && isset($email)){
      $falta_data = 0;
    }else{
      $falta_data = 1;
    }
    return $falta_data;
  }

  public static function obtenerIdProductosCliente($id_cliente,$es_cliente,$es_usuario){
    $productos_cliente = SQLConnection::obtenerProductosCliente($id_cliente,$es_cliente,$es_usuario);
    foreach ($productos_cliente as $producto) {
      $id_producto[] = $producto->prod_codigo ;
    }

    return $id_producto;
  }

  public static function generarSabana(){
    $secciones_sabana ['seccion_fiscales']            = Request::input('seccion_fiscales');
    $secciones_sabana ['seccion_brief']               = Request::input('seccion_brief');
    $secciones_sabana ['seccion_formales']            = Request::input('seccion_formales');
    $secciones_sabana ['seccion_comerciales']         = Request::input('seccion_comerciales');
    $secciones_sabana ['seccion_contables']           = Request::input('seccion_contables');
    $secciones_sabana ['seccion_sociedades']          = Request::input('seccion_sociedades');
    $secciones_sabana ['seccion_legales']             = Request::input('seccion_legales');
    $secciones_sabana ['seccion_bancos']              = Request::input('seccion_bancos');
    $secciones_sabana ['seccion_comex']               = Request::input('seccion_comex');
    $secciones_sabana ['seccion_fuentes_externas']    = Request::input('seccion_fuentes_externas');
    $secciones_sabana ['seccion_sabana']              = Request::input('seccion_sabana');
    $secciones_sabana ['seccion_contables_compacto']  = Request::input('seccion_contables_compacto');
    $secciones_sabana ['seccion_contables_extendido'] = Request::input('seccion_contables_extendido');
    $secciones_sabana ['incluir_homonimos_impresion'] = Request::input('incluir_homonimos_impresion');
    $html  = '';
    $html .= view('header_sabana')->render();
    $html .= self::obtenerCompacto(true,$secciones_sabana);
    //$html = preg_replace("/\r\n|\r|\n|\t/",'',$html);
    return $html;
  } 

 public static function obtenerMarcas(){
    $token            = Request::input('_token');
    $cuit             = Request::input('cuit');
    $marcas           = SQLConnection::obtenerMarcas($cuit);
    if($marcas){
      $marcas_unificadas = [];
      foreach ($marcas as $key => $value) {
        if($key == 0){
          $marcas_unificadas[] =  $value;
        }else{
          $item = false;
          $index = false;
          foreach($marcas_unificadas as $key2 => $mu) {
              if (
                $value->marca == $mu->marca &&
                $value->tipo == $mu->tipo
              ) {
                  $item = $value;
                  $index = $key2;
                  break;
              }
          }

          if($item){
             $marcas_unificadas[$index]->clase .=  ','.$value->clase;
           }else{
             $marcas_unificadas[] =  $value;
           }

        }
      
      }
      $marcas = $marcas_unificadas;
      foreach ($marcas as $key => $value) {


        //si no encuentra nuestra imagen , va a buscarla afuera
        $marcas[$key]->encontrada = false;
        if($value->web == 'null') {
          //obtener Imagen fuente externa
          if (!file_exists('/var/www/html/compartido/marcas/'.$value->num_boletin.'/marcas/'.$value->num_acta.'.gif')) {
            SQLConnection::cargarEstadoMarcasExterno($cuit,0,'web',$value->num_acta);
            $value->web = 0;
            $marcas[$key]->encontrada = false;
          }else{
            SQLConnection::cargarEstadoMarcasExterno($cuit,1,'web',$value->num_acta);
            $value->web = 1;
            $marcas[$key]->encontrada = true;
          }
        }
        if(
          $value->directorio == null && $value->web == 0 
          ){
            $imagen_marca_externa = Misc::obtenerImagenMarcasExterno($value->num_acta,$value->num_boletin);
            if($imagen_marca_externa){
              $marcas[$key]->encontrada = true;
              SQLConnection::cargarEstadoMarcasExterno($cuit,1,'directorio',$value->num_acta);
            }else{
              $marcas[$key]->encontrada = false;
              SQLConnection::cargarEstadoMarcasExterno($cuit,0,'directorio',$value->num_acta);
            }

        }

        if($value->web == 1 || $value->directorio == 1) {
          $marcas[$key]->encontrada = true;
        }
        //$Web-$directorio ordenamiento en presentacion imagenes  
        $web[$key] = $value->web;
        $directorio[$key] = $value->directorio;
        $clase[$key] = $value->clase; 
        
        //Ordenamiento de las clases de menor a mayor Y eliminacion de numeros repetidos
        $stringParts = str_split($marcas[$key]->clase);
        $out = explode(',', $marcas[$key]->clase);
        sort($out);
        $out = implode(',', $out);
        $marcas[$key]->clase = $out;
        $marcas[$key]->clase = implode(', ',array_unique(explode(',', $marcas[$key]->clase)));
        
        $nombre_marcas = trim($value->marca);
        $marcas[$key]->marca = $nombre_marcas;
        $tipo_marca = $value->tipo;
        if ($tipo_marca == 'D') {
          $marcas[$key]->tipo = 'DENOMINATIVA';
        }elseif ($tipo_marca == 'F') {
          $marcas[$key]->tipo = 'FIGURATIVA';
        }elseif ($tipo_marca == 'M') {
          $marcas[$key]->tipo = 'MIXTA';
        }


      }//endforeach
      //ordena array para que se muestren marcas con imagenes en los primeros resultados
      array_multisort($web, SORT_DESC, $directorio, SORT_DESC, $marcas);
    }else{
      return $marcas = '';
    }
    
   return $marcas;
  }

  public function enviarMailDefuncionError(){

    $defunciones = SQLConnection::mailDefuncionError();
    if (!$defunciones) {
      return 0;
    } 
    $envio_mail = Misc::enviarMail('mails/mail_defuncion_error','soporte@fidelitas.com.ar',$defunciones,"Fechas de Defunción que cambiaron según AFIP");
    return 'ok';
  }
    

 public static function pruebaURL() {
  //$url = 'https://seti.afip.gob.ar/padron-puc-constancia-internet/ConsultaConstanciaAction.do';
  $urls = SQLConnection::backendStoreProcedure('sp_servicios',array(),'select');
  return view('pruebas/pruebasurl')->with(compact('urls'));
 }

public static function pruebasURL() {
  //$url = 'https://seti.afip.gob.ar/padron-puc-constancia-internet/ConsultaConstanciaAction.do';
  $urls = SQLConnection::backendStoreProcedure('sp_servicios',array(),'select');
  $cuits = SQLConnection::backendStoreProcedure('sp_cuit_aleatorio',array(),'select');
  $hoja = '<table align="center" style="width:95%;font-family: Calibri,Trebuchet MS,arial,sans-serif;">';
  $hoja .='<tr style="background-color:#cccccc; font-weight: bold;"><td>Proceso</td><td>URL</td><td>Parámetros</td><td>Estado</td></tr>'; 
  foreach($urls as $url){
    if (strpos($url->parametros, 'XXXXXXXXXXX')!='0')
    {
      foreach($cuits as $cuit){
        //$url->url = str_replace('/v1/','/lñakfalñsdkf/', $url->url);

        $param = str_replace('XXXXXXXXXXX',$cuit->cuit, $url->parametros);
        $c = substr ($cuit->cuit,0,1); 
        if ($c=='3')
        {
        $param = str_replace('TYPE','COMPANY', $param);
        $param = str_replace('TIPO','J', $param);
        }
        else 
        {
        $param = str_replace('TYPE','PERSON', $param);
        $param = str_replace('TIPO','F', $param);
        }
        $hoja .= self::CURLCall($url->nombre, $url->url,$param,$url->metodo);
      }
    }
    else
    {
      $hoja .= self::CURLCall($url->nombre, $url->url,$url->parametros,$url->metodo);
    }
    $hoja .= '<tr style="background-color:#cccccc;"><td colspan=4></td></tr>';
  }
  $hoja .= '</table>';
  echo $hoja; 
}


public static function pruebasURL1() {

  $url = Request::input('url');
  $parametros = Request::input('parametros');
  $id = Request::input('id');
  $nombre = Request::input('nombre');
  $metodo = Request::input('metodo');

  $hoja = '<table align="center" style="width:95%;font-family: Calibri,Trebuchet MS,arial,sans-serif;">';
  $hoja .='<tr style="background-color:#cccccc; font-weight: bold;"><td>Proceso</td><td>URL</td><td>Parámetros</td><td>Estado</td></tr>'; 
   if (strpos($parametros, 'XXXXXXXXXXX')!='0')
   {
       $cuits = SQLConnection::backendStoreProcedure('sp_cuit_aleatorio',array(),'select');    
   }
   if (strpos($parametros, 'XXXXXXXXXXX')!='0')
    {
      foreach($cuits as $cuit){
        $param = str_replace('XXXXXXXXXXX',$cuit->cuit, $parametros);
        $c = substr ($cuit->cuit,0,1); 
        if ($c=='3')
        {
        $param = str_replace('TYPE','COMPANY', $param);
        $param = str_replace('TIPO','J', $param);
        }
        else 
        {
        $param = str_replace('TYPE','PERSON', $param);
        $param = str_replace('TIPO','F', $param);
        }
        $hoja .= self::CURLCall($nombre, $url,$param,$metodo);
      }
    }
    else
    {
      $hoja .= self::CURLCall($nombre, $url,$parametros,$metodo);
    }
    $hoja .= '</table>';
    return view('pruebas/modal_pruebasurl')->with(compact('hoja'));

  }


public static function CURLCall($nombre, $url,$params,$type="POST"){
    $curl = curl_init();
    curl_setopt_array($curl, array(
      CURLOPT_URL => $url,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_VERBOSE => true,
      CURLOPT_HEADER => 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);
    $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
    $header = substr($response, 0, $header_size);
    $body = substr($response, $header_size);

    $err      = curl_error($curl);
    $info     = curl_getinfo($curl); 

    curl_close($curl);

    if (!empty($err) || strpos($response,' 400 ')!= 0 || strpos($response,' 404 ')!= 0 ) {
      $hoja2 = '<tr style="color:red;"><td>'. $nombre. '</td><td>' . $url. '</td><td>'. $params. '</td><td>ERROR</td></tr>'; 
    } else {
      $hoja2 = '<tr><td>'. $nombre. '</td><td>' . $url. '</td><td>'. $params. '</td><td>OK</td></tr>'; 
    }
    return $hoja2;
  }
  public static function verificarMongo($iden){
    $info = DB::connection('mongodb')->collection('cendeu')->where('iden', $iden)->get();
    $borrar = 1;
    foreach ($info as $key => $value) {
    $resp = SQLConnection::backendStoreProcedure('cendeu_mongo_batch', array($value['codigo_ent'],$value['fec_inf'],$value['tipo'],$value['iden'],$value['actividad'],$value['situacion'],$value['prestamos'],$value['particip'],$value['garotor'],$value['o_cptos'],$value['garprefa'],$value['garprefb'],$value['singarpref'],$value['cgarprefa'],$value['cgarprefb'],$value['sincgarpre'],$value['previ'],$value['deuda_cubr'],$value['proc_jud'],$value['refinanc'],$value['rec_oblig'],$value['sit_juridi'],$value['irre_dispt'],$value['dia_atraso'],$value['vigente'],$value['dbf_filename']), true);
    if(isset($resp->resultado) && $resp->resultado == 0){
        $borrar = 0;
      }
    }
    if($borrar == 1){
      DB::connection('mongodb')->collection('cendeu')->where('iden', $iden)->delete();
    }
  }
  
  public static function verificarMonitoreosEnMongo(){
    //Store the micro time so that we know
    //when our script started to run.
    $executionStartTime = microtime(true);
 
    $resp = SQLConnection::backendStoreProcedure('actualizar_monitoreos_mongo',array());
    foreach ($resp as $key => $value) {
      self::verificarMongo($value->cuit);
     // usleep(500000);
    }
    //At the end of your code, compare the current
    //microtime to the microtime that we stored
    //at the beginning of the script.
    $executionEndTime = microtime(true);
   
    //The result will be in seconds and milliseconds.
    $seconds = $executionEndTime - $executionStartTime;
    echo "This script took $seconds to execute.";
  }
}