<?php

namespace App\Http\Controllers;

use App\Custom\SQLConnection;
use App\Custom\Misc;

use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\DB;

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 static function verificarMongo($iden)
	{
		if (env('SERVICIO_MONGO') != TRUE) {
			return false;
		}
		$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 function obtenerSociedades($json = true, $relaciones_en_color = 'false')
	{
		$apikey = Request::input('apikey');
		$imagen_fidelitas = Misc::obtenerImagenFidelitas();
		$mostrar_homonimos = true;
		$incluir_homonimos_impresion = Request::input('incluir_homonimos_impresion') ?? 1;
		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');
		$tipo_persona = (Misc::tipoPersona($cuit) == 'F') ? 'f' : 'j';
		$obtenerRazonSocial = SQLConnection::obtenerRazonSocial($cuit);
		$razon_social_todos = [];
		$razon_social = Request::input('razon_social');
		if (!$razon_social) {
			$razon_social = $obtenerRazonSocial->nombre_persona;
		}
		$razon_social = str_replace('#', 'ñ', $razon_social);
		if ($tipo_persona == 'f') {
			$apellidos = $obtenerRazonSocial->apellidos;
			$dni = $obtenerRazonSocial->dni;
			//elimina los 0 de adelante
			while (substr($dni, 0, 1) == '0') {
				$dni = substr($dni, 1);
			}
		}

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

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

		$malla_societaria = SQLConnection::grafoSociedades($cuit, $tipo_persona);
		if (Misc::tieneRepetidos($malla_societaria)) {
			$malla_societaria = Misc::quitarRepetidos($malla_societaria);
		}

		// EDICTOS 
		$edictos = [];
		$edictos_homonimos = [];

		//EDICTOS DE P. FISICA
		if ($tipo_persona == 'f') {
			/*
			Parameter #1 $array (list<non-falsy-string>) of array_values is already a list, call has no effect.\
		        🪪  arrayValues.list
		        No es necesario, razon_social_explode ya es un array indexado
 			$razon_social_explode = array_values($razon_social_explode);
			*/
			$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]."\"";
			}

			// Busco mencionados por nombre, por cuit y por dni

			// 1) Busco los edictos de las empresas en las que es directivo o accionista, y está mencionado su apellido

			$cuits_empresas = [];
			$i = 0;
			$j = 0;
			foreach ($malla_societaria as $key => $value) {
				if (!in_array($value->cuit, $cuits_empresas) && !empty($value->cuit) && !is_null($value->cuit)) {
					array_push($cuits_empresas, $value->cuit);
				}
			}

			$apellidos = "\"" . $apellidos . "\"";
			foreach ($cuits_empresas as $key => $cuit_empresa) {
				$edictos_empresa = SQLConnection::backendStoreProcedure('obtener_edictos_con_integrante_mencionado', array($cuit_empresa, $cuit, $apellidos), false);
				$edictos = array_merge($edictos, $edictos_empresa);
			}
			/* Ordenamos los edictos por fecha de publicación descendente 
			porque los SP los trae en ese orden pero para cada cuit_empresa, 
			y al juntarlos todos, queda primero una empresa, después otra y cada una ordenada por fecha, 
			pero se quiere el orden de fecha general para todos los registros */

			array_multisort(array_column($edictos, 'fecha_boletin'), SORT_DESC, $edictos);

			$edictos_mencionado_nombre = [];
			$edictos_mencionado_cuit = [];
			$edictos_mencionado_dni = [];
			// $edictos_mencionado_nombre = SQLConnection::backendStoreProcedure('obtener_edictos_mencionado', array($razon_social_completa), false);
			try {
                //code...
                $edictos_mencionado_nombre = SQLConnection::backendStoreProcedure('obtener_edictos_mencionado', array($razon_social_completa), false);
            } catch (\Throwable $th) {
                //throw $th;
            }
			/* Busqueda por cuit y dni: cuando se ponga esto, dejar el array_unique de mas abajo 
			$edictos_mencionado_cuit = SQLConnection::obtenerEdictosMencionado("\"".$cuit."\"");
			if (strlen($dni) > 6)
			{
				$edictos_mencionado_dni = SQLConnection::obtenerEdictosMencionado("\"".$dni."\""); 
			}
			*/
			$edictos_mencionado = array_merge($edictos_mencionado_nombre, $edictos_mencionado_cuit, $edictos_mencionado_dni);
			//$edictos_mencionado  = array_unique($edictos_mencionados);

			// Elimina los edictos de las empresas en las que es directivo o accionista porque ya se ven en Edictos
			foreach ($edictos_mencionado as $key => $value) {
				if (empty($value->cuit_soc) || is_null($value->cuit_soc) || !in_array($value->cuit_soc, $cuits_empresas)) {
					$edictos_homonimos[$j] = new \stdClass;
					$edictos_homonimos[$j]->provincia_boletin = $value->provincia_boletin ?? '';
					$edictos_homonimos[$j]->fechab = $value->fecha_publicacion_DMY ?? '';
					$edictos_homonimos[$j]->razon_social = $value->razon_social ?? '';
					$edictos_homonimos[$j]->contenido_archivo = $value->contenido_archivo ?? '';
					$j++;
				}
			}
			if ($json == true && !$apikey) {
				$edictos_homonimos = Misc::ResaltarResultadosEdictosHomonimosPF($edictos_homonimos, $resultado_razon_social);
				/*$edictos_homonimos = Misc::ResaltarResultadosEdictosHomonimosPF($edictos_homonimos,$cuit,'1');
																																						$edictos_homonimos = Misc::ResaltarResultadosEdictosHomonimosPF($edictos_homonimos,$dni,'1');*/
			}
		}

		//var_dump($razon_social_completa); die(); 
		//EDICTOS DE P. JURIDICA
		if ($tipo_persona == 'j') {

			$edictos = SQLConnection::obtenerEdictos($cuit);
			// 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 . "\"";
					}
					//echo(var_dump($razon_social_completa)); die(); 
					$edictos_homonimos = SQLConnection::obtenerEdictosHomonimos($razon_social_completa);
				}

				if ($edictos_homonimos) {
					/* 15/11/2023: Eliminamos los que tienen asignado el cuit del que estamos viendo el informe, o tienen el texto del edicto vacio */
					foreach ($edictos_homonimos as $key => $value) {
						if ($value->cuit_soc == $cuit || empty($value->contenido_archivo)) {
							unset($edictos_homonimos[$key]);
						}
					}

					if ($json == true && !$apikey) {
						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 = Misc::diccionarioSinonimos2020($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;
					if ($json == true && !$apikey) {
						$edictos = Misc::ResaltarResultadosEdictos($edictos, '', $sinonimos);
					}
				} else {
					//print_r(" 1 - ResaltarResultadosEdictos(edictos,razon_social,'')");
					if ($json == true && !$apikey) {
						$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)) {
						if ($json == true && !$apikey) {
							//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)");
					if ($json == true && !$apikey) {
						$edictos = Misc::ResaltarResultadosEdictos($edictos, '', $sinonimos);
					}
				}
			}
		}

		foreach ($participaciones as $participacion) {
			$participaciones_ordenados[$participacion->nombre_socio][] = $participacion;
		}

		if (isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'backend') !== false) {
			$relaciones_en_color = 'true';
		} else {
			$relaciones_en_color = 'false';
		}

		if ($relaciones_en_color == 'true') {
			//--------------------------------------------------------------------------------------------------
			// ESTA PARTE ES PARA QUE SE MUESTRE CADA RELACIONADO, CON EL CIRCULITO DEL COLOR SEGUN SU SCORE. (Todo lo demás gris)
			//--------------------------------------------------------------------------------------------------
			foreach ($malla_societaria as $key => $malla) {
				$malla_societaria[$key]->score_color = '#cccccc';
				/* 03/03/2021: Se saco el if que solo lo hacia para socios, que lo haga para todas las vinculaciones 
																																									  Solicitado por AGB */
				//if (($malla->seccion == "SOCIOS" || $malla->seccion == 'SOCIEDADES')) 
				//{
				$w_cuit = $malla->cuit;
				// Score de cada uno de los socios_directores 
				$params = 'cuit=' . $w_cuit . '&apikey=1F44A3FAA0C15C42';
				$html = self::CURLCallScore(env("API_SCORE_INFORME_COMERCIAL"), $params, 'POST');
				$w_score = isset(json_decode($html)->score) ? json_decode($html)->score : 0;
				usleep(100000);
				if ($w_score <= 50) {
					$w_color = "#A72B2A";
				}
				if ($w_score > 50 && $w_score < 65) {
					$w_color = "#FFB81C";
				}
				if ($w_score >= 65) {
					$w_color = "#63b68c";
				}
				$malla_societaria[$key]->score = $w_score;
				$malla_societaria[$key]->score_color = $w_color;
				//}
			}
		} else {
			foreach ($malla_societaria as $key => $malla) {
				$w_color = '#cccccc';
				if ($malla->seccion == "SOCIOS" || $malla->seccion == 'SOCIEDADES') {
					$w_color = '#5E8AB4';
				}
				if ($malla->seccion == 'ACCIONISTAS') {
					$w_color = '#309e99';
				}
				if ($malla->seccion == 'VINCULACIONES_OTRAS') {
					$w_color = '#006064';
				}
				if ($malla->seccion == 'CONTROLADAS') {
					$w_color = '#977CD1';
				}
				if ($malla->seccion == 'CONTROLANTES') {
					$w_color = '#004D40';
				}
				if ($malla->seccion == 'FIRMANTES') {
					$w_color = '#793D87';
				}
				if ($malla->seccion == 'ACCIONISTA_DE') {
					$w_color = '#793D87';
				}
				if ($malla->seccion == 'EMPLEADO_DE') {
					$w_color = '#AB47BC';
				}
				if ($malla->seccion == 'FAMILIARES') {
					$w_color = '#793D87';
				}
				$malla_societaria[$key]->score_color = $w_color;
			}
		}

		foreach ($malla_societaria as $malla) {
			$malla_societaria[$malla->seccion] = true;
			if ($relaciones_en_color == 'true') {
				$malla_societaria['COLORES'] = true;
			} else {
				$malla_societaria['COLORES'] = false;
			}
		}

		$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();
		
		//dd($_SERVER['REMOTE_ADDR']);
		$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', 'malla_societaria', 'nombres_anteriores', 'malla_razon_social', 'mostrar_homonimos'))->render();
		//Session::put($cuit." ".date('Y-m-d').".sociedades",json_encode($vista));
		//var_dump($vista); die(); 	
		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')
				'info' => compact('malla_societaria', 'tipo_persona', 'socios_directores', 'accionistas', 'accionista_de', 'vinculaciones', 'participaciones_ordenados', 'vinculaciones_indirectas', 'edictos', 'edictos_homonimos', 'mostrar_homonimos', 'nombres_anteriores', 'malla_razon_social', 'imagen_fidelitas')

			)
			,
			200,
			[],
			JSON_NUMERIC_CHECK
		);
	}

	public static function obtenerFormales($json = true)
	{
		$imagen_fidelitas = Misc::obtenerImagenFidelitas();
		$cuit = Request::input('cuit') ?? null;
		$id_padron = Request::input('idp') ?? null;
		// 07/10/2021: para poder llamarlo desde led 
		$es_led = false;
		$id = Request::input('contraparte') ?? null;
		if (!$cuit) {
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
			$cuit = $qcontrap->identificacion ?? null;
			$json = false;
			$es_led = true;
		}
		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));
		$generales = [];

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

		$claes = SQLConnection::obtenerClae($cuit);
		if ($claes) {
			foreach ($claes as $clae) {
				if ($clae->fecha_inicio_actividad) {
					$fecha_inicio_actividad = $clae->fecha_inicio_actividad;
				}
			}
		}
		if (!isset($fecha_inicio_actividad)) {
			$fecha_inicio_actividad = NULL;
		}
		//--
		if (!isset($nombres_anteriores)) {
			$nombres_anteriores = NULL;
		}

		$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 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 static function CURLCallScore($url, $params, $type = "POST")
	{
		$curl = curl_init();
		curl_setopt_array($curl, array(
			CURLOPT_URL => $url,
			CURLOPT_RETURNTRANSFER => true,
			CURLOPT_ENCODING => "",
			CURLOPT_MAXREDIRS => 10,
			CURLOPT_TIMEOUT => 9999,
			CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
			CURLOPT_CUSTOMREQUEST => $type,
			CURLOPT_POSTFIELDS => $params,
			CURLOPT_HTTPHEADER => array(
				"cache-control: no-cache",
				"content-type: application/x-www-form-urlencoded"
			),
		));

		$response = curl_exec($curl);
		$err = curl_error($curl);
		curl_close($curl);

		if ($err) {
			return json_encode(array('error' => true));
		} else {
			return $response;
		}
	}

	public function obtenerComerciales($json = true)
	{
		$imagen_fidelitas = Misc::obtenerImagenFidelitas();
		$cuit = Request::input('cuit');
		/* 07/10/2021: para poder llamarlo desde led */

		$es_led = false;
		$id = Request::input('contraparte') ?? null;
		if (!$cuit) {
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
			$cuit = $qcontrap->identificacion ?? null;
			$json = false;
			$es_led = true;
		}
		//
		$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', 'es_led'))->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 obtenerMarcas()
	{
		$token = Request::input('_token');
		$cuit = Request::input('cuit');
		/* 07/10/2021: para poder llamarlo desde led */

		$es_led = false;
		$id = Request::input('contraparte') ?? null;
		if (!$cuit) {
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
			$cuit = $qcontrap->identificacion ?? null;
			$json = false;
			$es_led = true;
		}

		$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);
					$imagen_marca_externa = false;
					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 obtenerFiscales($json = true, $pdf_inscripcion = '')
	{
		$imagen_fidelitas = Misc::obtenerImagenFidelitas();
		$cuit = Request::input('cuit');
		$id_padron = Request::input('idp');

		/* 07/10/2021: para poder llamarlo desde led */
		$es_led = false;
		$id = Request::input('contraparte') ?? null;
		if (!$cuit) {
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
			$cuit = $qcontrap->identificacion ?? null;
			$json = false;
			$es_led = true;
		}

		if ($cuit == '30532136934') {
			$id_padron = '1629071';
		}

		if (!$id_padron) {
			$idp = SQLConnection::obtenerIdPadron($cuit);
			$id_padron = $idp->id_padron;
		}
		//
		$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);
		}

		$link_pdf = env('AFIP_URL_COMPARTIDO_PEGAR') . '/' . substr($cuit, 0, 2) . '/' . substr($cuit, 2, 3) . '/' . substr($cuit, 5, 3) . '/' . $cuit . '.png';
		$link_pdf_vista = env('AFIP_URL_COMPARTIDO_LEER') . '/' . substr($cuit, 0, 2) . '/' . substr($cuit, 2, 3) . '/' . substr($cuit, 5, 3) . '/' . $cuit . '.png';
		if (!file_exists($link_pdf)) {
			$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)) {
			// if(file_exists($link_pdf) ){
			$pdf_disponible = true;
		} else {
			$exec = SQLConnection::backendStoreProcedure('afip_texto_sin_constancia', array($id_padron), true);
			$texto_pdf = ($exec->texto_constancia) ?? '';
		}

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


		if (isset($inscripciones->empleador) && $inscripciones->empleador == 'SI') {
			$tipo_aportes = 'j';
			$aportes = SQLConnection::backendStoreProcedure('mis_aportes_empresa', array($cuit), false);
		} else {
			$tipo_aportes = $tipo_persona;
			$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_aportes == '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) {
				/*
																															Si hay distintos en el mismo periodo gana el mayor 
																															tomando este orden
																															IMPAGO
																															PAGO PARCIAL 
																															PAGO (lo pasamos como PAGO TOTAL para que la comparacion de < haga el ordenamiento que queremos (pago total > pago parcial), despues lo volvemos a poner como PAGO)
																															*/
				if ($aporte->ddjj == 'PAGO') {
					$aporte->ddjj = 'PAGO TOTAL';
				}
				if (!isset($misaportes[$aporte->periodo_str]['ddjj']) || $misaportes[$aporte->periodo_str]['ddjj'] < $aporte->ddjj) {
					$misaportes[$aporte->periodo_str]['ddjj'] = $aporte->ddjj;
				}
				if ($aporte->aportes_os == 'PAGO') {
					$aporte->aportes_os = 'PAGO TOTAL';
				}
				if (!isset($misaportes[$aporte->periodo_str]['aportes_os']) || $misaportes[$aporte->periodo_str]['aportes_os'] < $aporte->aportes_os) {
					$misaportes[$aporte->periodo_str]['aportes_os'] = $aporte->aportes_os;
				}
				if ($aporte->aportes_ss == 'PAGO') {
					$aporte->aportes_ss = 'PAGO TOTAL';
				}
				if (!isset($misaportes[$aporte->periodo_str]['aportes_ss']) || $misaportes[$aporte->periodo_str]['aportes_ss'] < $aporte->aportes_ss) {
					$misaportes[$aporte->periodo_str]['aportes_ss'] = $aporte->aportes_ss;
				}

				if ($aporte->contr_patronal == 'PAGO') {
					$aporte->contr_patronal = 'PAGO TOTAL';
				}
				if (!isset($misaportes[$aporte->periodo_str]['contr_patronal']) || $misaportes[$aporte->periodo_str]['contr_patronal'] < $aporte->contr_patronal) {
					$misaportes[$aporte->periodo_str]['contr_patronal'] = $aporte->contr_patronal;
				}
			}

			foreach ($misaportes as $x => $aporte) {
				foreach ($aporte as $z => $ap) {
					if ($ap == 'PAGO TOTAL') {
						$misaportes[$x][$z] = 'PAGO';
					}
				}
			}


		}
		$vista = \View::make('informes/fiscales')->with(compact('inscripciones', 'arba', 'claes', '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', 'tipo_aportes'))->render();

		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', 'tipo_aportes')
			)
			,
			200,
			[],
			JSON_NUMERIC_CHECK
		);
	}

	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 = [];
		$tipo_persona = (substr($cuit, 0, 1) != '3') ? 'f' : 'j';
		$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));
		/*Cuadro de Cheques - Inicio */
		$cuadro_cheques = [];
		$cuadro_cheques = SQLConnection::backendStoreProcedure('obtener_cuadro_cheques2', array($cuit));
		$cuadro_cheques_totales = [];
		$total_cheques = [];
		$total_cheques['1propio']['cantidad'] = 0;
		$total_cheques['2empresa']['cantidad'] = 0;
		$total_cheques['1propio']['monto'] = 0;
		$total_cheques['2empresa']['monto'] = 0;


		if (!isset($cuadro_cheques_totales['1propio']['LEVANTADOS']['SIN FONDOS'])) {
			$cuadro_cheques_totales['1propio']['LEVANTADOS']['SIN FONDOS'] = new \stdClass();
			$cuadro_cheques_totales['1propio']['LEVANTADOS']['SIN FONDOS']->cantidad = 0;
			$cuadro_cheques_totales['1propio']['LEVANTADOS']['SIN FONDOS']->monto = 0;
		}
		if (!isset($cuadro_cheques_totales['1propio']['LEVANTADOS']['DEFECTOS FORMALES'])) {
			$cuadro_cheques_totales['1propio']['LEVANTADOS']['DEFECTOS FORMALES'] = new \stdClass();
			$cuadro_cheques_totales['1propio']['LEVANTADOS']['DEFECTOS FORMALES']->cantidad = 0;
			$cuadro_cheques_totales['1propio']['LEVANTADOS']['DEFECTOS FORMALES']->monto = 0;
		}

		if (!isset($cuadro_cheques_totales['1propio']['SIN LEVANTAR']['SIN FONDOS'])) {
			$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['SIN FONDOS'] = new \stdClass();
			$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['SIN FONDOS']->cantidad = 0;
			$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['SIN FONDOS']->monto = 0;
		}

		if (!isset($cuadro_cheques_totales['1propio']['SIN LEVANTAR']['DEFECTOS FORMALES'])) {
			$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['DEFECTOS FORMALES'] = new \stdClass();
			$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['DEFECTOS FORMALES']->cantidad = 0;
			$cuadro_cheques_totales['1propio']['SIN LEVANTAR']['DEFECTOS FORMALES']->monto = 0;
		}

		if (!isset($cuadro_cheques_totales['1propio']['CHEQUES']['SIN FONDOS'])) {
			$cuadro_cheques_totales['1propio']['CHEQUES']['SIN FONDOS'] = new \stdClass();
			$cuadro_cheques_totales['1propio']['CHEQUES']['SIN FONDOS']->cantidad = 0;
			$cuadro_cheques_totales['1propio']['CHEQUES']['SIN FONDOS']->monto = 0;
		}

		if (!isset($cuadro_cheques_totales['1propio']['CHEQUES']['DEFECTOS FORMALES'])) {
			$cuadro_cheques_totales['1propio']['CHEQUES']['DEFECTOS FORMALES'] = new \stdClass();
			$cuadro_cheques_totales['1propio']['CHEQUES']['DEFECTOS FORMALES']->cantidad = 0;
			$cuadro_cheques_totales['1propio']['CHEQUES']['DEFECTOS FORMALES']->monto = 0;
		}

		foreach ($cuadro_cheques as $key => $value) {
			if (!isset($cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->cantidad)) {
				$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal] = new \stdClass();
				$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->cantidad = 0;
				$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->monto = 0;
			}
			$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->cantidad = $value->cantidad;
			$cuadro_cheques_totales[$value->tipo][$value->cheques_o_levantados][$value->causal]->monto = $value->monto;
			if ($value->cheques_o_levantados == 'CHEQUES') {
				$total_cheques[$value->tipo]['cantidad'] = $total_cheques[$value->tipo]['cantidad'] + $value->cantidad;
				$total_cheques[$value->tipo]['monto'] = $total_cheques[$value->tipo]['monto'] + $value->monto;
			}
		}

		if (isset($cuadro_cheques_totales['2empresa'])) {
			krsort($cuadro_cheques_totales['2empresa']['CHEQUES']);
		}
		/*Cuadro de Cheques - Fin */
		$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::backendStoreProcedure('obtener_garantias_bancos', array($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;
					}
				}
			}


			/* esto se cambio por la linea de abajo 27/10/2020:
																	 $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['propio']) ? sizeof($cheques_ordenados['propio']) : 0;
																	   $cheques_ordenados['cantidad_propios'] = isset($cheques_ordenados['propio']) ? sizeof($cheques_ordenados['propio']) : 
																						 isset($cheques_ordenados['a_nombre_de_empresa']) ? sizeof($cheques_ordenados['a_nombre_de_empresa']) : 0; 	
																	 */
			$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_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();

		$obtener_morosos = SQLConnection::backendStoreProcedure('obtener_morosos', array($cuit));

		$vista = \View::make('informes/bancos')->with(compact(
			'periodo',
			'obtener_morosos',
			'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',
			'grafico_cheques',
			'cuadro_cheques',
			'cuadro_cheques_totales',
			'total_cheques'
		))->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_morosos', 'obtener_bancos', 'cancelaciones', 'imagen_fidelitas')

			)
			,
			200,
			[],
			JSON_NUMERIC_CHECK
		);
	}

	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 = 'N';
		$respuesta_activo = self::arrayRever(SQLConnection::obtenerActivoResumido($cuit, $ver_todos));
		//$respuesta_activo               = Misc::procesarBalance($respuesta_activo);
		$respuesta_pasivo = self::arrayRever(SQLConnection::obtenerPasivoResumido($cuit, $ver_todos));
		//$respuesta_pasivo               = Misc::procesarBalance($respuesta_pasivo);
		$respuesta_estado = self::arrayRever(SQLConnection::obtenerEstadodeResultadosResumido($cuit, $ver_todos));
		//$respuesta_estado               = Misc::procesarBalance($respuesta_estado);
		$indices_de_gestion = self::arrayRever(SQLConnection::obtenerIndicesDeGestionResumido($cuit, $ver_todos));
		//$indices_de_gestion             = Misc::procesarBalance($indices_de_gestion);
		$respuesta_activo_extendido = self::arrayRever(SQLConnection::obtenerActivo($cuit, $ver_todos));
		//$respuesta_activo_extendido     = Misc::procesarBalance($respuesta_activo_extendido);
		$respuesta_pasivo_extendido = self::arrayRever(SQLConnection::obtenerPasivo($cuit, $ver_todos));
		//$respuesta_pasivo_extendido     = Misc::procesarBalance($respuesta_pasivo_extendido);
		$respuesta_estado_extendido = self::arrayRever(SQLConnection::obtenerEstadodeResultados($cuit, $ver_todos));
		//$respuesta_estado_extendido     = Misc::procesarBalance($respuesta_estado_extendido);
		$indices_de_gestion_extendido = self::arrayRever(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 ANTERIOR DE CONTABLES
		/* $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(); */
		//----- NUEVA SECCION DE CONTABLES
		$hay_analisis = 0;
		$nuevo_extendido = null;
		// SE FORZA QUE LA VERSION DEL BALANCE SEA LA EXTENDIDA
		$productobalance = (object) ['version_balance' => 'F'];
		// VARIABLE QUE DETERMINA QUE LA LLAMADA ES DESDE PARA EL INFORME COMERCIAL
		$desde_infomre = true;
		//-----
		$balances_data = SQLConnection::backendStoreProcedure('LN_balances_data', array($cuit, null, null), 'select');
		//------
		foreach ($balances_data as $key => $datos_balance) {
			$nuevo_extendido['endeudamiento_total'][] = $datos_balance->endeudamiento_total;
			$nuevo_extendido['endeudamiento_corriente'][] = $datos_balance->endeudamiento_corriente;
			$nuevo_extendido['capital_corriente_sobre_activo'][] = $datos_balance->capital_corriente_sobre_activo;
			$nuevo_extendido['rotacion_pasivo_corriente'][] = $datos_balance->rotacion_pasivo_corriente;
			$nuevo_extendido['rotacion_activos'][] = $datos_balance->rotacion_activos;
			$nuevo_extendido['meses_deuda'][] = $datos_balance->meses_deuda;
			$nuevo_extendido['dias_deuda'][] = $datos_balance->dias_deuda;
			$nuevo_extendido['margen_operativo'][] = $datos_balance->margen_operativo;
			$nuevo_extendido['ebitda'][] = $datos_balance->ebitda;
			$nuevo_extendido['ebitda_ventas'][] = $datos_balance->ebitda_ventas;
			$nuevo_extendido['etitda_intereses'][] = $datos_balance->etitda_intereses;
			$nuevo_extendido['gastos_financieros_ventas'][] = $datos_balance->gastos_financieros_ventas;
			$nuevo_extendido['gastos_comerciales_ventas'][] = $datos_balance->gastos_comerciales_ventas;
			$nuevo_extendido['gastos_administracion_ventas'][] = $datos_balance->gastos_administracion_ventas;
			$nuevo_extendido['gastos_totales_ventas'][] = $datos_balance->gastos_totales_ventas;
			$nuevo_extendido['inversiones_bienes_uso'][] = $datos_balance->inversiones_bienes_uso;
			$nuevo_extendido['vida_restante_bienes_uso'][] = $datos_balance->vida_restante_bienes_uso;
			$nuevo_extendido['ebit'][] = $datos_balance->ebit;
			$nuevo_extendido['ebit_ventas'][] = $datos_balance->ebit_ventas;
		}
		// CONFIGURACIONES DEL IDIOMA
		$servicios = isset(Session::get('usuario')->servicios) ? Session::get('usuario')->servicios : null;
		$idioma = 'esp';
		if (!is_null($servicios)) {
			foreach ($servicios as $servicio => $config) {
				if ($config->id_producto == env('ID_INFORME_COMERCIAL')) {
					$idioma = $config->userLanguage;
				}
				continue;
			}
		}
		// CONTROL DE LOS DATOS QUE VIENEN
		$error = 0;
		if (empty($registro_act) || empty($registro_estado) || empty($registro_ind_gestion) || empty($registro_gestion_ext) || empty($registro_act_ext) || empty($registro_pas_ext) || empty($registro_estado_ext) || empty($registro_gestion_ext) || empty($nuevo_extendido)) {
			$error++;
		}
		//$idioma = 'mix'; // PARA BALANCES BILINGUALES
		// FIN DE LA CONFIGURACION DE IDIOMA
		//-----
		/* 02/11/2022: Si es Manifestacion de Bienes muestra el contables compacto */
		$bal_man = $balances_data[0]->bal_manifestacion ?? 'M';
		if ($idioma != 'mix' && $bal_man !== 'M') {
			$vista = \View::make('/led/led_contables_ext')->with(compact(
				'productobalance',
				'nuevo_extendido',
				'hay_analisis',
				'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',
				'desde_infomre',
				'error'
			))->render();
		} else {
			// VISTA DE TRADUCCIONES
			$vista = \View::make('/informes/contables')->with(compact(
				'productobalance',
				'nuevo_extendido',
				'hay_analisis',
				'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',
				'desde_infomre',
				'ver_todos',
				'bal_man'
			))->render();
		}
		//--- FIN DE NUEVA SECCION CONTABLES
		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', 'idioma')
			)
			,
			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;
			$registro_act['ruta_archivo'][] = $objeto->ruta_archivo;
			$registro_act['fecha_amd'][] = $objeto->fecha_order;
			$registro_act['cuit'][] = $objeto->cuit;
		}
		//ESTADO DE RESULTADO resumido
		foreach ($respuesta_estado as $key_array => $objeto) {
			$registro_estado['periodo'][] = $objeto->fecha_balance;
			$registro_estado['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;
	}

	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 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 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;
					}
				}
			}
		}
		//arreglo periodos vacíos. 2019-10-07
		foreach ($grafico_ordenado as $fecha => $value) {
			$total = $grafico_ordenado[$fecha]['total'] - ($grafico_ordenado[$fecha]['con_garantias_a'] + $grafico_ordenado[$fecha]['con_garantias_b'] + $grafico_ordenado[$fecha]['sin_garantias']);
			if ($total > 0) {
				if ((int) $grafico_ordenado[$fecha]['sin_garantias'] > 0) {
					$grafico_ordenado[$fecha]['sin_garantias'] = $grafico_ordenado[$fecha]['sin_garantias'] + $total;
				} else {
					$grafico_ordenado[$fecha]['sin_garantias'] = $total;

				}
			}
		}
		return array_values($grafico_ordenado);
	}

	#--- FUNCION QUE TOMA UN ARRAY DE OBJETOS E INVIERTE EL ORDEN --- 
	public static function arrayRever($arreglo)
	{
		// SE CREA UN NUEVO ARRAY
		$nuevo = array();
		// RECORREMOS EL ARRAY PASADO COMO PARAMETRO EMPEZANDO DEL FINAL HASTA EL PRINCIPIO
		for ($i = count($arreglo) - 1; $i >= 0; $i--) {
			// CREAMOS UN OBJETO GENERICO AL QUE DESPUES PODEMOS AGREGARLE PROPIEDADES.
			$n = new \stdClass;
			// EN ESTE CASO LE AGREGAMOS CADA OBJETO DEL ARRAY PASADO COMO PARAMETRO.
			$n = $arreglo[$i];
			// LUEGO PUSHEAMOS AL ARRAY NUEVO CON LOS VALORES DEL OBJETO GENERICO.
			array_push($nuevo, $n);
		}
		return $nuevo;
	}

	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 = [];


		/* 07/10/2021: para poder llamarlo desde led */
		$es_led = false;
		$id = Request::input('contraparte') ?? null;
		if (!$cuit) {
			$qcontrap = DB::selectOne('EXEC dbo.LN_contrapartes_ ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?', array('select', $id, null, null, null, null, null, null, null, null, null, null, null, null, null));
			$cuit = $qcontrap->identificacion ?? null;
			$json = false;
			$es_led = true;
		}

		if ($mostrar_todos_los_juicios) {
			$demandados = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'D2', $cuit, 60, 1));
			$actor = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'A2', $cuit, 60, 1));
		} else {
			$demandados = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'D2', $cuit, 60, 1, $cantidad));
			$actor = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'A2', $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 (strlen($rs) < 3) {
					continue;
				}
				if (!($key == $count_sinonimo)) {
					$razon_social_completa .= $rs . 'OR';
				} else {
					$razon_social_completa .= $rs;
				}
			}

			//$razon_social_legales = Misc::diccionarioSinonimos($razon_social);
			$razon_social_legales = Misc::diccionarioSinonimos2020($razon_social);

			//print_r('COMPLETA: ' . $razon_social_completa . '---');
			//print_r('legales: ' . $razon_social_legales  . '---');

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

		//print_r("razon_social: "); 
		//var_dump($razon_social);   
		//AGB
		/*
						  print_r("razon_social_legales: "); 
						  var_dump($razon_social_legales);
						  print_r("razon_social_completa: "); 
						  var_dump($razon_social_completa);
						  
					*/
		/*
							 print_r("sinonimos: "); 
							 var_dump($sinonimos); 
							 print_r("razon social: "); 
							 var_dump($razon_social); 
							 print_r("razon_social_legales: "); 
							 var_dump($razon_social_legales); 
							 print_r("razon_social_completa: "); 
					   */

		//var_dump($razon_social_completa); die(); 
		if (strlen($razon_social_completa) >= 3 && $mostrar_homonimos) {
			$razon_social_completa = (Misc::parche_cla($razon_social_completa));
			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)
				//DICIEMBRE 2020 CAMBIAMOS POR RAZON SOCIAL PORQUE NO SALEN LOS HOMÓNIMOS
				$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));
				//$demandado_homonimo = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social,'D', $cantidad));
				//$actores_homonimos  = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social,'A', $cantidad));

			} else {

				/*print_r($razon_social);
										   print_r($cantidad);*/

				//$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)
				//DICIEMBRE 2020 CAMBIAMOS POR RAZON SOCIAL PORQUE NO SALEN LOS HOMÓNIMOS
				$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));
				//$demandado_homonimo = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social,'D', $cantidad));
				//$actores_homonimos  = SQLConnection::backendStoreProcedure('obtener_juicios_homonimos', array($razon_social,'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();
		$vista = \View::make('informes/legales')->with(compact('actor', 'pedidos_quiebra', 'concursos_quiebras', 'otros_juicios_comerciales', 'remates', 'actores_homonimos', 'p_fisica', 'json', '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 obtenerResultadoPadron($input_autocomplete = "", $tipo_persona = '', )
	{
		$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 verificarMonitoreosEnMongo()
	{
		$cuit = $_GET['cuit'];
		self::verificarMongo($cuit);
		return "se cargó correctamente";
	}

	public function obtenerBrief($json = true, $graf_pdf_financiero = '', $graf_pdf_empleados = '', $graf_pdf_cheques = '', $graf_pdf_score = '', $graf_pdf_comex = '', $incluye_balance = 1, $cliente_login = 0)
	{
		//--  ARRAY PARA GUARDAR LOS DATOS EN LOS CUALES SE GENERA ALGUN TIPO DE ERROR  --//
		//echo("Rs: ".$_POST['razon_social'].' Idp: '.$_POST['idp'].' Cuit: '.$_POST['cuit']); die();
		ini_set('display_errors', '1');
		ini_set('display_startup_errors', '1');
		error_reporting(E_ALL);
		$partes_del_informe = '';
		try {
			$cuit = Request::input("cuit");
			$user_id = Session::get('usuario')->user_id;
			$razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona;
			// $partes_del_informe .= "datos_usuario -> Cuit: ".$cuit." - User Id: ".$user_id.'<br>';
			$partes_del_informe .= "<b>DATOS DE USUARIO<br>Cuit: " . $cuit . " - User Id: " . $user_id . '</b><br><br>';

			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++;
				}
			}
			/* Fin 08/10/2020 */

			/* 1 es lo que se toma por default, si está en 1, vemos si tenemos algo distinto en la sesion */
			if ($incluye_balance == 1) {
				$incluye_balance = session::get('incluye_balance') ?? 1;
			}


			//var_dump($incluye_balance); die(); 
			/* vemos si tenemos algo distinto en la sesion */
			if ($cliente_login == 0) {
				$cliente_login = Session::get('cliente_login') ?? Session::get('usuario')->cliente['client_id'];
			}
			$idp = Request::input('idp');
			$cuit = Request::input("cuit");
			$imagen_fidelitas = Misc::obtenerImagenFidelitas();
			$afip_respuesta = [];

			if (ENV('SERVICIOS_AFIP') == true) {
				$afip_respuesta = AFIPController::obtenerPadron_test($cuit); //--> LINEA CON MEJORAS, PARA VOLVER AL ESTADO ANTERIOR DESCOMENTAR LA DE ABAJO Y COMENTAR ESTA.
				//$afip_respuesta = AFIPController::obtenerPadron($cuit); //--> LINEA ORIGINAL
				// $partes_del_informe .= 'obtenerPadron_test: si <br>';
				$partes_del_informe .= '<ul><li>Consulta AFIP --> Si </li>';
			} else {
				// $partes_del_informe .= 'obtenerPadron_test: no <br>';
				$partes_del_informe .= '<ul><li>Consulta AFIP --> No </li>';
			}

			// 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');
				// $partes_del_informe .= 'actualizarDatosConPadron: si <br>';
				$partes_del_informe .= '<li>Persona física --> Si </li>';
			} else {
				// $partes_del_informe .= 'actualizarDatosConPadron: no <br>';
				$partes_del_informe .= '<li>Persona física --> No </li>';
			}

			// 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);
			// $partes_del_informe .= 'obtenerBancos: si <br>';
			if ($obtener_bancos != []) {
				$partes_del_informe .= '<li>Cálculo Bancos --> Si, registra ' . strval(count($obtener_bancos)) . ' resultados de la consulta</li>';
			} else {
				$partes_del_informe .= '<li>Cálculo Bancos --> No, registra ' . strval(count($obtener_bancos)) . ' resultados de la consulta</li>';
			}

			$situacion_1 = Misc::ameritaPorSituacionUno($obtener_bancos);
			// $partes_del_informe .= 'ameritaPorSituacionUno: si <br>';
			if ($obtener_bancos != []) {
				$partes_del_informe .= '<li>Amerita Score --> Si</li>';
			} else {
				$partes_del_informe .= '<li>Amerita Score --> No</li>';
			}


			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);
			// $partes_del_informe .= 'tiene_pdf: si <br>';
			if (file_exists($link_pdf)) {
				$partes_del_informe .= '<li>Pdf AFIP --> Existe </li>';
			} else {
				$partes_del_informe .= '<li>Pdf AFIP --> No existe </li>';
			}

			$card_score = [];
			$card_bancos = [];
			$card_cheques = [];
			$card_domicilios = [];
			$card_empleados = [];
			$card_comex = [];
			$card_personas_relacionadas = [];
			$card_sociedades_relacionadas = [];
			$partes_del_informe .= '<li>cards_varios --> si </li>';

			//$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;
			$partes_del_informe .= '<li>config_panel --> si </li>';

			$comex_impo = SQLConnection::obtenerComex($cuit);

			// $partes_del_informe .= 'obtenerComex: si <br>';
			if ($comex_impo != []) {
				$partes_del_informe .= '<li>Servicio de ComEx --> Si tiene</li>';
			} else {
				$partes_del_informe .= '<li>Servicio de ComEx --> No tiene</li>';
			}

			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 = '--';
					}
				}
			}
			$partes_del_informe .= '<li>card_6_empleados --> si </li>';
			/* 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, $incluye_balance), true);
				// $partes_del_informe .= 'obtenerServicioScore: si <br>';
				$partes_del_informe .= '<li>obtenerServicioScore --> si </li>';

			} else {
				$partes_del_informe .= '<li>obtenerServicioScore --> no </li>';
			}

			$resp_constancia = $respuesta_score['resp_constancia'] ?? '';

			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);
				$partes_del_informe .= '<li>obtenerDefuncion --> Si </li>';
			} else {
				$partes_del_informe .= '<li>obtenerDefuncion --> no </li>';
			}

			if (env('SERVICIOS_AFIP') == FALSE) {
				$debug_score .= "<br>---------------<br><strong>RESPUESTA AFIP</strong><br>---------------<br><strong>EL LLAMADO A AFIP SE ENCUENTRA DESHABILITADO</strong><br>";
			}

			// En el detalle del score, se muestra la respuesta de AFIP
			if (ENV('SERVICIOS_AFIP') == true) {
				$afip_ordenado = '';
				if (is_array($afip_respuesta)) {
					foreach ($afip_respuesta as $afip) {
						$afip_decode[] = json_decode($afip, true);
					}
					$afip_respuesta = $afip_decode;
				}

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

			$debug_score .= "<br>---------------<br><strong>RESPUESTA CONSTANCIA CUIT</strong><br>---------------<br><br>";
			if (!empty($resp_constancia)) {
				$debug_score .= "RESPUESTA : " . $resp_constancia['response'] . "<br>ERROR:" . $resp_constancia['constancia_error'];
			}
			$partes_del_informe .= '<li>debug_score --> si </li>';

			if (!$p_fisica) {
				$datos_card_score = SQLConnection::obtenerCardScore($cuit);
			} else {
				$datos_card_score = SQLConnection::obtenerCardScorePF($cuit);
			}
			$partes_del_informe .= '<li>obtenerCardScorePF --> si </li>';
			/*CALCULO SCORE fin*/
			/*card 1 inicio */
			$vitalidad = 1;
			$motivo_vitalidad = 1;
			// CALCULO DE EDAD
			$menor_de_edad = 0;
			if ($p_fisica) {
				self::$edad = Misc::obtenerEdadPersonaFisica($cuit);
				//--
				if (self::$edad < 18 && self::$edad !== NULL) {
					$menor_de_edad = 1;
				}
			}
			//
			/*
										  var_dump("EDAD");
										  var_dump(self::$edad);
										  var_dump($menor_de_edad);
										  die(); 
							  */
			$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;
				}
			}

			// CALCULO DE ARGENTINO: Si no es argentino no se calcula el Score
			$nacionalidad = Misc::nacionalidad($cuit);
			if ($nacionalidad !== 'AR') {
				$menor_de_edad = 0;
				$score = 0;
			}
			//

			$card_score['score'] = $score;
			$card_score['datos'] = $datos_card_score;

			// $partes_del_informe .= 'card_1: si <br>';
			$partes_del_informe .= '<li>Card Score --> Si </li>';
			/*card 1 fin */

			/*card 2 inicio */
			$garantias = SQLConnection::obtenerGarantiasBrief($cuit);
			$financiero = SQLConnection::obtenerFinancieroBrief($cuit);
			$card_bancos = SQLConnection::obtenerCardBancos($cuit);

			// $partes_del_informe .= 'card_2: si <br>';
			$partes_del_informe .= '<li>Card Financiero --> Si </li>';
			/*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);

			// $partes_del_informe .= 'card_3: si <br>';
			$partes_del_informe .= '<li>Card Cheques --> Si </li>';
			/* 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 (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 (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 (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 (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;

			// $partes_del_informe .= 'card_4: si <br>';
			$partes_del_informe .= '<li>Card Domicilio --> Si </li>';
			// card 4 domicilios fin

			//card 5 empleados inicio
			$card_empleados = SQLConnection::obtenerEmpleados($cuit);

			// $partes_del_informe .= 'card_5: si <br>';
			$partes_del_informe .= '<li>Card Empleados --> Si </li>';
			// 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;
					}
				}
			}
			// $partes_del_informe .= 'card_7: si <br>';
			$partes_del_informe .= '<li>Card Comex --> Si </li>';
			// card 7 empleados fin

			// card 8 empleados inicio
			$card_personas_relacionadas = SQLConnection::obtenerCardPersonasRelacionadas($cuit);
			// $partes_del_informe .= 'card_8: si <br>';
			$partes_del_informe .= '<li>Card Relacionadas --> Si </li>';
			// 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);

			// $partes_del_informe .= 'card_9: si <br>';
			$partes_del_informe .= '<li>Card Sociedades --> Si </li>';
			/* card 9 empleados fin*/

			/*card 10 Juicios*/
			//$razon_social       = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona;
			/*$razon_debug = $razon_social;
							  $razon_debug = explode(' ', $razon_debug);
							  $razon_debug = $razon_debug[0].' '.$razon_debug[1];*/
			//$razon_social_legales = Misc::diccionarioSinonimos($razon_social);
			$razon_social_legales = Misc::diccionarioSinonimos2020($razon_social);
			$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 = [];
			$card_juicios->remates = sizeof($card_juicios->remates);

			$resultado_nombres_ant = [];
			$razon_social_completa = '';

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

				$sinonimos = Misc::diccionarioSinonimosTest($resultado_nombres_ant);
				$count_sinonimo = count($sinonimos) - 1;

				foreach ($sinonimos as $key => $rs) {
					if (strlen($rs) < 3) {
						continue;
					}

					if (!($key == $count_sinonimo)) {
						$razon_social_completa .= $rs . 'OR';
					} else {
						$razon_social_completa .= $rs;
					}
				}

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

			$razon_social_legales = $razon_social_completa;
			$juicios_cantidades = new \stdClass();

			if (strlen($razon_social_legales) >= 4 && $razon_social_legales !== '"DE"') {
				$razon_social_legales = (Misc::parche_cla($razon_social_legales));
				try {
					$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;
				} catch (\Throwable $th) {
					/*$card_juicios->otros_juicios_comerciales = '-';
													 $card_juicios->concursos_quiebras        = '-';
													 $card_juicios->pedidos_quiebra           = '-';
													 $card_juicios->actor                     = '-';
													 $card_juicios->demandado_homonimo        = '-';
													 $card_juicios->actores_homonimos         = '-'; */

					$card_juicios->otros_juicios_comerciales = '0';
					$card_juicios->concursos_quiebras = '0';
					$card_juicios->pedidos_quiebra = '0';
					$card_juicios->actor = '0';
					$card_juicios->demandado_homonimo = '0';
					$card_juicios->actores_homonimos = '0';
				}
			} else {
				$card_juicios->otros_juicios_comerciales = '0';
				$card_juicios->concursos_quiebras = '0';
				$card_juicios->pedidos_quiebra = '0';
				$card_juicios->actor = '0';
				$card_juicios->demandado_homonimo = '0';
				$card_juicios->actores_homonimos = '0';
			}
			$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;
			// $partes_del_informe .= 'card_10: si <br>';
			$partes_del_informe .= '<li>Card Juicios --> Si </li>';

			//$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) {
					$nivel_socioeconomico = SQLConnection::backendStoreProcedure('obtener_nivel_socioeconomico_2021', 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_2021', 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 && ($client_id == '2254875' || $client_id == '745239806')) {
				$respuestaso = SQLConnection::backendStoreProcedure('obtener_sujeto_obligado', array($cuit), true);
				if (!empty($respuestaso)) {
					$sujeto_obligado = $respuestaso->sujeto_obligado;
				}
			}
			// 06/11/2020 : Card de Limite de Crédito - Dependencia Económica 
			$solicitado = new \stdClass;
			$otorgado = new \stdClass;
			$cme = new \stdClass;
			$otorgado_cme = new \stdClass;
			$multiple = new \stdClass;
			$multiples_montos = [];
			$depecon = new \stdClass;
			$depebal = new \stdClass;
			$fecha_bal = new \stdClass;
			$datos_dep = new \stdClass;
			$contraparte_lcs = 0;
			$contraparte_de = 0;
			//
			$contrapartes = SQLConnection::backendStoreProcedure('LN_cuit_contraparte_lcs', array($cliente_login, $cuit, 'LCS'), 'select');
			//

			if (!empty($contrapartes)) {
				$id = $contrapartes[0]->contraparte;
				$contraparte_lcs = $id;
				$solicitado = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'monto_solicitado'), 'selectOne');
				$otorgado = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'monto_otorgado'), 'selectOne');
				$cme = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'CAPACIDAD_ENDEUDAMIENTO'), 'selectOne');
				$otorgado_cme = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'MONTO_OTORGADO_CME'), 'selectOne');
				$multiple = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', NULL, NULL, NULL, $id, 'PORCENTAJE_CREDITO'), 'selectOne');
				if (!empty($multiple)) {
					$multiples_montos = SQLConnection::backendStoreProcedure('LN_limite_credito_multiple', array($id), 'select');
				}
			}
			$contrapartes = SQLConnection::backendStoreProcedure('LN_cuit_contraparte_lcs', array($cliente_login, $cuit, 'DE'), 'select');
			//
			if (!empty($contrapartes)) {
				$id = $contrapartes[0]->contraparte;
				$contraparte_de = $id;
				$depecon = SQLConnection::backendStoreProcedure('LN_dependencia_economica', array($id), 'selectOne');
				$depebal = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente_login, null, null, $id, 'DEP_ECON_BALANCE'), 'selectOne');
				$fecha_bal = SQLConnection::backendStoreProcedure('LN_dashboard_cliente', array('indicadores_contraparte', $cliente_login, null, null, $id, 'DEP_ECON_BALANCE_FECHA'), 'selectOne');
				$datos_dep = SQLConnection::backendStoreProcedure('LN_dependencia_economica_balance', array($id), 'selectOne');
			}
			//
			$cliente = (isset($cliente)) ? $cliente : $cliente_login;

			if (isset($_POST['iv_new']) && $_POST['iv_new'] == 1) {
				#$vista = view('iv/new/iv_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', 'solicitado', 'otorgado', 'cme', 'otorgado_cme', 'multiple', 'multiples_montos', 'depecon', 'depebal', 'fecha_bal', 'datos_dep', 'contraparte_de', 'contraparte_lcs', 'partes_del_informe'))->render();
				$vista = view('informe-comercial-nuevo/brief_nuevo')->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', 'solicitado', 'otorgado', 'cme', 'otorgado_cme', 'multiple', 'multiples_montos', 'depecon', 'depebal', 'fecha_bal', 'datos_dep', 'contraparte_de', 'contraparte_lcs', 'partes_del_informe'))->render();
			} else {
				$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', 'solicitado', 'otorgado', 'cme', 'otorgado_cme', 'multiple', 'multiples_montos', 'depecon', 'depebal', 'fecha_bal', 'datos_dep', 'contraparte_de', 'contraparte_lcs', 'partes_del_informe'))->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', 'partes_del_informe')
				),
				200,
				[],
				JSON_NUMERIC_CHECK
			);

		} catch (\Throwable $th) {
			// echo($th->getMessage().' '.$th->getLine()); die();
			SQLConnection::control_erores('MainController', 'obtenerBrief', $th->getMessage() . " L: " . $th->getLine() . " - DESARROLLO");
			//Misc::enviarMail_errores('claudio.arguello@fidelitas.com.ar','alejandro.burgol@fidelitas.com.ar',$partes_del_informe.$th->getMessage()." L: ".$th->getLine()." - DESARROLLO",$subject="Fidelitas");
			Misc::enviarMail_errores('rami.aleid@fidelitas.com.ar', 'alejandro.burgol@fidelitas.com.ar', $partes_del_informe . $th->getMessage() . " L: " . $th->getLine() . " - DESARROLLO", $subject = "Fidelitas");
			http_response_code(500);
			die();
		}
	}

	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 = '')
	{
		$meses = 24;
		$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     = '';  */
			$total_consumo = array();
			$total_temporal = array();
			$total_deposito = array();
			//$total_zona_franca = '';  
			$total_zonafranca = array();
			$total_totales = array();
			foreach ($comex_impo as $key => $impo) {
				//totales que se muestran en 'tabla_comex'
				/* $total_consumo[$key]    = $impo->consumo;
										$total_temporal[$key]   = $impo->temporal;
										$total_deposito[$key]   = $impo->deposito;
										$total_zonafranca[$key] = $impo->zonafranca;
										$total_totales[$key]    = $impo->total; */
				array_push($total_consumo, isset($impo->consumo) ? $impo->consumo : 0);
				array_push($total_temporal, isset($impo->temporal) ? $impo->temporal : 0);
				array_push($total_deposito, isset($impo->deposito) ? $impo->deposito : 0);
				//$total_zonafranca = $impo->zonafranca;
				array_push($total_zonafranca, isset($impo->zonafranca) ? $impo->zonafranca : 0);
				array_push($total_totales, isset($impo->total) ? $impo->total : 0);
				foreach ($comex_grafico_impo as $key => $graf) {
					if ($impo->anio == $graf->anio && $impo->mes == $graf->mes) {
						$number = $key;
						//if($key == 0){
						//}
						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'
			//echo(var_dump($total_totales));die();
			$total_consumo = array_sum($total_consumo);
			$total_temporal = array_sum($total_temporal);
			$total_deposito = array_sum($total_deposito);
			//$total_zonafranca = $total_zonafranca;
			$total_zonafranca = array_sum($total_zonafranca);
			$total_totales = array_sum($total_totales);

			//var_dump($total_temporal); die();
		}
		$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, 24);
		$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;
		}
		$esled = '';

		//----
		if (!isset($total_consumo)) {
			$total_consumo = NULL;
		}
		//---
		if (!isset($total_temporal)) {
			$total_temporal = NULL;
		}
		//---
		if (!isset($total_deposito)) {
			$total_deposito = NULL;
		}
		//---
		if (!isset($total_zonafranca)) {
			$total_zonafranca = NULL;
		}
		//---
		if (!isset($total_totales)) {
			$total_totales = NULL;
		}
		//$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','meses','esled'))->render();
		$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', 'meses', 'esled', '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')
				'info' => compact('comex_impo', 'comex_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 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);
	}

	// CONTABLES MULTIIDIOMA
	public function obtenerContablesMulti($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 = '', $idioma = '')
	{
		$imagen_fidelitas = Misc::obtenerImagenFidelitas();
		$cuit = Request::input('cuit');
		$ver_todos = 'N';
		$respuesta_activo = self::arrayRever(SQLConnection::obtenerActivoResumido($cuit, $ver_todos));
		$respuesta_pasivo = self::arrayRever(SQLConnection::obtenerPasivoResumido($cuit, $ver_todos));
		$respuesta_estado = self::arrayRever(SQLConnection::obtenerEstadodeResultadosResumido($cuit, $ver_todos));
		$indices_de_gestion = self::arrayRever(SQLConnection::obtenerIndicesDeGestionResumido($cuit, $ver_todos));
		$respuesta_activo_extendido = self::arrayRever(SQLConnection::obtenerActivo($cuit, $ver_todos));
		$respuesta_pasivo_extendido = self::arrayRever(SQLConnection::obtenerPasivo($cuit, $ver_todos));
		$respuesta_estado_extendido = self::arrayRever(SQLConnection::obtenerEstadodeResultados($cuit, $ver_todos));
		$indices_de_gestion_extendido = self::arrayRever(SQLConnection::obtenerIndicesDeGestion($cuit, $ver_todos));
		//
		$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';
		//----- NUEVA SECCION DE CONTABLES
		$hay_analisis = 0;
		$nuevo_extendido = null;
		// SE FORZA QUE LA VERSION DEL BALANCE SEA LA EXTENDIDA
		$productobalance = (object) ['version_balance' => 'F'];
		// VARIABLE QUE DETERMINA QUE LA LLAMADA ES DESDE PARA EL INFORME COMERCIAL
		$desde_infomre = true;
		//-----
		$balances_data = SQLConnection::backendStoreProcedure('LN_balances_data', array($cuit, null, null), 'select');
		//------
		foreach ($balances_data as $key => $datos_balance) {
			$nuevo_extendido['endeudamiento_total'][] = $datos_balance->endeudamiento_total;
			$nuevo_extendido['endeudamiento_corriente'][] = $datos_balance->endeudamiento_corriente;
			$nuevo_extendido['capital_corriente_sobre_activo'][] = $datos_balance->capital_corriente_sobre_activo;
			$nuevo_extendido['rotacion_pasivo_corriente'][] = $datos_balance->rotacion_pasivo_corriente;
			$nuevo_extendido['rotacion_activos'][] = $datos_balance->rotacion_activos;
			$nuevo_extendido['meses_deuda'][] = $datos_balance->meses_deuda;
			$nuevo_extendido['dias_deuda'][] = $datos_balance->dias_deuda;
			$nuevo_extendido['margen_operativo'][] = $datos_balance->margen_operativo;
			$nuevo_extendido['ebitda'][] = $datos_balance->ebitda;
			$nuevo_extendido['ebitda_ventas'][] = $datos_balance->ebitda_ventas;
			$nuevo_extendido['etitda_intereses'][] = $datos_balance->etitda_intereses;
			$nuevo_extendido['gastos_financieros_ventas'][] = $datos_balance->gastos_financieros_ventas;
			$nuevo_extendido['gastos_comerciales_ventas'][] = $datos_balance->gastos_comerciales_ventas;
			$nuevo_extendido['gastos_administracion_ventas'][] = $datos_balance->gastos_administracion_ventas;
			$nuevo_extendido['gastos_totales_ventas'][] = $datos_balance->gastos_totales_ventas;
			$nuevo_extendido['inversiones_bienes_uso'][] = $datos_balance->inversiones_bienes_uso;
			$nuevo_extendido['vida_restante_bienes_uso'][] = $datos_balance->vida_restante_bienes_uso;
			$nuevo_extendido['ebit'][] = $datos_balance->ebit;
			$nuevo_extendido['ebit_ventas'][] = $datos_balance->ebit_ventas;
		}
		// CONFIGURACIONES DEL IDIOMA
		if (!$json) {
			// EN CASO DE NO SER JSON
			if (empty($idioma)) {
				$idioma = (!is_null(Request::input('idioma-contables'))) ? Request::input('idioma-contables') : 'esp';
			}
		} else {
			$idioma = 'mix';
		}
		// FIN DE LA CONFIGURACION DE IDIOMA
		//-----
		$vista = \View::make('/informes/contables')->with(compact(
			'productobalance',
			'nuevo_extendido',
			'hay_analisis',
			'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',
			'desde_infomre',
			'ver_todos'
		))->render();
		//--- FIN DE NUEVA SECCION CONTABLES
		if (!$json) {
			return $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', 'idioma')
			)
			,
			200,
			[],
			JSON_NUMERIC_CHECK
		);
	}

}
