<?php

namespace App\Http\Controllers;

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

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

use App\Http\Controllers\MainController;
use App\Http\Controllers\AFIPController;
use App\Http\Controllers\RenaperController;

class ApiControllerIC extends Controller
{
    public static $MainController;
    /* BRIEF */
    /*----------------------------------------------------------------------------------------------------------------------*/
    /* Seccion Formales */
    /*----------------------------------------------------------------------------------------------------------------------*/
    public static function ICFormales($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }

        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $fisica_juridica = Misc::tipoPersona($cuit);
        $persona_fisica = ($fisica_juridica == 'F') ? true : false;

        $persona = new \stdClass();
        $sociedades = new \stdClass();
        $empleado_de = [];
        $empleados = [];
        $defuncion = [];
        $usuario = Session::get('usuario');
        $cliente = $usuario->cliente['client_id'];
        $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;
                }
            }
        }

        $datos = new \stdClass();
        if ($idioma == 'SPA') {
            $datos->formales = new \stdClass();
            $datos->formales->identificacion = $cuit;
            $datos->formales->razon_social = $razon_social;
            $datos->formales->tipo_persona = $fisica_juridica;
            $datos->formales->persona_fisica = new \stdClass();
            $datos->formales->persona_juridica = new \stdClass();
        } elseif ($idioma == 'ENG') {
            $datos->formaldata = new \stdClass();
            $datos->formaldata->taxid = $cuit;
            $datos->formaldata->legal_name = $razon_social;
            $datos->formaldata->legal_type = $fisica_juridica;
            $datos->formaldata->person = new \stdClass();
            $datos->formaldata->company = new \stdClass();
        }

        if ($fisica_juridica == 'F') {
            /* Persona Fisica */
            if ($idioma == 'SPA') {
                $datos->formales->persona_fisica->dni = $persona->cuerpo_clave ?? '';
                $datos->formales->persona_fisica->sexo = $persona->sexo ?? '';
                $datos->formales->persona_fisica->fecha_nacimiento = $persona->fecha_nacimiento ?? '';
                $datos->formales->persona_fisica->anio_nacimiento = $persona->anio_nacimiento ?? '';
                $datos->formales->persona_fisica->pais_nacimiento = $persona->pais_nacimiento ?? '';
                $datos->formales->persona_fisica->defuncion = new \stdClass();
            } elseif ($idioma == 'ENG') {
                $datos->formaldata->person->national_id = $persona->cuerpo_clave ?? '';
                $datos->formaldata->person->gender = $persona->sexo ?? '';
                ;
                $datos->formaldata->person->DOB = $persona->fecha_nacimiento ?? '';
                $datos->formaldata->person->YOB = $persona->anio_nacimiento ?? '';
                ;
                $datos->formaldata->person->country_birth = $persona->pais_nacimiento ?? '';
                $datos->formaldata->person->death_info = new \stdClass();
            }

            $edad = '';
            if (!empty($persona->fecha_nacimiento)) {
                $edad = Misc::calcularEdad($persona->fecha_nacimiento);
            }
            if ($edad) {
                if ($idioma == 'SPA') {
                    $datos->formales->persona_fisica->edad = empty($defuncion->fecha_deceso) ? ($edad ?? '') : '';
                } elseif ($idioma == 'ENG') {
                    $datos->formaldata->person->age = empty($defuncion->fecha_deceso) ? ($edad ?? '') : '';
                }
            }
            $employee_of = [];
            foreach ($empleado_de as $key => $value) {
                if ($idioma == 'ENG') {
                    $employee_of[$key] = (object) [];
                    $employee_of[$key]->employer_taxid = $value->cuit_empleador;
                    $employee_of[$key]->employer_name = $value->nombre_empleador;
                    $employee_of[$key]->period = $value->periodo;
                }
                unset($empleado_de[$key]->ultimo_periodo_procesado);
            }

            if ($idioma == 'SPA') {
                $datos->formales->persona_fisica->empleado_de = $empleado_de;
                //$datos->formales->persona_fisica->profesion         = $persona->profesion ?? '';
                $datos->formales->persona_fisica->estado_civil = $persona->estado_civil ?? '';

                $datos->formales->persona_fisica->defuncion->fuente = !empty($defuncion->fecha_deceso) ? ($defuncion->fuente ?? '') : '';
                $datos->formales->persona_fisica->defuncion->fecha_deceso = $defuncion->fecha_deceso ?? '';
                $datos->formales->persona_fisica->defuncion->comentario = !empty($defuncion->fecha_deceso) ? 'Se ha detectado una persona con mismo nombre y documento informada como fallecida en fecha ' . $defuncion->fecha_deceso . ' (Fuente AFIP). Recomendamos verificar la existencia de homónimos o posibles errores en la fuente de datos.' : '';
            } elseif ($idioma == 'ENG') {
                $datos->formaldata->person->employee_of = $employee_of;
                //$datos->formaldata->person->profession          = $persona->profesion ?? '';
                $datos->formaldata->person->marital_status = $persona->estado_civil ?? '';

                $datos->formaldata->person->death_info->source = !empty($defuncion->fecha_deceso) ? ($defuncion->fuente ?? '') : '';
                $datos->formaldata->person->death_info->DOD = $defuncion->fecha_deceso ?? '';

                $datos->formaldata->person->death_info->comment = !empty($defuncion->fecha_deceso) ? 'We have detected a person with the same name and document reported as deceased on date ' . $defuncion->fecha_deceso . '  (Font AFIP). We recommend verifying the existence of homonyms or possible errors in the data source.' : '';
            }

        } else {

            /* Persona Juridica */

            if (isset($empleados->total)) {
                if ($idioma == 'SPA') {
                    $empleados->total_aproximado_empleados = (int) $empleados->total;
                } elseif ($idioma == 'ENG') {
                    $empleados->approx_total_employees = (int) $empleados->total;
                }
                unset($empleados->cantidad_mujeres);
                unset($empleados->cantidad_hombres);
                unset($empleados->total);
                unset($empleados->fecha);
            }
            if ($idioma == 'SPA') {
                $datos->formales->persona_juridica->empleados = $empleados;
            } elseif ($idioma == 'ENG') {
                $datos->formaldata->company->employees = $empleados;
            }

            $nombres_anteriores_1 = [];

            if ($idioma == 'SPA') {
                $datos->formales->persona_juridica->forma_juridica = $sociedades->tipo_sociedad ?? '';
                $datos->formales->persona_juridica->ramo = $sociedades->ramo ?? '';
                $datos->formales->persona_juridica->subramo = $sociedades->subramo ?? '';
                $datos->formales->persona_juridica->capital = (int) $sociedades->capital ?? '';
                if (isset($inscripciones->fecha_inscripcion) && $inscripciones->fecha_inscripcion != '01/01/1901' && $inscripciones->fecha_inscripcion != '') {
                    $datos->formales->persona_juridica->fecha_inscripcion = $inscripciones->fecha_inscripcion ?? '';
                } else {
                    $datos->formales->persona_juridica->fecha_inscripcion = '';
                }

                if (isset($inscripciones->fecha_contrato_social) && $inscripciones->fecha_contrato_social != '' && $inscripciones->fecha_contrato_social != '01/01/1901') {
                    $datos->formales->persona_juridica->fecha_contrato_social = $inscripciones->fecha_contrato_social ?? '';
                } else {
                    $datos->formales->persona_juridica->fecha_contrato_social = '';
                }
		//
		if(!$persona_fisica) {
                   foreach ($nombres_anteriores as $key => $value) {
                       $nombres_anteriores_1[$key] = new \StdClass();
                       if ($idioma == 'SPA') {
                           $nombres_anteriores_1[$key]->nombre = $value->nombre;
                       } elseif ($idioma == 'ENG') {
                           $nombres_anteriores_1[$key]->name = $value->nombre;
                       }
                    }
                }
		//
                $datos->formales->persona_juridica->nombres_anteriores = $nombres_anteriores_1;

            } elseif ($idioma == 'ENG') {

                $datos->formaldata->company->legal_form = $sociedades->tipo_sociedad ?? '';
                $datos->formaldata->company->business_line = $sociedades->ramo ?? '';
                $datos->formaldata->company->business_subline = $sociedades->subramo ?? '';
                $datos->formaldata->company->capital = (int) $sociedades->capital ?? '';

                if (isset($inscripciones->fecha_inscripcion) && $inscripciones->fecha_inscripcion != '01/01/1901' && $inscripciones->fecha_inscripcion != '') {
                    $datos->formaldata->company->registration_date = $inscripciones->fecha_inscripcion ?? '';
                } else {
                    $datos->formaldata->company->registration_date = '';
                }
                if (isset($inscripciones->fecha_contrato_social) && $inscripciones->fecha_contrato_social != '' && $inscripciones->fecha_contrato_social != '01/01/1901') {
                    $datos->formaldata->company->social_contract_date = $inscripciones->fecha_inscripcion ?? '';
                } else {
                    $datos->formaldata->company->fecha_contrato_social = '';
                }
                foreach ($nombres_anteriores as $key => $value) {
                    $nombres_anteriores_1[$key] = new \StdClass();
                    $nombres_anteriores_1[$key]->name = $value->nombre;
                }
                $datos->formaldata->company->previous_names = $nombres_anteriores_1;
            }
        }

        /* Persona Física y Jurídica */
        $claes = [];
        $claes_info = SQLConnection::obtenerClae($cuit);
        if ($idioma == 'SPA') {
            foreach ($claes_info as $key => $value) {
                $claes[$key] = new \stdClass();
                $claes[$key]->cod_clae = $value->cod_clae ?? '';
                $claes[$key]->descripcion = $value->descripcion ?? '';
            }
            $datos->formales->actividad = $claes;
        } elseif ($idioma == 'ENG') {
            foreach ($claes_info as $key => $value) {
                $claes[$key] = new \stdClass();
                $claes[$key]->clae_code = $value->cod_clae ?? '';
                $claes[$key]->description = $value->descripcion ?? '';
            }
            $datos->formaldata->economic_activity = $claes;
        }

        $telefonos = [];
        $telefonos = SQLConnection::backendStoreProcedure('obtener_telefono', array($id_padron));
        $telefono = [];
        if ($idioma == 'SPA') {
            foreach ($telefonos as $key => $value) {
                $telefono[] = new \StdClass();
                $telefono[$key]->numero_telefono = $value->telefono ?? '';
                $telefono[$key]->tipo = $value->tipo ?? '';
            }
            $datos->formales->telefonos = $telefono;
        } elseif ($idioma == 'ENG') {
            foreach ($telefonos as $key => $value) {
                $telefono[] = new \StdClass();
                $telefono[$key]->phone_number = $value->telefono ?? '';
                $telefono[$key]->type = $value->tipo ?? '';
            }
            $datos->formaldata->phone = $telefono;
        }

        $domicilios_formales = SQLConnection::obtenerDomicilios($cuit);
        $domicilio = [];
        $domicilio_fiscal = [];
        $domicilio_legal = [];
        $otros_domicilios = [];
        $otros = 0;
        foreach ($domicilios_formales as $formal) {
            /* Domicilio Legal */
            if (strpos($formal->tipo_domicilio, 'L') !== false) {
                if (!empty($domicilio_legal)) {
                    if (strpos($formal->tipo_domicilio, 'D') === false && strpos($formal->tipo_domicilio, 'E') === false && strpos($formal->tipo_domicilio, 'F') === false) {
                        $otros_domicilios[$otros] = new \StdClass();
                        if ($idioma == 'SPA') {
                            $otros_domicilios[$otros]->domicilio = $formal->domicilio ?? '';
                            $otros_domicilios[$otros]->codPos = $formal->codpos ?? '';
                            $otros_domicilios[$otros]->Localidad = $formal->loc_nombre ?? '';
                            $otros_domicilios[$otros]->Provincia = $formal->prv_nombre ?? '';
                            $otros_domicilios[$otros]->Pais = $formal->pai_nombre ?? '';
                        } elseif ($idioma == 'ENG') {
                            $otros_domicilios[$otros]->address = $formal->domicilio ?? '';
                            $otros_domicilios[$otros]->zip_code = $formal->codpos ?? '';
                            $otros_domicilios[$otros]->city = $formal->loc_nombre ?? '';
                            $otros_domicilios[$otros]->state = $formal->prv_nombre ?? '';
                            $otros_domicilios[$otros]->country = $formal->pai_nombre ?? '';
                        }

                        $otros += 1;
                    }
                } else {
                    $domicilio_legal[0] = new \StdClass();
                    if ($idioma == 'SPA') {
                        $domicilio_legal[0]->domicilio = $formal->domicilio ?? '';
                        $domicilio_legal[0]->CodPos = $formal->codpos ?? '';
                        $domicilio_legal[0]->Localidad = $formal->loc_nombre ?? '';
                        $domicilio_legal[0]->Provincia = $formal->prv_nombre ?? '';
                        $domicilio_legal[0]->Pais = $formal->pai_nombre ?? '';
                    } elseif ($idioma == 'ENG') {
                        $domicilio_legal[0]->address = $formal->domicilio ?? '';
                        $domicilio_legal[0]->zip_code = $formal->codpos ?? '';
                        $domicilio_legal[0]->city = $formal->loc_nombre ?? '';
                        $domicilio_legal[0]->state = $formal->prv_nombre ?? '';
                        $domicilio_legal[0]->country = $formal->pai_nombre ?? '';
                    }

                }
            }
            /* Domicilio Fiscal */
            if (strpos($formal->tipo_domicilio, 'F') !== false) {
                if (!empty($domicilio_fiscal)) {
                    if (strpos($formal->tipo_domicilio, 'D') === false && strpos($formal->tipo_domicilio, 'E') === false && strpos($formal->tipo_domicilio, 'L') === false) {
                        if ($idioma == 'SPA') {
                            $otros_domicilios[$otros]->domicilio = $formal->domicilio ?? '';
                            $otros_domicilios[$otros]->codPos = $formal->codpos ?? '';
                            $otros_domicilios[$otros]->Localidad = $formal->loc_nombre ?? '';
                            $otros_domicilios[$otros]->Provincia = $formal->prv_nombre ?? '';
                            $otros_domicilios[$otros]->Pais = $formal->pai_nombre ?? '';
                        } elseif ($idioma == 'ENG') {
                            $otros_domicilios[$otros]->address = $formal->domicilio ?? '';
                            $otros_domicilios[$otros]->zip_code = $formal->codpos ?? '';
                            $otros_domicilios[$otros]->city = $formal->loc_nombre ?? '';
                            $otros_domicilios[$otros]->state = $formal->prv_nombre ?? '';
                            $otros_domicilios[$otros]->country = $formal->pai_nombre ?? '';
                        }
                        $otros += 1;
                    }
                } else {
                    $domicilio_fiscal[0] = new \StdClass();
                    if ($idioma == 'SPA') {
                        $domicilio_fiscal[0]->domicilio = $formal->domicilio ?? '';
                        $domicilio_fiscal[0]->codPos = $formal->codpos ?? '';
                        $domicilio_fiscal[0]->localidad = $formal->loc_nombre ?? '';
                        $domicilio_fiscal[0]->provincia = $formal->prv_nombre ?? '';
                        $domicilio_fiscal[0]->pais = $formal->pai_nombre ?? '';
                    } elseif ($idioma == 'ENG') {
                        $domicilio_fiscal[0]->address = $formal->domicilio ?? '';
                        $domicilio_fiscal[0]->zip_code = $formal->codpos ?? '';
                        $domicilio_fiscal[0]->city = $formal->loc_nombre ?? '';
                        $domicilio_fiscal[0]->state = $formal->prv_nombre ?? '';
                        $domicilio_fiscal[0]->country = $formal->pai_nombre ?? '';
                    }
                }
            }

            /* Domicilio Principal */
            if (strpos($formal->tipo_domicilio, 'D') !== false || strpos($formal->tipo_domicilio, 'E') !== false) {
                if (!empty($domicilio)) {
                    if (strpos($formal->tipo_domicilio, 'F') === false && strpos($formal->tipo_domicilio, 'L') === false) {
                        $otros_domicilios[$otros] = new \StdClass();
                        if ($idioma == 'SPA') {
                            $otros_domicilios[$otros]->domicilio = $formal->domicilio ?? '';
                            $otros_domicilios[$otros]->codPos = $formal->codpos ?? '';
                            $otros_domicilios[$otros]->localidad = $formal->loc_nombre ?? '';
                            $otros_domicilios[$otros]->provincia = $formal->prv_nombre ?? '';
                            $otros_domicilios[$otros]->pais = $formal->pai_nombre ?? '';
                        } elseif ($idioma == 'ENG') {
                            $otros_domicilios[$otros]->address = $formal->domicilio ?? '';
                            $otros_domicilios[$otros]->zip_code = $formal->codpos ?? '';
                            $otros_domicilios[$otros]->city = $formal->loc_nombre ?? '';
                            $otros_domicilios[$otros]->state = $formal->prv_nombre ?? '';
                            $otros_domicilios[$otros]->country = $formal->pai_nombre ?? '';
                        }
                        $otros += 1;
                    }
                } else {
                    $domicilio[0] = new \StdClass();
                    if ($idioma == 'SPA') {
                        $domicilio[0]->domicilio = $formal->domicilio ?? '';
                        $domicilio[0]->codPos = $formal->codpos ?? '';
                        $domicilio[0]->localidad = $formal->loc_nombre ?? '';
                        $domicilio[0]->provincia = $formal->prv_nombre ?? '';
                        $domicilio[0]->pais = $formal->pai_nombre ?? '';
                    } elseif ($idioma == 'ENG') {
                        $domicilio[0]->address = $formal->domicilio ?? '';
                        $domicilio[0]->zip_code = $formal->codpos ?? '';
                        $domicilio[0]->city = $formal->loc_nombre ?? '';
                        $domicilio[0]->state = $formal->prv_nombre ?? '';
                        $domicilio[0]->country = $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) {
                $otros_domicilios[$otros] = new \StdClass();
                if ($idioma == 'SPA') {
                    $otros_domicilios[$otros]->domicilio = $formal->domicilio ?? '';
                    $otros_domicilios[$otros]->codPos = $formal->codpos ?? '';
                    $otros_domicilios[$otros]->Localidad = $formal->loc_nombre ?? '';
                    $otros_domicilios[$otros]->Provincia = $formal->prv_nombre ?? '';
                    $otros_domicilios[$otros]->Pais = $formal->pai_nombre ?? '';
                } elseif ($idioma == 'ENG') {
                    $otros_domicilios[$otros]->address = $formal->domicilio ?? '';
                    $otros_domicilios[$otros]->zip_code = $formal->codpos ?? '';
                    $otros_domicilios[$otros]->city = $formal->loc_nombre ?? '';
                    $otros_domicilios[$otros]->state = $formal->prv_nombre ?? '';
                    $otros_domicilios[$otros]->country = $formal->pai_nombre ?? '';
                }
                $otros += 1;
            }
        }

        if (empty($domicilio)) {
            $domicilio[0] = $domicilio_fiscal[0];
        }

        if ($idioma == 'SPA') {
            $datos->formales->domicilio_fiscal = $domicilio_fiscal;
            $datos->formales->domicilio_legal = $domicilio_legal;
            $datos->formales->domicilio = $domicilio;
            $datos->formales->otros_domicilios = $otros_domicilios;
        } elseif ($idioma == 'ENG') {
            $datos->formaldata->fiscal_address = $domicilio_fiscal;
            $datos->formaldata->legal_address = $domicilio_legal;
            $datos->formaldata->address = $domicilio;
            $datos->formaldata->other_address = $otros_domicilios;
        }

        return json_encode($datos);
    }

    /*----------------------------------------------------------------------------------------------------------------------*/
    /* Seccion Balances */
    /*----------------------------------------------------------------------------------------------------------------------*/

    public static function ICBalances($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }

        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        $balances = [];
        $balances = SQLConnection::backendStoreProcedure('api_obtener_balances', array($cuit));
        foreach ($balances as $key => $value) {
            unset($balances[$key]->cuit);
            unset($balances[$key]->id_balance);
            $balances[$key]->bal_manifestacion = ($value->bal_manifestacion == 'M') ? 'Manifestacion de bienes' : 'Balance';
        }

        // FALTA TARDUCIR
        // FALTA VER SI SE MUESTRAN TODOS LOS CAMPOS Y CON LOS NOMBRES QUE VIENEN

        if ($idioma == 'SPA') {
            $persona->balances = [];
            $persona->balances = $balances;
        } elseif ($idioma == 'ENG') {
            // FALTA TRADUCIR
            $persona->balance_sheets = [];
            $persona->balance_sheets = $balances;
        }

        return json_encode($persona);
    }

    /*----------------------------------------------------------------------------------------------------------------------*/
    /* Seccion Malla Societaria */
    /*----------------------------------------------------------------------------------------------------------------------*/

    public static function ICMapaRelaciones($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {

        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
            $persona->cometario = 'Las vinculaciones en el gráfico pueden no ser las últimas. Verifique posibles cambios recientes en los Boletines Oficiales.';
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
            // FALTA TRADUCIR
            $persona->cometario = 'Las vinculaciones en el gráfico pueden no ser las últimas. Verifique posibles cambios recientes en los Boletines Oficiales.';

        }
        $fisica_juridica = Misc::tipoPersona($cuit);
        $malla_societaria = [];
        $malla_societaria = SQLConnection::grafoSociedades($cuit, $fisica_juridica);

        // Ordenamos por seccion
        $aux = [];
        foreach ($malla_societaria as $key => $row) {
            $aux[$key] = $row->seccion;
        }
        array_multisort($aux, SORT_ASC, $malla_societaria);

        $malla = [];
        foreach ($malla_societaria as $key => $row) {
            $malla[$key] = new \StdClass();
            if ($idioma == 'SPA') {
                $malla[$key]->CentroGrafo = $row->CentroGrafo;
                $malla[$key]->IDCentroGrafo = $row->IDCentroGrafo;
                $malla[$key]->seccion = $row->seccion;
                $malla[$key]->idNodoGrafo = $row->idNodoGrafo;
                $malla[$key]->cuit = $row->cuit;
                $malla[$key]->razon_social = $row->nombre_persona;
                $malla[$key]->score = $row->score ?? '';
                $malla[$key]->score_color = $row->score_color ?? '';
            } elseif ($idioma == 'ENG') {
                $malla[$key]->CentroGrafo = $row->CentroGrafo;
                $malla[$key]->IDCentroGrafo = $row->IDCentroGrafo;
                $malla[$key]->section = $row->seccion;
                $malla[$key]->idNodoGrafo = $row->idNodoGrafo;
                $malla[$key]->taxid = $row->cuit;
                $malla[$key]->legal_name = $row->nombre_persona;
                $malla[$key]->score = $row->score ?? '';
                $malla[$key]->score_color = $row->score_color ?? '';
            }
        }

        if ($idioma == 'SPA') {
            $persona->mapa_relaciones = [];
            $persona->mapa_relaciones = $malla;
        } elseif ($idioma == 'ENG') {
            $persona->relationship_map = [];
            $persona->relationship_map = $malla;
        }

        return json_encode($persona);
    }

    /* Seccion Relaciones */
    public static function ICRelaciones($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        $participaciones = [];

        if ($idioma == 'SPA') {
            $persona->relaciones = new \stdClass();
            $persona->relaciones->accionistas = [];
            $persona->relaciones->accionista_de = [];
            $persona->relaciones->socio_director_de = [];
            $persona->relaciones->socios_directores = [];
            $persona->relaciones->participaciones = [];
            $persona->relaciones->vinculaciones = [];
            $persona->relaciones->vinculaciones_indirectas = [];
            $persona->relaciones->nombres_anteriores = new \stdClass();
        } elseif ($idioma == 'ENG') {
            $persona->corporate_realationships = new \stdClass();
            $persona->corporate_realationships->shareholders = [];
            $persona->corporate_realationships->shareholder_of = [];
            $persona->corporate_realationships->partner_of = [];
            $persona->corporate_realationships->partners = [];
            $persona->corporate_realationships->shareholding_activity = [];
            $persona->corporate_realationships->linkages = [];
            $persona->corporate_realationships->indirect_linkages = [];
            $persona->corporate_realationships->previous_names = new \stdClass();

        }

        $accionista_de = [];
        $accionistas = [];
        $nombres_anteriores = [];
        $nombres_anteriores_1 = [];
        $fisica_juridica = Misc::tipoPersona($cuit);
        if ($fisica_juridica == 'F') {
            $accionista_de = SQLConnection::obtenerAccionistasDe($cuit);
        } else {
            $nombres_anteriores = SQLConnection::backendCambiosNombres($cuit);
            foreach ($nombres_anteriores as $key => $value) {
                $nombres_anteriores_1[$key] = new \StdClass();
                if ($idioma == 'SPA') {
                    $nombres_anteriores_1[$key]->nombre = $value->nombre;
                } elseif ($idioma == 'ENG') {
                    $nombres_anteriores_1[$key]->name = $value->nombre;
                }
            }
            $accionistas = SQLConnection::obtenerAccionistasNew($cuit);
        }

        $edictos_homonimos = [];
        $edictos = SQLConnection::obtenerEdictos($cuit);
        $socios_directores = [];
        $socios_directores = SQLConnection::obtenerSociosDirectores($cuit, $fisica_juridica);
        $participaciones = [];
        $participaciones = SQLConnection::obtenerParticipacionSociosDirectores($cuit);
        $vinculaciones = [];
        $vinculaciones = SQLConnection::obtenerVinculaciones($cuit);
        $vinculaciones_indirectas = [];
        $vinculaciones_indirectas = SQLConnection::obtenerVinculacionesIndirectas($cuit);

        if ($idioma == 'SPA') {
            foreach ($participaciones as $key => $value) {
                $persona->relaciones->participaciones[$key] = new \stdClass();
                $persona->relaciones->participaciones[$key]->razon_social_sociedad = $value->nombre_sociedad ?? '';
                $persona->relaciones->participaciones[$key]->cuit_sociedad = $value->cuit_sociedad ?? '';
                $persona->relaciones->participaciones[$key]->cuit_socio = $value->cuit_socio ?? '';
                $persona->relaciones->participaciones[$key]->nombre_socio = $value->nombre_socio ?? '';
                $persona->relaciones->participaciones[$key]->cargo = $value->cargo ?? '';
            }
            if ($fisica_juridica == 'F') {
                foreach ($socios_directores as $key => $value) {
                    $persona->relaciones->socio_director_de[$key] = new \stdClass();
                    $persona->relaciones->socio_director_de[$key]->identificador = $value->identificador ?? 'C.U.I.T';
                    $persona->relaciones->socio_director_de[$key]->identificacion = $value->cuit ?? '';
                    $persona->relaciones->socio_director_de[$key]->razon_social = $value->nombre_persona ?? '';
                    $persona->relaciones->socio_director_de[$key]->cargo = $value->car_nombre ?? '';
                    $persona->relaciones->socio_director_de[$key]->desde = $value->c04_periodo_desde ?? '';
                    $persona->relaciones->socio_director_de[$key]->hasta = $value->c04_periodo_hasta ?? '';
                    $persona->relaciones->socio_director_de[$key]->fecha_inicio_actividad = $value->fecha_cons ?? '';
                    $persona->relaciones->socio_director_de[$key]->fecha_ins_rpc = $value->fecha_ins_rpc ?? '';
                    $persona->relaciones->socio_director_de[$key]->actividad = $value->actividad ?? '';
                }
            } else {
                foreach ($socios_directores as $key => $value) {
                    $persona->relaciones->socios_directores[$key] = new \stdClass();
                    $persona->relaciones->socios_directores[$key]->identificador = $value->identificador ?? 'C.U.I.T';
                    $persona->relaciones->socios_directores[$key]->identificacion = $value->cuit ?? '';
                    $persona->relaciones->socios_directores[$key]->nombre = $value->nombre_persona ?? '';
                    $persona->relaciones->socios_directores[$key]->cargo = $value->car_nombre ?? '';
                    $persona->relaciones->socios_directores[$key]->desde = $value->c04_periodo_desde ?? '';
                    $persona->relaciones->socios_directores[$key]->hasta = $value->c04_periodo_hasta ?? '';
                    $persona->relaciones->socios_directores[$key]->tipo_documento = $value->tipo_doc1 ?? '';
                    $persona->relaciones->socios_directores[$key]->nro_documento = $value->nrodoc_1 ?? '';
                    $persona->relaciones->socios_directores[$key]->fecha_nacimiento = $value->fecha_nac ?? '';
                    $persona->relaciones->socios_directores[$key]->profesion = str_replace("\r", '', $value->profesion) ?? '';
                }
            }

            foreach ($accionista_de as $key => $value) {
                $persona->relaciones->accionista_de[$key] = new \stdClass();
                $persona->relaciones->accionista_de[$key]->identificador = $value->identificador ?? 'C.U.I.T';
                $persona->relaciones->accionista_de[$key]->identificacion = $value->cuit ?? '';
                $persona->relaciones->accionista_de[$key]->razon_social = $value->nombre_persona ?? '';
                $persona->relaciones->accionista_de[$key]->cant_acciones = $value->cant_acciones ?? '';
                $persona->relaciones->accionista_de[$key]->monto = $value->monto ?? '';
                $persona->relaciones->accionista_de[$key]->porcentaje = $value->porcentaje ?? '';
                $persona->relaciones->accionista_de[$key]->desde = $value->fecha_actilizacion ?? '';
            }

            foreach ($accionistas as $key => $value) {
                $persona->relaciones->accionistas[$key] = new \stdClass();
                $persona->relaciones->accionistas[$key]->identificador = $value->identificador ?? 'C.U.I.T';
                $persona->relaciones->accionistas[$key]->identificacion = $value->cuit_acc ?? '';
                $persona->relaciones->accionistas[$key]->nombre = $value->nombre_persona ?? '';
                $persona->relaciones->accionistas[$key]->cant_acciones = $value->cant_acciones ?? '';
                $persona->relaciones->accionistas[$key]->monto = $value->monto ?? '';
                $persona->relaciones->accionistas[$key]->porcentaje = $value->porcentaje ?? '';
                $persona->relaciones->accionistas[$key]->desde = $value->fecha_actilizacion ?? '';
                $persona->relaciones->accionistas[$key]->tipo_documento = $value->tipo_doc1 ?? '';
                $persona->relaciones->accionistas[$key]->nro_documento = $value->nrodoc_1 ?? '';
                $persona->relaciones->accionistas[$key]->fecha_nacimiento = $value->fecha_nac ?? '';
                $persona->relaciones->accionistas[$key]->profesion = str_replace("\r", '', $value->profesion) ?? '';
            }

            foreach ($vinculaciones as $key => $value) {
                $persona->relaciones->vinculaciones[$key] = new \stdClass();
                $persona->relaciones->vinculaciones[$key]->cuit = $value->cuit_vinculada ?? '';
                $persona->relaciones->vinculaciones[$key]->nombre_persona = $value->nombre_persona ?? '';
                $persona->relaciones->vinculaciones[$key]->desde = $value->desde ?? '';
                $persona->relaciones->vinculaciones[$key]->hasta = $value->hasta ?? '';
                $persona->relaciones->vinculaciones[$key]->detalle = $value->detalle ?? '';
            }

            foreach ($vinculaciones_indirectas as $key => $value) {
                $persona->relaciones->vinculaciones_indirectas[$key] = new \stdClass();
                $persona->relaciones->vinculaciones_indirectas[$key]->cuit = $value->cuit_vinculada ?? '';
                $persona->relaciones->vinculaciones_indirectas[$key]->nombre_persona = $value->nombre_persona ?? '';
                /*$persona->relaciones->vinculaciones_indirectas[$key]->tipo            = $value->nombre ?? '';
                $persona->relaciones->vinculaciones_indirectas[$key]->detalle         = $value->detalle ?? '';*/
            }

            $persona->relaciones->nombres_anteriores = $nombres_anteriores_1;

        } elseif ($idioma == 'ENG') {

            foreach ($participaciones as $key => $value) {
                $persona->corporate_realationships->shareholding_activity[$key] = new \stdClass();
                $persona->corporate_realationships->shareholding_activity[$key]->legal_name = $value->nombre_sociedad ?? '';
                $persona->corporate_realationships->shareholding_activity[$key]->taxid = $value->cuit_sociedad ?? '';
                $persona->corporate_realationships->shareholding_activity[$key]->taxid_sharheolder = $value->cuit_socio ?? '';
                $persona->corporate_realationships->shareholding_activity[$key]->legal_name_shareholder = $value->nombre_socio ?? '';
                $persona->corporate_realationships->shareholding_activity[$key]->role = $value->cargo ?? '';
            }
            if ($fisica_juridica == 'F') {
                foreach ($socios_directores as $key => $value) {
                    $persona->corporate_realationships->partner_of[$key] = new \stdClass();
                    $persona->corporate_realationships->partner_of[$key]->identifier = $value->identificador ?? 'C.U.I.T';
                    $persona->corporate_realationships->partner_of[$key]->taxid = $value->cuit ?? '';
                    $persona->corporate_realationships->partner_of[$key]->legal_name = $value->nombre_persona ?? '';
                    $persona->corporate_realationships->partner_of[$key]->position = $value->car_nombre ?? '';
                    $persona->corporate_realationships->partner_of[$key]->from_date = $value->c04_periodo_desde ?? '';
                    $persona->corporate_realationships->partner_of[$key]->to_date = $value->c04_periodo_hasta ?? '';
                    $persona->corporate_realationships->partner_of[$key]->start_date = $value->fecha_cons ?? '';
                    $persona->corporate_realationships->partner_of[$key]->ins_rpc_date = $value->fecha_ins_rpc ?? '';
                    $persona->corporate_realationships->partner_of[$key]->activity = $value->actividad ?? '';
                }
            } else {
                foreach ($socios_directores as $key => $value) {
                    $persona->corporate_realationships->partners[$key] = new \stdClass();
                    $persona->corporate_realationships->partners[$key]->identifier = $value->identificador ?? 'C.U.I.T';
                    $persona->corporate_realationships->partners[$key]->taxid = $value->cuit ?? '';
                    $persona->corporate_realationships->partners[$key]->name = $value->nombre_persona ?? '';
                    $persona->corporate_realationships->partners[$key]->position = $value->car_nombre ?? '';
                    $persona->corporate_realationships->partners[$key]->from_date = $value->c04_periodo_desde ?? '';
                    $persona->corporate_realationships->partners[$key]->to_date = $value->c04_periodo_hasta ?? '';
                    $persona->corporate_realationships->partners[$key]->id_type = $value->tipo_doc1 ?? '';
                    $persona->corporate_realationships->partners[$key]->id_number = $value->nrodoc_1 ?? '';
                    $persona->corporate_realationships->partners[$key]->DOB = $value->fecha_nac ?? '';
                    $persona->corporate_realationships->partners[$key]->profession = $value->profesion ?? '';
                }
            }

            foreach ($accionista_de as $key => $value) {
                $persona->corporate_realationships->shareholder_of[$key] = new \stdClass();
                $persona->corporate_realationships->shareholder_of[$key]->identifier = $value->identificador ?? 'C.U.I.T';
                $persona->corporate_realationships->shareholder_of[$key]->taxid = $value->cuit ?? '';
                $persona->corporate_realationships->shareholder_of[$key]->legal_name = $value->nombre_persona ?? '';
                $persona->corporate_realationships->shareholder_of[$key]->number_of_shares = $value->cant_acciones ?? '';
                $persona->corporate_realationships->shareholder_of[$key]->amount = $value->monto ?? '';
                $persona->corporate_realationships->shareholder_of[$key]->percentage = $value->porcentaje ?? '';
                $persona->corporate_realationships->shareholder_of[$key]->from_date = $value->fecha_actilizacion ?? '';

            }

            foreach ($accionistas as $key => $value) {
                $persona->corporate_realationships->shareholders[$key] = new \stdClass();
                $persona->corporate_realationships->shareholders[$key]->identifier = $value->identificador ?? 'C.U.I.T';
                $persona->corporate_realationships->shareholders[$key]->taxid = $value->cuit_acc ?? '';
                $persona->corporate_realationships->shareholders[$key]->name = $value->nombre_persona ?? '';
                $persona->corporate_realationships->shareholders[$key]->number_of_shares = $value->cant_acciones ?? '';
                $persona->corporate_realationships->shareholders[$key]->amount = $value->monto ?? '';
                $persona->corporate_realationships->shareholders[$key]->percentage = $value->porcentaje ?? '';
                $persona->corporate_realationships->shareholders[$key]->from_date = $value->fecha_actilizacion ?? '';
                $persona->corporate_realationships->shareholders[$key]->id_type = $value->tipo_doc1 ?? '';
                $persona->corporate_realationships->shareholders[$key]->id_number = $value->nrodoc_1 ?? '';
                $persona->corporate_realationships->shareholders[$key]->DOB = $value->fecha_nac ?? '';
                $persona->corporate_realationships->shareholders[$key]->profession = str_replace("\r", '', $value->profesion) ?? '';
            }

            foreach ($vinculaciones as $key => $value) {
                $persona->corporate_realationships->linkages[$key] = new \stdClass();
                $persona->corporate_realationships->linkages[$key]->tax_id = $value->cuit_vinculada ?? '';
                $persona->corporate_realationships->linkages[$key]->legal_name = $value->nombre_persona ?? '';
                $persona->corporate_realationships->linkages[$key]->from_date = $value->desde ?? '';
                $persona->corporate_realationships->linkages[$key]->to_date = $value->hasta ?? '';
                $persona->corporate_realationships->linkages[$key]->detail = $value->detalle ?? '';
            }

            foreach ($vinculaciones_indirectas as $key => $value) {
                $persona->corporate_realationships->indirect_linkages[$key] = new \stdClass();
                $persona->corporate_realationships->indirect_linkages[$key]->tax_id = $value->cuit_vinculada ?? '';
                $persona->corporate_realationships->indirect_linkages[$key]->legal_name = $value->nombre_persona ?? '';
                /*$persona->corporate_realationships->indirect_linkages[$key]->type        = $value->nombre ?? '';
                $persona->corporate_realationships->indirect_linkages[$key]->detail      = $value->detalle ?? '';*/
            }
            $persona->corporate_realationships->previous_names = $nombres_anteriores_1;
        }

        return json_encode($persona);

    }

    /* Seccion Edictos */
    public static function ICEdictos($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
            $persona->edictos = [];
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
            $persona->edicts = [];
        }

        $edictos = [];
        $edictos = SQLConnection::obtenerEdictos($cuit);

        foreach ($edictos as $key => $value) {
            if ($idioma == 'SPA') {
                $persona->edictos[$key] = new \stdClass();
                $persona->edictos[$key]->provincia_boletin = $value->provincia_boletin ?? '';
                $persona->edictos[$key]->fecha_boletin = $value->fechab ?? '';
                $persona->edictos[$key]->texto = $value->texto ?? '';
            } elseif ($idioma == 'ENG') {
                $persona->edicts[$key] = new \stdClass();
                $persona->edicts[$key]->province = $value->provincia_boletin ?? '';
                $persona->edicts[$key]->date = $value->fechab ?? '';
                $persona->edicts[$key]->text = $value->texto ?? '';
            }
        }
        return json_encode($persona);
    }

    /* Seccion Edictos Homonimos */
    public static function ICEdictosHomonimos($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
            $persona->edictos_homonimos = [];
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
            $persona->homonyms_edicts = [];
        }

        $fisica_juridica = Misc::tipoPersona($cuit);

        $edictos_homonimos = [];
        $sinonimos = '';
        $razon_social_completa = '';
        $razon_social_f = $razon_social;
        $razon_social_f = str_replace('#', 'ñ', $razon_social_f);
        $razon_social_f = preg_replace('/\(|\)/', '', $razon_social_f);
        $razon_social_explode = explode(" ", $razon_social_f);


        //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;
            }
        }
        $razon_social_explode = $explode_aux;

        //P. FISICA
        if ($fisica_juridica == '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); */
            $resultado_razon_social = Misc::resultadoCombinaciones($razon_social_explode);
            //Limita a 10 resultados las combinaciones en PF
            $resultado_razon_social = array_slice($resultado_razon_social, -10);
            $cant_resultado_razon_social = count($resultado_razon_social);

            if ($cant_resultado_razon_social < 10) {
                foreach ($resultado_razon_social as $key => $rs) {
                    if (!(end($resultado_razon_social) == $rs)) {
                        $razon_social_completa .= 'NEAR((' . str_replace(" ", ",", $rs) . '),0,true) OR ';
                    } else {
                        $razon_social_completa .= 'NEAR((' . str_replace(" ", ",", $rs) . '),0,true)';
                    }
                }
            } else {
                $razon_social_completa = "\"" . $razon_social_f . "\"";
                //$razon_social_completa = "\"".$$razon_social_todos[5]."\"";
            }
        }

        // P. JURIDICA
        if ($fisica_juridica == 'J') {
            $resultado_nombres_ant = [];
            $nombres_anteriores = SQLConnection::backendCambiosNombres($cuit);
            $resultado_nombres_ant[] = $razon_social;
            if ($nombres_anteriores) {
                foreach ($nombres_anteriores as $nombre_ant) {
                    $resultado_nombres_ant[] = $nombre_ant->nombre;
                }
            }
            $sinonimos = Misc::diccionarioSinonimosTEST($resultado_nombres_ant);
            $count_sinonimo = count($sinonimos) - 1;
            foreach ($sinonimos as $key => $rs) {
                if (!($key == $count_sinonimo)) {
                    $razon_social_completa .= $rs . 'OR';
                } else {
                    $razon_social_completa .= $rs;
                }
            }
            if (!$razon_social_completa) {
                $razon_social_completa = "\"" . $razon_social . "\"";
            }
            $edictos_homonimos = SQLConnection::obtenerEdictosHomonimos($razon_social_completa);
        } else {
            //Edictos para PF
            $edictos_homonimos = SQLConnection::obtenerEdictosHomonimos($razon_social_completa);
            $sinonimos = $razon_social_completa;
        }

        foreach ($edictos_homonimos as $key => $value) {
            if ($idioma == 'SPA') {
                $persona->edictos_homonimos[$key] = new \stdClass();
                $persona->edictos_homonimos[$key]->provincia_boletin = $value->provincia_boletin ?? '';
                $persona->edictos_homonimos[$key]->fecha_boletin = $value->fechab ?? '';
                $persona->edictos_homonimos[$key]->texto = $value->contenido_archivo ?? '';
            } elseif ($idioma == 'ENG') {
                $persona->homonyms_edicts[$key] = new \stdClass();
                $persona->homonyms_edicts[$key]->province = $value->provincia_boletin ?? '';
                $persona->homonyms_edicts[$key]->date = $value->fechab ?? '';
                $persona->homonyms_edicts[$key]->text = $value->contenido_archivo ?? '';
            }

        }
        return json_encode($persona);
    }

    /**
     * Api que devuelve en formato
     * JSON los edictos donde una persona
     * física esta mencionada
     * @access public
     * @static
     * @return \Illuminate\Http\JsonResponse
     */
    public static function ICEdictosMencionado($cuit = null)
    {
        $persona = new \stdClass();
        $mensaje = 'mensaje';
        $etiqueta_edictos_mencionado = 'edictos';
        $etiqueta_razon_social = 'razon_social';
        $identificacion = 'identificacion';
        $provincia_boletin = 'provincia_boletin';
        $fecha_boletin = 'fecha_boletin';
        $texto = 'texto';
        //
        if (isset($_POST['idioma'])) {
            $idioma = strtoupper(Request::input('idioma'));
            if ($idioma == 'ENG') {
                $mensaje = 'message';
                $edictos_mencionado = 'edicts';
                $etiqueta_razon_social = 'legal_name';
                $identificacion = 'taxid';
                $provincia_boletin = 'province';
                $fecha_boletin = 'date';
                $texto = 'text';
            }
        }
        //
        //

        if (isset($_POST['cuit']) || $cuit == null) {
            //
            $cuit = $cuit ?? Request::input('cuit');
            //
            if (Misc::validarCuit($cuit)) {
                // obtenemos los demas datos para la consulta

                $razon_social = '';
                if (isset($_POST['razon_social'])) {
                    $razon_social = Request::input('razon_social');
                } else {
                    $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
                }
                //
                //Elimina de las combinaciones los valores que contienen una letra 
                $edictos_mencionado = [];
                $sinonimos = '';
                $razon_social_completa = '';
                $razon_social_f = $razon_social;
                $razon_social_f = str_replace('#', 'ñ', $razon_social_f);
                $razon_social_f = preg_replace('/\(|\)/', '', $razon_social_f);
                $razon_social_explode = explode(" ", $razon_social_f);
                $explode_aux = [];
                foreach ($razon_social_explode as $key => $value) {
                    if (isset($value) && (strlen($value) > 1)) {
                        $explode_aux[] = $value;
                    }
                }
                $razon_social_explode = $explode_aux;
                //
		/*
		                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); */
                $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 . "\"";
                }
                //Edictos para PF
                $edictos_mencionado = SQLConnection::obtenerEdictosMencionado($razon_social_completa);
                //
                $persona->$identificacion = $cuit;
                $persona->$etiqueta_razon_social = $razon_social;
                $persona->$etiqueta_edictos_mencionado = [];
                $persona->error = 0;
                $persona->$mensaje = 'OK';
                //
                $empresa_consultada = [];
                //
                $i = 0;
                foreach ($edictos_mencionado as $key => $value) {
                    if (!in_array($value->cuit_soc, $empresa_consultada) && !empty($value->cuit_soc) && !is_null($value->cuit_soc)) {
                        $edictos = SQLConnection::obtenerEdictos($value->cuit_soc);
                        array_push($empresa_consultada, $value->cuit_soc);
                        //
                        foreach ($edictos as $k => $edicto) {
                            $persona->$etiqueta_edictos_mencionado[$i] = new \stdClass();
                            $persona->$etiqueta_edictos_mencionado[$i]->$provincia_boletin = $edicto->provincia_boletin ?? '';
                            $persona->$etiqueta_edictos_mencionado[$i]->$fecha_boletin = $edicto->fechab ?? '';
                            $persona->$etiqueta_edictos_mencionado[$i]->$texto = $edicto->texto ?? '';
                            $i++;
                        }
                    }
                }
                //
            } else {
                $persona->error = 2;
                $persona->$mensaje = 'El CUIT recibido es inválido.';
            }
            //
        } else {
            $persona->error = 1;
            $persona->$mensaje = 'No se recibio el CUIT';
        }
        //
        return Response::JSON($persona);
    }

    /* Seccion Consultas por ramo */
    public static function ICConsultaspPorRamo($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }

        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        $consultas_ramos = SQLConnection::backendStoreProcedure('obtener_consulta_por_ramos', array($cuit, 12));
        $consultas = [];
        if ($consultas_ramos) {
            if ($idioma == 'SPA') {
                foreach ($consultas_ramos as $key_ramo => $consulta) {
                    $consultas[$key_ramo]['nombre'] = $consulta->descripcion;
                    $consultas[$key_ramo][$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]);
                }
            }
            if ($idioma == 'ENG') {
                foreach ($consultas_ramos as $key_ramo => $consulta) {
                    $consultas[$key_ramo]['name'] = $consulta->descripcion;
                    $consultas[$key_ramo][$consulta->antiguedad] = $consulta->cantidad;
                }

                foreach ($consultas as $key => $consulta) {
                    if (!isset($consultas[$key]['between_0_1'])) {
                        $consultas[$key]['between_0_1'] = 0;
                    }
                    if (!isset($consultas[$key]['between_1_2'])) {
                        $consultas[$key]['between_1_2'] = 0;
                    }
                    if (!isset($consultas[$key]['between_2_5'])) {
                        $consultas[$key]['between_2_5'] = 0;
                    }
                    ksort($consultas[$key]);
                }
            }
        }

        if ($idioma == 'SPA') {
            $persona->consultas = $consultas;
        } elseif ($idioma == 'ENG') {
            $persona->qtyqueries = $consultas;
        }

        return json_encode($persona);
    }

    /* Seccion Comerciales - Seguros */

    public static function ICSeguros($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        $seguros2 = [];
        $seguros = [];

        $seguros2 = SQLConnection::backendSeguros($cuit);
        if (!empty($seguros2)) {
            if ($idioma == 'SPA') {
                foreach ($seguros2 as $key => $value) {
                    $seguros[$key] = new \StdClass();
                    $seguros[$key]->aseguradora = $seguros2[$key]->seg_nombre;
                    $seguros[$key]->riesgo = $seguros2[$key]->rie_nombre;
                }

            } elseif ($idioma == 'ENG') {
                foreach ($seguros2 as $key => $value) {
                    $seguros[$key] = new \StdClass();
                    $seguros[$key]->company = $seguros2[$key]->seg_nombre;
                    $seguros[$key]->risk = $seguros2[$key]->rie_nombre;
                }
            }
        }

        if ($idioma == 'SPA') {
            $persona->seguros = $seguros;

        } elseif ($idioma == 'ENG') {
            $persona->insurances = $seguros;
        }

        return json_encode($persona);
    }

    /* Seccion Comerciales - Marcas */
    /* 
         NOMBRE: INQUIROVITAE
         TIPO: MIXTA
         CLASE: 9, 42
         ACTA: 3498610
         BOLETÍN: 4225
         PUBLICACIÓN: 13/07/2016
         URL

     */
    public static function ICMarcas($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        if ($idioma == 'SPA') {
            $persona->marcas = new \stdClass();
        } elseif ($idioma == 'ENG') {
            $persona->brands = new \stdClass();
        }

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

            $resultado = [];
            if ($idioma == 'SPA') {
                foreach ($marcas as $key => $value) {
                    $resultado[$key] = new \StdClass();
                    $resultado[$key]->marca = $value->marca ?? '';
                    $resultado[$key]->tipo = $value->tipo ?? '';
                    $resultado[$key]->acta = $value->num_acta ?? '';
                    $resultado[$key]->clase = $value->clase ?? '';
                    $resultado[$key]->boletin = $value->num_boletin ?? '';
                    $resultado[$key]->publicacion = $value->fecha_publicacion ?? '';
                }
            } elseif ($idioma == 'ENG') {
                foreach ($marcas as $key => $value) {
                    $resultado[$key] = new \StdClass();
                    $resultado[$key]->brand = $value->marca ?? '';
                    $resultado[$key]->type = $value->tipo ?? '';
                    $resultado[$key]->act_number = $value->num_acta ?? '';
                    $resultado[$key]->class = $value->clase ?? '';
                    $resultado[$key]->bulletin = $value->num_boletin ?? '';
                    $resultado[$key]->publication_date = $value->fecha_publicacion ?? '';
                }
            }
        } else {
            $resultado = [];
        }
        if ($idioma == 'SPA') {
            $persona->marcas = $resultado;

        } elseif ($idioma == 'ENG') {
            $persona->brands = $resultado;
        }
        return json_encode($persona);
    }

    /* Seccion  Fiscal */
    public static function ICFiscales($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        $texto_pdf = new \StdClass();
        $exec = SQLConnection::backendStoreProcedure('afip_texto_sin_constancia', array($id_padron), true);
        $texto_pdf = ($exec->texto_constancia) ?? '';


        if ($idioma == 'SPA') {
            $persona->fiscales = new \stdClass();
            $persona->fiscales->observaciones = $texto_pdf;
            $persona->fiscales->domicilio_fiscal = new \StdClass();
        } elseif ($idioma == 'ENG') {
            $persona->fiscal_data = new \stdClass();
            $persona->fiscal_data->observations = $texto_pdf;
            $persona->fiscal_data->fiscal_address = new \StdClass();
        }

        $idp = SQLConnection::obtenerIdPadron($cuit);
        $id_padron = $idp->id_padron;

        $inscripciones = SQLConnection::obtenerInscripciones($cuit);
        $claes = SQLConnection::obtenerClae($cuit);

        $fuentes_procesadas = SQLConnection::obtenerUltimoPeriodoProcesado("sircreb");
        $impuestos = SQLConnection::obtenerPadronImpuestos($id_padron);
        $padron_caracterizaciones = SQLConnection::obtenerPadronCaracterizaciones($id_padron);

        $obtener_domicilios = SQLConnection::obtenerDomicilios($cuit);
        $domicilio_fiscal = new \StdClass();
        foreach ($obtener_domicilios as $formal) {
            if (strpos($formal->tipo_domicilio, 'F') !== false) {
                if ($idioma == 'SPA') {
                    $domicilio_fiscal->domicilio = $formal->domicilio ?? '';
                    $domicilio_fiscal->codPos = $formal->codpos ?? '';
                    $domicilio_fiscal->localidad = $formal->loc_nombre ?? '';
                    $domicilio_fiscal->provincia = $formal->prv_nombre ?? '';
                    $domicilio_fiscal->pais = $formal->pai_nombre ?? '';
                    $persona->fiscales->domicilio_fiscal = $domicilio_fiscal;
                } elseif ($idioma == 'ENG') {
                    $domicilio_fiscal->address = $formal->domicilio ?? '';
                    $domicilio_fiscal->zip_code = $formal->codpos ?? '';
                    $domicilio_fiscal->city = $formal->loc_nombre ?? '';
                    $domicilio_fiscal->state = $formal->prv_nombre ?? '';
                    $domicilio_fiscal->country = $formal->pai_nombre ?? '';
                    $persona->fiscal_data->fiscal_address = $domicilio_fiscal;
                }
                break;
            }
        }

        if ($idioma == 'SPA') {
            $inscripcion = new \StdClass();
            $inscripcion->agencia = isset($inscripciones->codigo_dependencia) ? ($inscripciones->codigo_dependencia) . ' - ' .
                $inscripciones->nombre_dependencia . ' - ' .
                $inscripciones->direccion . ' - ' .
                $inscripciones->codigo_postal . ' - ' .
                $inscripciones->provincia : '';
            $inscripcion->fecha_contrato_social = $inscripciones->fecha_contrato_social ?? '';
            $inscripcion->numero_inscripcion = $inscripciones->numero_inscripcion ?? '';
            if ($inscripciones->fecha_inscripcion == '01/01/1901') {
                $inscripciones->fecha_inscripcion = null;
            }
            $inscripcion->fecha_inscripcion = $inscripciones->fecha_inscripcion ?? '';
            $inscripcion->monotributo = $inscripciones->monotributo ?? '';
            $inscripcion->inicio_actividad = $inscripciones->inicio_actividad ?? '';
            $inscripcion->integrante_soc = $inscripciones->integrante_soc ?? '';
            $inscripcion->empleador = $inscripciones->empleador ?? '';

            $persona->fiscales->inscripciones = $inscripcion;

            $clae = [];
            foreach ($claes as $key => $value) {
                $clae[] = new \StdClass();
                $clae[$key]->ciuu = $value->cod_clae ?? '';
                $clae[$key]->actividad = $value->descripcion ?? '';
                $clae[$key]->fecha_inicio_actividad = $value->fecha_inicio_actividad ?? '';
                $clae[$key]->principal = $value->principal == 1 ? 'SI' : 'NO';
            }
            $persona->fiscales->clae = $clae;

            $reg = [];
            foreach ($padron_caracterizaciones as $key => $value) {
                $reg[] = new \StdClass();
                $reg[$key]->codigo = $value->codigo_caracterizacion ?? '';
                $reg[$key]->nombre = $value->nombre_caracterizacion ?? '';

            }
            $persona->fiscales->regimen_informacion = $reg;

            $impuesto = [];
            foreach ($impuestos as $key => $value) {
                $impuesto[] = new \StdClass();
                $impuesto[$key]->codigo_impuesto = $value->codigo_impuesto ?? '';
                $impuesto[$key]->nombre_impuesto = $value->nombre_impuesto ?? '';
                $impuesto[$key]->estado = $value->estado ?? '';
                $impuesto[$key]->fecha_inscripcion = $value->fecha_inscripcion ?? '';
            }
            $persona->fiscales->impuestos = $impuesto;

            /* No tenemos datos en Sircreb desde 2017 */
            /*
                          $sircreb           = SQLConnection::backendStoreProcedure('obtener_sircreb', array($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 = '--';
                                }
                            }
                        }

                        $persona->fiscales->riesgo_fiscal = new \StdClass(); 
                        $persona->fiscales->riesgo_fiscal = $riesgo_fiscal; // No tenemos mas desde el 2017
            */
        } elseif ($idioma == 'ENG') {

            $inscripcion = new \StdClass();
            $inscripcion->agency = isset($inscripciones->codigo_dependencia) ? ($inscripciones->codigo_dependencia) . ' - ' .
                $inscripciones->nombre_dependencia . ' - ' .
                $inscripciones->direccion . ' - ' .
                $inscripciones->codigo_postal . ' - ' .
                $inscripciones->provincia : '';
            $inscripcion->date_of_social_contract = $inscripciones->fecha_contrato_social ?? '';
            $inscripcion->registration_number = $inscripciones->numero_inscripcion ?? '';
            if ($inscripciones->fecha_inscripcion == '01/01/1901') {
                $inscripciones->fecha_inscripcion = null;
            }
            $inscripcion->registration_date = $inscripciones->fecha_inscripcion ?? '';
            $inscripcion->monotax = $inscripciones->monotributo ?? '';
            $inscripcion->start_activity = $inscripciones->inicio_actividad ?? '';
            $inscripcion->company_member = $inscripciones->integrante_soc ?? '';
            $inscripcion->employer = $inscripciones->empleador ?? '';

            $persona->fiscal_data->registrations = $inscripcion;

            $clae = [];
            foreach ($claes as $key => $value) {
                $clae[] = new \StdClass();
                $clae[$key]->ciuu = $value->cod_clae ?? '';
                $clae[$key]->description = $value->descripcion ?? '';
                $clae[$key]->start_activity = $value->fecha_inicio_actividad ?? '';
                $clae[$key]->principal = $value->principal == 1 ? 'SI' : 'NO';
            }
            $persona->fiscal_data->economic_activity_code = $clae;

            $reg = [];
            foreach ($padron_caracterizaciones as $key => $value) {
                $reg[] = new \StdClass();
                $reg[$key]->code = $value->codigo_caracterizacion ?? '';
                $reg[$key]->full_name = $value->nombre_caracterizacion ?? '';

            }
            $persona->fiscal_data->information_regimes = $reg;

            $impuesto = [];
            foreach ($impuestos as $key => $value) {
                $impuesto[] = new \StdClass();
                $impuesto[$key]->code = $value->codigo_impuesto ?? '';
                $impuesto[$key]->full_name = $value->nombre_impuesto ?? '';
                $impuesto[$key]->status = $value->estado ?? '';
                $impuesto[$key]->registration_date = $value->fecha_inscripcion ?? '';
            }
            $persona->fiscal_data->taxes = $impuesto;

            /* No tenemos datos en Sircreb desde 2017 */
            /*
                        $riesgo_fiscal = 'NO';
                          $sircreb           = SQLConnection::backendStoreProcedure('obtener_sircreb', array($cuit));
                        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 = '--';
                                }
                            }
                        }

                        $persona->fiscal_data->riesgo_fiscal = new \StdClass(); 
                        $persona->fiscal_data->riesgo_fiscal = $riesgo_fiscal; // No tenemos mas desde el 2017
            */
        }

        return json_encode($persona);
    }

    /* Seccion Mis Aportes */
    public static function ICMisAportes($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        if ($idioma == 'SPA') {
            $persona->aportes = new \stdClass();
        } elseif ($idioma == 'ENG') {
            $persona->contributions = new \stdClass();
        }

        $fisica_juridica = Misc::tipoPersona($cuit);
        if ($fisica_juridica == 'F') {
            $aportes = SQLConnection::backendStoreProcedure('backend_mis_aportes', array($cuit, NULL, 12, 1), false);
        } else {
            $aportes = SQLConnection::backendStoreProcedure('mis_aportes_empresa', array($cuit), false);
        }

        $aporte = [];
        $i = 0;
        if ($idioma == 'SPA') {
            foreach ($aportes as $key => $value) {
                if (!(strpos($value->ddjj, 'NO PRES') === 0 && strpos($value->aportes_ss, 'NO PRES') === 0 && strpos($value->aportes_os, 'NO PRES') === 0 && strpos($value->contr_patronal, 'NO PRES') === 0)) {
                    $aporte[$i] = new \StdClass();
                    $aporte[$i]->periodo = $value->periodo_str ?? '';
                    $aporte[$i]->pres_ddjj = $value->ddjj ?? '';
                    $aporte[$i]->aporte_seg_social = $value->aportes_ss ?? '';
                    $aporte[$i]->aporte_obra_soc = $value->aportes_os ?? '';
                    $aporte[$i]->contr_patronal = $value->contr_patronal ?? '';
                    $i += 1;
                }
            }
            $persona->aportes = $aporte;

        } elseif ($idioma == 'ENG') {
            foreach ($aportes as $key => $value) {
                if (!(strpos($value->ddjj, 'NO PRES') === 0 && strpos($value->aportes_ss, 'NO PRES') === 0 && strpos($value->aportes_os, 'NO PRES') === 0 && strpos($value->contr_patronal, 'NO PRES') === 0)) {
                    $aporte[$i] = new \StdClass();
                    $aporte[$i]->period = $value->periodo_str ?? '';
                    $aporte[$i]->pres_affidavit = $value->ddjj ?? '';
                    $aporte[$i]->social_security_contribution = $value->aportes_ss ?? '';
                    $aporte[$i]->social_work_contribution = $value->aportes_os ?? '';
                    $aporte[$i]->employers_contract = $value->contr_patronal ?? '';
                    $i += 1;
                }
            }
            $persona->contributions = $aporte;
        }
        return json_encode($persona);
    }

    /* Seccion Facturas Apocrifas */
    public static function ICApocrifas($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }


        if ($idioma == 'SPA') {
            $persona->apocrifas = new \stdClass();
        } elseif ($idioma == 'ENG') {
            $persona->apocryphal = new \stdClass();
        }

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

        $apocrifa = [];
        if ($idioma == 'SPA') {
            foreach ($apocrifas as $key => $value) {
                $apocrifa[] = new \StdClass();
                $apocrifa[$key]->aprocrifas = 'SI';
                $apocrifa[$key]->detectado = $value->detectado ?? '';
                $apocrifa[$key]->publicado = $value->publicado ?? '';
                $apocrifa[$key]->observaciones = $value->observaciones ?? '';
            }
            $persona->apocrifas = $apocrifa;

        } elseif ($idioma == 'ENG') {

            foreach ($apocrifas as $key => $value) {
                $apocrifa[] = new \StdClass();
                $apocrifa[$key]->apocryphal = 'YES';
                $apocrifa[$key]->detected_date = $value->detectado ?? '';
                $apocrifa[$key]->publication_date = $value->publicado ?? '';
                $apocrifa[$key]->observations = $value->observaciones ?? '';
            }
            $persona->apocryphal = $apocrifa;

        }
        return json_encode($persona);
    }

    /* Seccion ARBA */
    // FALTA TRADUCIR 
    public static function ICArba($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }


        if ($idioma == 'SPA') {
            $persona->expedientes_arba = new \stdClass();
        } elseif ($idioma == 'ENG') {
            $persona->arba_records = new \stdClass();
        }

        $arbas = SQLConnection::backendStoreProcedure('obtener_arba', array($cuit));
        $arba = [];
        if ($idioma == 'SPA') {
            foreach ($arbas as $key => $value) {
                $arba[] = new \StdClass();
                $arba[$key]->impuesto = $value->impuesto ?? '';
                $arba[$key]->objeto = $value->objeto ?? '';
                $arba[$key]->numero_interno = $value->numero_interno_de_juicio ?? '';
                $arba[$key]->fecha_de_inicio_de_juicio = $value->fecha_de_inicio_de_juicio ?? '';
                $arba[$key]->importe_original = $value->importe_deuda_del_juicio ?? '';
                $arba[$key]->departamento_judicial = $value->departamento_judicial ?? '';
                $arba[$key]->juzgado = $value->numero_de_juzgado ?? '';
                $arba[$key]->secretaria = $value->secretaria ?? '';
                $arba[$key]->fecha_cancelacion = $value->fecha_de_cancelacion ?? '';
                $arba[$key]->domicilio_calle = $value->domicilio_calle ?? '';
                $arba[$key]->domicilio_localidad = $value->domicilio_localidad ?? '';
                $arba[$key]->domicilio_numero = $value->domicilio_numero ?? '';
                $arba[$key]->fecha_de_plan_de_pagos = $value->fecha_de_plan_de_pagos ?? '';
                $arba[$key]->cancelacion_del_juicio = $value->cancelacion_del_juicio ?? '';
                $arba[$key]->estado_medida_cautelar = $value->estado_de_medida_cautelar ?? '';
                $arba[$key]->estado_plan_de_pagos = $value->estado_de_plan_de_pagos ?? '';
            }
            $persona->expedientes_arba = $arba;

        } elseif ($idioma == 'ENG') {

            foreach ($arbas as $key => $value) {
                $arba[] = new \StdClass();
                $arba[$key]->tax = $value->impuesto ?? '';
                $arba[$key]->objeto = $value->objeto ?? '';
                $arba[$key]->internal_number = $value->numero_interno_de_juicio ?? '';
                $arba[$key]->start_date = $value->fecha_de_inicio_de_juicio ?? '';
                $arba[$key]->original_amount = $value->importe_deuda_del_juicio ?? '';
                $arba[$key]->judicial_department = $value->departamento_judicial ?? '';
                $arba[$key]->court = $value->numero_de_juzgado ?? '';
                $arba[$key]->secretary = $value->secretaria ?? '';
                $arba[$key]->cancellation_date = $value->fecha_de_cancelacion ?? '';
                $arba[$key]->address = $value->domicilio_calle ?? '';
                $arba[$key]->number = $value->domicilio_numero ?? '';
                $arba[$key]->city = $value->domicilio_localidad ?? '';
                $arba[$key]->payment_plan_date = $value->fecha_de_plan_de_pagos ?? '';
                $arba[$key]->cancellation_of_trial = $value->cancelacion_del_juicio ?? '';
                $arba[$key]->state_of_precautionary_measure = $value->estado_de_medida_cautelar ?? '';
                $arba[$key]->payment_plan_status = $value->estado_de_plan_de_pagos ?? '';
            }
            $persona->arba_records = $arba;

        }
        return json_encode($persona);
    }

    /* Seccion  Bancos */
    public static function ICBancos($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        //$bancos = SQLConnection::backendStoreProcedure('backend_central_deudores', array($cuit,24,1));
        $bancos = SQLConnection::obtenerBancos($cuit);
        $periodo = SQLConnection::backendStoreProcedure('obtener_periodo_maximo', array($cuit), 'selectOne');
        $totales = [];

        $j = 0;
        for ($i = 23; $i >= 0; $i--) {
            $totales[$j] = new \StdClass;
            $totales[$j]->mes = date("Ym", strtotime($periodo->periodo_maximo . " -$i months"));
            $totales[$j]->total = 0;
            $j += 1;
        }

        foreach ($bancos as $key => $banco) {
            foreach ($totales as $i => $value) {
                if ($value->mes == $banco->fec_inf) {
                    $totales[$i]->total += ($banco->total) ?? 0;
                }
            }
        }

        if ($idioma == 'SPA') {
            //$persona->periodos = new \stdClass(); 
            //$persona->periodos->bancos = Misc::convertirFormatoFecha($periodo->periodo_maximo,'Y-m-d','Ym');
            $persona->central_deudores = [];
            foreach ($bancos as $key => $value) {

                $persona->central_deudores[$key] = new \stdClass();
                $persona->central_deudores[$key]->nombre_entidad = str_replace("\r\n", "", $value->nombre);
                $persona->central_deudores[$key]->periodo = //$value->fec_inf;
                    Misc::convertirFormatoFecha($value->fec_inf, 'Ym', 'm/Y');
                $persona->central_deudores[$key]->situacion = $value->situacion;
                $persona->central_deudores[$key]->monto_en_miles = round($value->total);
                //$persona->bancos[$key]->dias_atraso     = $value->dia_atraso;
            }

            $persona->totales = [];
            foreach ($totales as $key => $value) {
                $persona->totales[$key] = new \stdClass();
                $persona->totales[$key]->periodo = //$key;
                    Misc::convertirFormatoFecha($value->mes, 'Ym', 'm/Y');
                $persona->totales[$key]->monto_en_miles = round($value->total);
            }

        } elseif ($idioma == 'ENG') {
            //$persona->max_bank_information = new \stdClass(); 
            //$persona->max_bank_information->period = Misc::convertirFormatoFecha($periodo->periodo_maximo,'Y-m-d','Ym');
            $persona->debtors_center = [];
            foreach ($bancos as $key => $value) {
                $persona->debtors_center[$key] = new \stdClass();
                $persona->debtors_center[$key]->bank_name = str_replace("\r\n", "", $value->nombre);
                $persona->debtors_center[$key]->period = //$value->fec_inf;
                    Misc::convertirFormatoFecha($value->fec_inf, 'Ym', 'm/Y');
                $persona->debtors_center[$key]->status = $value->situacion;
                $persona->debtors_center[$key]->amount_thousands = round($value->total);
                //$persona->debtors_center[$key]->days_late = $value->dia_atraso;
            }
            $persona->total = [];
            foreach ($totales as $key => $value) {
                $persona->total[$key] = new \stdClass();
                $persona->total[$key]->period = //$key;
                    Misc::convertirFormatoFecha($value->mes, 'Ym', 'm/Y');
                $persona->total[$key]->amount_thousands = round($value->total);
            }

        }
        return json_encode($persona);
    }
    /* Seccion Bancos Card */
    public static function ICBancosCard($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        $card_status_bancario = SQLConnection::obtenerStatusBancario($cuit);

        if (isset($card_status_bancario->cheques_rechazados)) {
            if ($card_status_bancario->cheques_rechazados > 0) {
                $cheques = 'SI';
            } else {
                $cheques = 'NO';
            }
        } else {
            $cheques = 'No informa';
        }
        $persona->cheques_rechazados = $cheques;

        if (isset($card_status_bancario->situaciones)) {
            if ($card_status_bancario->situaciones > 0) {
                $situaciones = 'SI';
            } else {
                $situaciones = 'NO';
            }
        } else {
            $situaciones = 'No informa';
        }
        $persona->situacion_diferente_a_normal = $situaciones;

        $ultima_formateada = '';
        $maxima_formateada = '';
        if (isset($card_status_bancario->ultima_posicion)) {
            if ($card_status_bancario->ultima_posicion > 0) {
                $ultima_formateada = '$ ' . number_format($card_status_bancario->ultima_posicion, 0, ',', ' ');
                $ultima = $card_status_bancario->ultima_posicion;
            } else {
                $ultima = 'No informa';
            }
        } else {
            $ultima = 'No informa';
        }
        $persona->ultima_posicion = $ultima;
        $persona->ultima_posicion_format = $ultima_formateada;


        if (isset($card_status_bancario->maxima_posicion)) {
            if ($card_status_bancario->maxima_posicion > 0) {
                $maxima_formateada = '$ ' . number_format($card_status_bancario->maxima_posicion, 0, ',', ' ');
                $maxima = $card_status_bancario->maxima_posicion;
            } else {
                $maxima = 'No Informa';
            }
        } else {
            $maxima = 'No informa';
        }
        $persona->maxima_posicion = $maxima;
        $persona->maxima_posicion_format = $maxima_formateada;


        return json_encode($persona);

    }

    //Gráfico de garantías
    public static function ICBancosGarantias($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        $periodo_maximo = SQLConnection::obtenerPeriodoMaximo($cuit);
        for ($i = 0; $i <= 23; $i++) {
            $periodos_graficos[$i] = date("Ym", strtotime($periodo_maximo . " -$i months"));
        }

        $garantias = SQLConnection::backendStoreProcedure('obtener_garantias_bancos', array($cuit));
        $garantias = 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);
                    }
                }
            }
        }

        if ($idioma == 'SPA') {
            $persona->garantias = [];
            $persona->garantias = $garantias;
        } elseif ($idioma == 'ENG') {
            $persona->warranties = [];
            $persona->warranties = $garantias;
        }

        return json_encode($persona);

    }

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

    /* Seccion Cheques */
    public static function ICCheques($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '', $con_resumen = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$con_resumen) {
            $con_resumen = Request::input('con_resumen') ?? 'N';
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        /*
                
                $cheques = SQLConnection::backendStoreProcedure('obtener_cheques', array($cuit));

                $i = 0;
                foreach ($cheques as $key => $value) {
                  if($value->tipo == 'vinculaciones'){
                    if( $idioma == 'SPA' ){
                        $persona->vinculados_segun_bcra[$i] = new \stdClass();
                        $persona->vinculados_segun_bcra[$i]->nombre_persona_firmante     = $value->nombre_persona_firmante;
                        $persona->vinculados_segun_bcra[$i]->cuit_firmante               = $value->cuit_firmante;
                        $persona->vinculados_segun_bcra[$i]->nombre_persona_relacionado  = $value->nombre_persona_relacionado;
                        $persona->vinculados_segun_bcra[$i]->Cuit_relacionado            = $value->Cuit_relacionado;
                        $persona->vinculados_segun_bcra[$i]->cantidad_cheques_firmados   = $value->cantidad;
                        $persona->vinculados_segun_bcra[$i]->cantidad_cheques_totales    = $value->total_cheques;
                        unset($cheques[$key]);
                        $i+=1;
                    } elseif( $idioma == 'ENG' ){
                        // FALTA TRADUCIR 
                        $persona->representatives_with_banking_system[$i] = new \stdClass();
                        $persona->representatives_with_banking_system[$i]->nombre_persona_firmante     = $value->nombre_persona_firmante;
                        $persona->representatives_with_banking_system[$i]->cuit_firmante               = $value->cuit_firmante;
                        $persona->representatives_with_banking_system[$i]->nombre_persona_relacionado  = $value->nombre_persona_relacionado;
                        $persona->representatives_with_banking_system[$i]->Cuit_relacionado            = $value->Cuit_relacionado;
                        $persona->representatives_with_banking_system[$i]->cantidad_cheques_firmados   = $value->cantidad;
                        $persona->representatives_with_banking_system[$i]->cantidad_cheques_totales    = $value->total_cheques;
                        unset($cheques[$key]);
                        $i+=1;
                    }
                  }else{
                    unset($cheques[$key]->idp);
                    unset($cheques[$key]->idppr);
                    unset($cheques[$key]->cantidad);
                    unset($cheques[$key]->total_cheques);
                  }
                }
               
                if( $idioma == 'SPA' ){
                    $persona->cheques = $cheques;
                } elseif( $idioma == 'ENG' ){
                    $persona->bounced_checks = $cheques;
                }
        */

        $cheques_ordenados = [];
        $cheques = SQLConnection::backendStoreProcedure('obtener_cheques', array($cuit));
        /*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;
        }

        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;
        }
        // -------------
        if (!isset($cuadro_cheques_totales['2empresa']['LEVANTADOS']['SIN FONDOS'])) {
            $cuadro_cheques_totales['2empresa']['LEVANTADOS']['SIN FONDOS'] = new \stdClass();
            $cuadro_cheques_totales['2empresa']['LEVANTADOS']['SIN FONDOS']->cantidad = 0;
            $cuadro_cheques_totales['2empresa']['LEVANTADOS']['SIN FONDOS']->monto = 0;
        }
        if (!isset($cuadro_cheques_totales['2empresa']['LEVANTADOS']['DEFECTOS FORMALES'])) {
            $cuadro_cheques_totales['2empresa']['LEVANTADOS']['DEFECTOS FORMALES'] = new \stdClass();
            $cuadro_cheques_totales['2empresa']['LEVANTADOS']['DEFECTOS FORMALES']->cantidad = 0;
            $cuadro_cheques_totales['2empresa']['LEVANTADOS']['DEFECTOS FORMALES']->monto = 0;
        }

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

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

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

        if (!isset($cuadro_cheques_totales['2empresa']['CHEQUES']['DEFECTOS FORMALES'])) {
            $cuadro_cheques_totales['2empresa']['CHEQUES']['DEFECTOS FORMALES'] = new \stdClass();
            $cuadro_cheques_totales['2empresa']['CHEQUES']['DEFECTOS FORMALES']->cantidad = 0;
            $cuadro_cheques_totales['2empresa']['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']);
        }

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

        if ($cheques || $cheques_vinculaciones_todas) {
            foreach ($cheques as $key => $cheque) {
                $cheques_ordenados[$cheque->tipo][] = $cheque;
            }
            if ($cheques_vinculaciones_todas) {
                foreach ($cheques_vinculaciones_todas as $key => $vinculacion_anterior) {
                    $vinculacion_encontrada = false;
                    if (isset($cheques_ordenados['vinculaciones'])) {
                        foreach ($cheques_ordenados['vinculaciones'] as $key => $vinculacion) {
                            if ($vinculacion_anterior->cuit_firmante == $vinculacion->cuit_firmante) {
                                $vinculacion_encontrada = true;
                            }
                        }
                    }
                    if ($vinculacion_encontrada === false) {
                        $vinculacion_anterior->cantidad = 0;
                        $cheques_ordenados['vinculaciones'][] = $vinculacion_anterior;
                    }
                }
            }
        }
        $cheques_ordenados['cantidad_propios'] = 0;
        $cheques_ordenados['cantidad_propios'] += isset($cheques_ordenados['propio'][0]->total_cheques) ? $cheques_ordenados['propio'][0]->total_cheques : 0;
        $cheques_ordenados['cantidad_propios'] += isset($cheques_ordenados['a_nombre_de_empresa'][0]->total_cheques) ? $cheques_ordenados['a_nombre_de_empresa'][0]->total_cheques : 0;
        $cheques_ordenados['cantidad_empresas'] = isset($cheques_ordenados['empresa']) ? sizeof($cheques_ordenados['empresa']) : 0;
        $cheques_ordenados['cantidad_vinculaciones'] = isset($cheques_ordenados['vinculaciones']) ? sizeof($cheques_ordenados['vinculaciones']) : 0;

        $cheques = $cheques_ordenados;

        $grafico_cheques = SQLConnection::graficoCardChequesRechazados($cuit);
        $grafico_cheques = self::generarGraficoCheques($grafico_cheques, 24);


        $fisica_juridica = Misc::tipoPersona($cuit);
        $persona_fisica = ($fisica_juridica == 'F') ? true : false;


        $cantidad_cheques = new \StdClass;
        if (!($persona_fisica) && empty($cheques)) {
            //$cantidad_cheques = 'No se registran Cheques Rechazados'; 
            $cantidad_cheques = 0;
        }
        $cantidad_cheques_empresa = new \StdClass;
        $cheques_a_nombre_empresa = [];

        if (isset($cheques['a_nombre_de_empresa'])) {
            $cantidad_cheques_empresa = $cheques['cantidad_propios'];
            foreach ($cheques['a_nombre_de_empresa'] as $key => $cheque) {
                $cheques_a_nombre_empresa[$key] = new \StdClass();
                $cheques_a_nombre_empresa[$key]->nro_cheque = $cheque->nro_cheque;
                $cheques_a_nombre_empresa[$key]->importe = $cheque->importe;
                $cheques_a_nombre_empresa[$key]->importe_format = '$ ' . number_format($cheque->importe, 2, '.', ' ');
                $cheques_a_nombre_empresa[$key]->fecha_rechazo = $cheque->fecha_rechazo;
                $cheques_a_nombre_empresa[$key]->fecha_levantamiento = $cheque->fecha_levantamiento;
                $cheques_a_nombre_empresa[$key]->fecha_pago_multa = $cheque->fecha_pago;
                $cheques_a_nombre_empresa[$key]->causal = $cheque->causa;
            }
        } else {
            //$cantidad_cheques_empresa = 'No se registran Cheques Rechazados'; 
            $cantidad_cheques_empresa = 0;
        }

        $cantidad_cheques_propios = new \StdClass;
        $cheques_propios = [];


        if (!isset($cheques['a_nombre_de_empresa']) && !isset($cheques['propio']) && !isset($cheques['empresa'])) {
            //$cantidad_cheques_propios = 'No se registran Cheques Rechazados'; 
            $cantidad_cheques_propios = 0;
        } else {
            if (isset($cheques['propio'])) {
                $cantidad_cheques_propios = $cheques['cantidad_propios'];
                foreach ($cheques['propio'] as $key => $cheque) {
                    $cheques_propios[$key] = new \StdClass();
                    $cheques_propios[$key]->nro_cheque = $cheque->nro_cheque;
                    $cheques_propios[$key]->firmante = $cheque->nombre_persona_firmante ?? 'No Informa';
                    $cheques_propios[$key]->importe = $cheque->importe;
                    $cheques_propios[$key]->importe_format = '$ ' . number_format($cheque->importe, 2, '.', ' ');
                    $cheques_propios[$key]->fecha_rechazo = $cheque->fecha_rechazo;
                    $cheques_propios[$key]->fecha_levantamiento = $cheque->fecha_levantamiento;
                    $cheques_propios[$key]->fecha_pago_multa = $cheque->fecha_pago;
                    $cheques_propios[$key]->causal = $cheque->causa;
                }

            } else {
                //$cantidad_cheques_propios = 'No se registran cheques rechazados en cuentas Personales'; 
                $cantidad_cheques_propios = 0;
            }
        }

        $cuentas_personales = new \StdClass();
        $cuentas_personales->sin_fondos = new \StdClass();
        $cuentas_personales->sin_fondos->sin_abonar = new \StdClass();
        $cuentas_personales->sin_fondos->levantados = new \StdClass();
        $cuentas_personales->sin_fondos->totales = new \StdClass();

        $cuentas_personales->defectos_formales = new \StdClass();
        $cuentas_personales->defectos_formales->sin_abonar = new \StdClass();
        $cuentas_personales->defectos_formales->levantados = new \StdClass();
        $cuentas_personales->defectos_formales->totales = new \StdClass();

        $cuentas_personales->sin_fondos->sin_abonar->cantidad = new \StdClass();
        $cuentas_personales->sin_fondos->sin_abonar->porcentaje_cantidad = new \StdClass();
        $cuentas_personales->sin_fondos->sin_abonar->monto = new \StdClass();
        $cuentas_personales->sin_fondos->sin_abonar->porcentaje_monto = new \StdClass();

        $cuentas_personales->sin_fondos->levantados->cantidad = new \StdClass();
        $cuentas_personales->sin_fondos->levantados->porcentaje_cantidad = new \StdClass();
        $cuentas_personales->sin_fondos->levantados->monto = new \StdClass();
        $cuentas_personales->sin_fondos->levantados->porcentaje_monto = new \StdClass();

        $cuentas_personales->sin_fondos->totales->cantidad = new \StdClass();
        $cuentas_personales->sin_fondos->totales->porcentaje_cantidad = new \StdClass();
        $cuentas_personales->sin_fondos->totales->monto = new \StdClass();
        $cuentas_personales->sin_fondos->totales->porcentaje_monto = new \StdClass();

        $cuentas_personales->defectos_formales->sin_abonar->cantidad = new \StdClass();
        $cuentas_personales->defectos_formales->sin_abonar->porcentaje_cantidad = new \StdClass();
        $cuentas_personales->defectos_formales->sin_abonar->monto = new \StdClass();
        $cuentas_personales->defectos_formales->sin_abonar->porcentaje_monto = new \StdClass();

        $cuentas_personales->defectos_formales->levantados->cantidad = new \StdClass();
        $cuentas_personales->defectos_formales->levantados->porcentaje_cantidad = new \StdClass();
        $cuentas_personales->defectos_formales->levantados->monto = new \StdClass();
        $cuentas_personales->defectos_formales->levantados->porcentaje_monto = new \StdClass();

        $cuentas_personales->defectos_formales->totales->cantidad = new \StdClass();
        $cuentas_personales->defectos_formales->totales->porcentaje_cantidad = new \StdClass();
        $cuentas_personales->defectos_formales->totales->monto = new \StdClass();
        $cuentas_personales->defectos_formales->totales->porcentaje_monto = new \StdClass();


        if (isset($cuadro_cheques_totales['1propio']['SIN LEVANTAR'])) {
            foreach ($cuadro_cheques_totales['1propio']['SIN LEVANTAR'] as $key => $value) {
                if ($key == 'SIN FONDOS') {
                    $cuentas_personales->sin_fondos->sin_abonar->cantidad = $value->cantidad ?? 0;
                    $cuentas_personales->sin_fondos->sin_abonar->porcentaje_cantidad = ($total_cheques['1propio']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                        : round(100 / $total_cheques['1propio']['cantidad'] * $value->cantidad);
                    $cuentas_personales->sin_fondos->sin_abonar->monto = $value->monto ?? 0;
                    $cuentas_personales->sin_fondos->sin_abonar->porcentaje_monto = ($total_cheques['1propio']['monto'] == 0 || $value->monto == 0) ? 0
                        : round(100 / $total_cheques['1propio']['monto'] * $value->monto);
                }
            }

            foreach ($cuadro_cheques_totales['1propio']['SIN LEVANTAR'] as $key => $value) {
                if ($key == 'DEFECTOS FORMALES') {
                    $cuentas_personales->defectos_formales->sin_abonar->cantidad = $value->cantidad ?? 0;
                    $cuentas_personales->defectos_formales->sin_abonar->porcentaje_cantidad = ($total_cheques['1propio']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                        : round(100 / $total_cheques['1propio']['cantidad'] * $value->cantidad);
                    $cuentas_personales->defectos_formales->sin_abonar->monto = $value->monto ?? 0;
                    $cuentas_personales->defectos_formales->sin_abonar->porcentaje_monto = ($total_cheques['1propio']['monto'] == 0 || $value->monto == 0) ? 0
                        : round(100 / $total_cheques['1propio']['monto'] * $value->monto);
                }
            }
        }
        if (isset($cuadro_cheques_totales['1propio']['LEVANTADOS'])) {
            foreach ($cuadro_cheques_totales['1propio']['LEVANTADOS'] as $key => $value) {
                if ($key == 'SIN FONDOS') {
                    $cuentas_personales->sin_fondos->levantados->cantidad = $value->cantidad ?? 0;
                    $cuentas_personales->sin_fondos->levantados->porcentaje_cantidad = ($total_cheques['1propio']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                        : round(100 / $total_cheques['1propio']['cantidad'] * $value->cantidad);
                    $cuentas_personales->sin_fondos->levantados->monto = $value->monto ?? 0;
                    $cuentas_personales->sin_fondos->levantados->porcentaje_monto = ($total_cheques['1propio']['monto'] == 0 || $value->monto == 0) ? 0
                        : round(100 / $total_cheques['1propio']['monto'] * $value->monto);
                }
            }

            foreach ($cuadro_cheques_totales['1propio']['LEVANTADOS'] as $key => $value) {
                if ($key == 'DEFECTOS FORMALES') {
                    $cuentas_personales->defectos_formales->levantados->cantidad = $value->cantidad ?? 0;
                    $cuentas_personales->defectos_formales->levantados->porcentaje_cantidad = ($total_cheques['1propio']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                        : round(100 / $total_cheques['1propio']['cantidad'] * $value->cantidad);
                    $cuentas_personales->defectos_formales->levantados->monto = $value->monto ?? 0;
                    $cuentas_personales->defectos_formales->levantados->porcentaje_monto = ($total_cheques['1propio']['monto'] == 0 || $value->monto == 0) ? 0
                        : round(100 / $total_cheques['1propio']['monto'] * $value->monto);
                }
            }
        }
        if (isset($cuadro_cheques_totales['1propio']['CHEQUES'])) {
            foreach ($cuadro_cheques_totales['1propio']['CHEQUES'] as $key => $value) {
                if ($key == 'SIN FONDOS') {
                    $cuentas_personales->sin_fondos->totales->cantidad = $value->cantidad ?? 0;
                    $cuentas_personales->sin_fondos->totales->porcentaje_cantidad = ($total_cheques['1propio']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                        : round(100 / $total_cheques['1propio']['cantidad'] * $value->cantidad);
                    $cuentas_personales->sin_fondos->totales->monto = $value->monto ?? 0;
                    $cuentas_personales->sin_fondos->totales->porcentaje_monto = ($total_cheques['1propio']['monto'] == 0 || $value->monto == 0) ? 0
                        : round(100 / $total_cheques['1propio']['monto'] * $value->monto);
                }
            }
            foreach ($cuadro_cheques_totales['1propio']['CHEQUES'] as $key => $value) {
                if ($key == 'DEFECTOS FORMALES') {
                    $cuentas_personales->defectos_formales->totales->cantidad = $value->cantidad ?? 0;
                    $cuentas_personales->defectos_formales->totales->porcentaje_cantidad = ($total_cheques['1propio']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                        : round(100 / $total_cheques['1propio']['cantidad'] * $value->cantidad);
                    $cuentas_personales->defectos_formales->totales->monto = $value->monto ?? 0;
                    $cuentas_personales->defectos_formales->totales->porcentaje_monto = ($total_cheques['1propio']['monto'] == 0 || $value->monto == 0) ? 0
                        : round(100 / $total_cheques['1propio']['monto'] * $value->monto);
                }
            }
        }

        $cantidad_cheques_persona_juridica = new \StdClass;
        $cantidad_cheques_persona_juridica = $cheques_ordenados['cantidad_empresas'];
        $cheques_persona_juridica = [];

        if ($persona_fisica && isset($cheques['empresa'])) {
            foreach ($cheques['empresa'] as $key => $cheque) {
                $cheques_persona_juridica[$key] = new \StdClass();
                $cheques_persona_juridica[$key]->nro_cheque = $cheque->nro_cheque;
                $cheques_persona_juridica[$key]->empresa_cuit = $cheque->Cuit_relacionado;
                $cheques_persona_juridica[$key]->empresa = $cheque->nombre_persona_relacionado;
                $cheques_persona_juridica[$key]->fecha_rechazo = $cheque->fecha_rechazo;
                $cheques_persona_juridica[$key]->fecha_levantamiento = $cheque->fecha_levantamiento;
                $cheques_persona_juridica[$key]->fecha_pago_multa = $cheque->fecha_pago;
                $cheques_persona_juridica[$key]->causal = $cheque->causa;
            }

        }

        $cuentas_personas_juridicas = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->sin_abonar = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->levantados = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->totales = new \StdClass();

        $cuentas_personas_juridicas->defectos_formales = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->sin_abonar = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->levantados = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->totales = new \StdClass();

        $cuentas_personas_juridicas->sin_fondos->sin_abonar->cantidad = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->sin_abonar->porcentaje_cantidad = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->sin_abonar->monto = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->sin_abonar->porcentaje_monto = new \StdClass();

        $cuentas_personas_juridicas->sin_fondos->levantados->cantidad = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->levantados->porcentaje_cantidad = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->levantados->monto = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->levantados->porcentaje_monto = new \StdClass();

        $cuentas_personas_juridicas->sin_fondos->totales->cantidad = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->totales->porcentaje_cantidad = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->totales->monto = new \StdClass();
        $cuentas_personas_juridicas->sin_fondos->totales->porcentaje_monto = new \StdClass();

        $cuentas_personas_juridicas->defectos_formales->sin_abonar->cantidad = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->sin_abonar->porcentaje_cantidad = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->sin_abonar->monto = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->sin_abonar->porcentaje_monto = new \StdClass();

        $cuentas_personas_juridicas->defectos_formales->levantados->cantidad = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->levantados->porcentaje_cantidad = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->levantados->monto = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->levantados->porcentaje_monto = new \StdClass();

        $cuentas_personas_juridicas->defectos_formales->totales->cantidad = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->totales->porcentaje_cantidad = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->totales->monto = new \StdClass();
        $cuentas_personas_juridicas->defectos_formales->totales->porcentaje_monto = new \StdClass();


        if ($persona_fisica) {
            if (isset($cuadro_cheques_totales['2empresa']['SIN LEVANTAR'])) {
                foreach ($cuadro_cheques_totales['2empresa']['SIN LEVANTAR'] as $key => $value) {
                    if ($key == 'SIN FONDOS') {
                        $cuentas_personas_juridicas->sin_fondos->sin_abonar->cantidad = $value->cantidad ?? 0;
                        $cuentas_personas_juridicas->sin_fondos->sin_abonar->porcentaje_cantidad = ($total_cheques['2empresa']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['cantidad'] * $value->cantidad);
                        $cuentas_personas_juridicas->sin_fondos->sin_abonar->monto = $value->monto ?? 0;
                        $cuentas_personas_juridicas->sin_fondos->sin_abonar->porcentaje_monto = ($total_cheques['2empresa']['monto'] == 0 || $value->monto == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['monto'] * $value->monto);
                    }
                }
                foreach ($cuadro_cheques_totales['2empresa']['SIN LEVANTAR'] as $key => $value) {
                    if ($key == 'DEFECTOS FORMALES') {
                        $cuentas_personas_juridicas->defectos_formales->sin_abonar->cantidad = $value->cantidad ?? 0;
                        $cuentas_personas_juridicas->defectos_formales->sin_abonar->porcentaje_cantidad = ($total_cheques['2empresa']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['cantidad'] * $value->cantidad);
                        $cuentas_personas_juridicas->defectos_formales->sin_abonar->monto = $value->monto ?? 0;
                        $cuentas_personas_juridicas->defectos_formales->sin_abonar->porcentaje_monto = ($total_cheques['2empresa']['monto'] == 0 || $value->monto == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['monto'] * $value->monto);
                    }
                }
            }
            if (isset($cuadro_cheques_totales['2empresa']['LEVANTADOS'])) {
                foreach ($cuadro_cheques_totales['2empresa']['LEVANTADOS'] as $key => $value) {
                    if ($key == 'SIN FONDOS') {
                        $cuentas_personas_juridicas->sin_fondos->levantados->cantidad = $value->cantidad ?? 0;
                        $cuentas_personas_juridicas->sin_fondos->levantados->porcentaje_cantidad = ($total_cheques['2empresa']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['cantidad'] * $value->cantidad);
                        $cuentas_personas_juridicas->sin_fondos->levantados->monto = $value->monto ?? 0;
                        $cuentas_personas_juridicas->sin_fondos->levantados->porcentaje_monto = ($total_cheques['2empresa']['monto'] == 0 || $value->monto == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['monto'] * $value->monto);
                    }
                }
                foreach ($cuadro_cheques_totales['2empresa']['LEVANTADOS'] as $key => $value) {
                    if ($key == 'DEFECTOS FORMALES') {
                        $cuentas_personas_juridicas->defectos_formales->levantados->cantidad = $value->cantidad ?? 0;
                        $cuentas_personas_juridicas->defectos_formales->levantados->porcentaje_cantidad = ($total_cheques['2empresa']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['cantidad'] * $value->cantidad);
                        $cuentas_personas_juridicas->defectos_formales->levantados->monto = $value->monto ?? 0;
                        $cuentas_personas_juridicas->defectos_formales->levantados->porcentaje_monto = ($total_cheques['2empresa']['monto'] == 0 || $value->monto == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['monto'] * $value->monto);
                    }
                }
            }
            if (isset($cuadro_cheques_totales['2empresa']['CHEQUES'])) {
                foreach ($cuadro_cheques_totales['2empresa']['CHEQUES'] as $key => $value) {
                    if ($key == 'SIN FONDOS') {
                        $cuentas_personas_juridicas->sin_fondos->totales->cantidad = $value->cantidad;
                        $cuentas_personas_juridicas->sin_fondos->totales->porcentaje_cantidad = ($total_cheques['2empresa']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['cantidad'] * $value->cantidad);
                        $cuentas_personas_juridicas->sin_fondos->totales->monto = $value->monto;
                        $cuentas_personas_juridicas->sin_fondos->totales->porcentaje_monto = ($total_cheques['2empresa']['monto'] == 0 || $value->monto == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['monto'] * $value->monto);
                    }
                }
                foreach ($cuadro_cheques_totales['2empresa']['CHEQUES'] as $key => $value) {
                    if ($key == 'DEFECTOS FORMALES') {
                        $cuentas_personas_juridicas->defectos_formales->totales->cantidad = $value->cantidad;
                        $cuentas_personas_juridicas->defectos_formales->totales->porcentaje_cantidad = ($total_cheques['2empresa']['cantidad'] == 0 || $value->cantidad == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['cantidad'] * $value->cantidad);
                        $cuentas_personas_juridicas->defectos_formales->totales->monto = $value->monto;
                        $cuentas_personas_juridicas->defectos_formales->totales->porcentaje_monto = ($total_cheques['2empresa']['monto'] == 0 || $value->monto == 0) ? 0
                            : round(100 / $total_cheques['2empresa']['monto'] * $value->monto);
                    }
                }
            }
        }
        //$persona->cantidad_cheques = $cantidad_cheques; 

        // Persona Juridica
        $persona->persona_juridica = new \StdClass();
        $persona->persona_fisica = new \StdClass();
        if (!$persona_fisica) {
            $persona->persona_juridica->cantidad_cheques = $cantidad_cheques_empresa;
            $persona->persona_juridica->detalle_cheques = $cheques_a_nombre_empresa;
        } else {
            // Persona Fisica
            $persona->persona_fisica->cantidad_cheques_cuentas_propias = $cantidad_cheques_propios;
            $persona->persona_fisica->detalle_cheques_cuentas_propias = $cheques_propios;
            $persona->persona_fisica->cantidad_cheques_cuentas_persona_juridica = $cantidad_cheques_persona_juridica;
            $persona->persona_fisica->cheques_cuentas_persona_juridica = $cheques_persona_juridica;
        }

        // Cuadros resumen
        if ($con_resumen == 'S') {
            if (!$persona_fisica) {
                $persona->persona_juridica->resumen_cheques = [];
                if ($cantidad_cheques_empresa > 0) {
                    $persona->persona_juridica->resumen_cheques = $cuentas_personales;
                }
            } else {
                $persona->persona_fisica->resumen_cheques_cuentas_propias = [];
                $persona->persona_fisica->resumen_cheques_cuentas_persona_juridica = [];
                if ($cantidad_cheques_propios > 0) {
                    $persona->persona_fisica->resumen_cheques_cuentas_propias = $cuentas_personales;
                }
                if ($cantidad_cheques_persona_juridica > 0) {
                    $persona->persona_fisica->resumen_cheques_cuentas_persona_juridica = $cuentas_personas_juridicas;
                }
            }
        }

        $vinculados_segun_bcra = SQLConnection::backendStoreProcedure('obtener_vinculados_segun_BCRA', array($cuit));
        $persona->vinculados_segun_bcra = [];
        foreach ($vinculados_segun_bcra as $key => $value) {
            if ($idioma == 'SPA') {
                $persona->vinculados_segun_bcra[$key] = new \stdClass();
                $persona->vinculados_segun_bcra[$key]->nombre_persona_firmante = $value->nombre_persona_firmante;
                $persona->vinculados_segun_bcra[$key]->cuit_firmante = $value->cuit_firmante;
                $persona->vinculados_segun_bcra[$key]->fecha_relacion = $value->fecha_relacion;
            } elseif ($idioma == 'ENG') {
                // FALTA TRADUCIR 
                $persona->representatives_with_banking_system[$key] = new \stdClass();
                $persona->representatives_with_banking_system[$key]->nombre_persona_firmante = $value->nombre_persona_firmante;
                $persona->representatives_with_banking_system[$key]->cuit_firmante = $value->cuit_firmante;
                $persona->representatives_with_banking_system[$key]->date = $value->fecha_relacion;
            }
        }
        return json_encode($persona);
    }

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

    /* Seccion Comex */
    // FALTA TRADUCCION 
    public static function ICComex($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }

        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
        }

        /*
              if( $idioma == 'SPA' ){
                  $persona->comex = new \stdClass();
              } elseif( $idioma == 'ENG' ){
                  $persona->comex = new \stdClass();
              }

              $impo     =  SQLConnection::backendStoreProcedure('obtener_comex', array($cuit),'select');
              $pais     =  SQLConnection::backendStoreProcedure('obtener_comex_pais', array($cuit),'select');
              $rubros   =  SQLConnection::backendStoreProcedure('obtener_comex_rubros', array($cuit),'select');
              $totales  =  SQLConnection::backendStoreProcedure('obtener_comex_totales', array($cuit),'selectOne');
              if( $idioma == 'SPA' ){
                  $persona->comex->importaciones = [];
                  if(!empty($impo)){
                  foreach ($impo as $key => $value) {
                      $persona->comex->importaciones[$key] = new \StdClass();
                      $persona->comex->importaciones[$key]->fecha = $value->date;
                      $persona->comex->importaciones[$key]->consumo = $value->consumo;
                      $persona->comex->importaciones[$key]->deposito = $value->deposito;
                      $persona->comex->importaciones[$key]->zonafranca = $value->zonafranca;
                      $persona->comex->importaciones[$key]->temporal = $value->temporal;
                      $persona->comex->importaciones[$key]->total = $value->total;
                  }
                  }
              } elseif( $idioma == 'ENG' ){
                  // FALTA TRADUCIR 
                  $persona->comex->imports = [];
                  if(!empty($impo)){
                  foreach ($impo as $key => $value) {
                      $persona->comex->imports[$key] = new \StdClass();
                      $persona->comex->imports[$key]->fecha = $value->date;
                      $persona->comex->imports[$key]->consumo = $value->consumo;
                      $persona->comex->imports[$key]->deposito = $value->deposito;
                      $persona->comex->imports[$key]->zonafranca = $value->zonafranca;
                      $persona->comex->imports[$key]->temporal = $value->temporal;
                      $persona->comex->imports[$key]->total = $value->total;
                  }
                  }
              }
              if(!empty($pais)){
                foreach ($pais as $key => $value) {
                 $persona->comex->pais[$key] = new \StdClass();
                 $persona->comex->pais[$key]->tipo_operacion  = $value->tipo_operacion;
                 $persona->comex->pais[$key]->fob             = $value->fob;
                 // $persona->comex->pais[$key]->nombre             = $value->nombre; // estaba en www2
                }
              }
              if(!empty($rubros)){

                foreach ($rubros as $key => $value) {
                 $persona->comex->rubros[$key] = new \StdClass();
                 $persona->comex->rubros[$key]->tipo_operacion  = $value->tipo_operacion;
                 $persona->comex->rubros[$key]->descripcion     = $value->descripcion;
                 $persona->comex->rubros[$key]->fob             = $value->fob;
                 $persona->comex->rubros[$key]->posicion        = $value->posicion;
                }
              }
              if(!empty($totales) && ($totales->total_impo !== NULL || $totales->total_expo !== NULL)){
                  if( $idioma == 'SPA' ){
                      $persona->comex->total = new \StdClass();
                      $persona->comex->total->total_impo  = $totales->total_impo;
                      $persona->comex->total->total_expo  = $totales->total_expo;
                  }elseif( $idioma == 'ENG' ){
                      $persona->comex->total = new \StdClass();
                      $persona->comex->total->total_imports  = $totales->total_impo;
                      $persona->comex->total->total_exports  = $totales->total_expo;
                  }
              }
              */
        $meses = 24;
        $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);
        $fisica_juridica = Misc::tipoPersona($cuit);
        $tipo_persona = $fisica_juridica;

        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 = array();
            $total_temporal = array();
            $total_deposito = array();
            $total_zonafranca = array();
            $total_totales = array();
            foreach ($comex_impo as $key => $impo) {
                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);
                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 ($graf->total != 0) {
                            $number++;
                            $comex_grafico_impo[$number] = $impo;

                        } else {
                            $comex_grafico_impo[$number] = $impo;
                            $number++;
                        }
                    }
                }
            }

            $total_consumo = array_sum($total_consumo);
            $total_temporal = array_sum($total_temporal);
            $total_deposito = array_sum($total_deposito);
            $total_zonafranca = array_sum($total_zonafranca);
            $total_totales = array_sum($total_totales);
        }
        $comex_expo = SQLConnection::obtenerGraficoExportaciones($cuit);
        $periodo_procesado = SQLConnection::obtenerUltimoPeriodoProcesado('comex_pais_rubro');
        $comex_grafico_exportaciones = [];
        $comex_grafico_exportaciones[] = new \stdClass;

        if ($comex_expo) {
            for ($i = 0; $i <= 24; $i++) {
                $periodos_null[$i] = date("Ym", strtotime($periodo_procesado . " -$i months"));
                $comex_grafico_exportaciones[$i] = new \stdClass;
                $comex_grafico_exportaciones[$i]->valor_mensual = 0;
                $comex_grafico_exportaciones[$i]->periodo = $periodos_null[$i];
            }

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

            foreach ($comex_grafico_exportaciones as $key => $expo) {
                $comex_grafico_exportaciones[$key]->anio = substr($expo->periodo, 0, 4);
                $comex_grafico_exportaciones[$key]->mes = substr($expo->periodo, 4, 6) - 1;
            }
        }
        $comex_paises = SQLConnection::obtenerComexPais($cuit);
        $comex_rubros = SQLConnection::obtenerComexRubros($cuit);
        $comex_totales = SQLConnection::obtenerComexTotales($cuit, 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;
        }

        $persona->periodo = 'ultimos ' . $meses . ' meses';
        $persona->card_importaciones = new \stdClass();
        $persona->card_exportaciones = new \stdClass();
        if ((isset($comex_totales->total_expo) && ($comex_totales->total_expo > 0)) or ((isset($comex_totales->total_impo) && ($comex_totales->total_impo > 0)))) {
            $persona->card_importaciones->total_usd = round($comex_totales->total_impo);
            $persona->card_importaciones->total_format = 'USD ' . number_format($comex_totales->total_impo, 0, '.', ' ');

            $persona->card_exportaciones->total_usd = round($comex_totales->total_expo);
            $persona->card_exportaciones->total_format = 'USD ' . number_format($comex_totales->total_expo, 0, '.', ' ');
        }

        // IMPORTACIONES 
        $persona->importaciones = [];
        foreach ($comex_impo as $key => $info) {
            $persona->importaciones[$key] = new \StdClass();
            $persona->importaciones[$key]->periodo = $info->mes . '/' . $info->anio;
            $persona->importaciones[$key]->consumo = round($info->consumo);
            $persona->importaciones[$key]->temporal = round($info->temporal);
            $persona->importaciones[$key]->deposito = round($info->deposito);
            $persona->importaciones[$key]->zonafranca = round($info->zonafranca);
            $persona->importaciones[$key]->total = round($info->total);
        }

        // Importaciones por pais
        $persona->importaciones_por_pais = [];
        foreach ($comex_pais_impo as $key => $expo) {
            $persona->importaciones_por_pais[$key] = new \StdClass();
            $persona->importaciones_por_pais[$key]->pais = $expo->nombre ?? '';
            $persona->importaciones_por_pais[$key]->porcentaje = '';
            if ($expo->nombre != 'Totales' && $expo->fob > 0) {
                $persona->importaciones_por_pais[$key]->porcentaje = ($total_pais_impo == 0) ? 0 : number_format(($expo->fob * 100) / $total_pais_impo, 2);
            }
            $persona->importaciones_por_pais[$key]->fob_total = round($expo->fob);
        }


        // Rubros importaciones 
        $persona->importaciones_por_rubro = [];

        foreach ($comex_rubro_impo as $key => $expo) {
            $persona->importaciones_por_rubro[$key] = new \StdClass();
            $persona->importaciones_por_rubro[$key]->nombre = $expo->descripcion ?? '';
            $persona->importaciones_por_rubro[$key]->posicion = $expo->posicion ?? '';
            $persona->importaciones_por_rubro[$key]->porcentaje = '';
            if ($expo->descripcion != 'Totales' && $expo->fob > 0) {
                $persona->importaciones_por_rubro[$key]->porcentaje = ($total_rubro_impo == 0) ? 0 : number_format(($expo->fob * 100) / $total_rubro_impo, 2);
            }
            $persona->importaciones_por_rubro[$key]->fob_total = round($expo->fob);

        }

        // EXPORTACIONES 
        // Exportaciones por pais
        $persona->exportaciones_por_pais = [];
        foreach ($comex_pais_expo as $key => $expo) {
            $persona->exportaciones_por_pais[$key] = new \StdClass();
            $persona->exportaciones_por_pais[$key]->pais = $expo->nombre ?? '';
            $persona->exportaciones_por_pais[$key]->porcentaje = '';
            if ($expo->nombre != 'Totales' && $expo->fob > 0) {
                $persona->exportaciones_por_pais[$key]->porcentaje = ($total_pais_expo == 0) ? 0 : number_format(($expo->fob * 100) / $total_pais_expo, 2);
            }
            $persona->exportaciones_por_pais[$key]->fob_total = round($expo->fob);

        }

        // Rubros exportaciones 
        $persona->exportaciones_por_rubro = [];

        foreach ($comex_rubro_expo as $key => $expo) {
            $persona->exportaciones_por_rubro[$key] = new \StdClass();
            $persona->exportaciones_por_rubro[$key]->nombre = $expo->descripcion ?? '';
            $persona->exportaciones_por_rubro[$key]->posicion = $expo->posicion ?? '';
            $persona->exportaciones_por_rubro[$key]->porcentaje = '';
            if ($expo->descripcion != 'Totales' && $expo->fob > 0) {
                $persona->exportaciones_por_rubro[$key]->porcentaje = ($total_rubro_expo == 0) ? 0 : number_format(($expo->fob * 100) / $total_rubro_expo, 2);
            }
            $persona->exportaciones_por_rubro[$key]->fob_total = round($expo->fob);

        }
        return json_encode($persona);
    }

    /* Secciones Legales */
    public static function ICLegales($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '', $cantidad = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        if (!$cantidad) {
            $cantidad = Request::input('cantidad') ?? 500;
            if (!is_numeric($cantidad)) {
                $cantidad = 500;
            }
        }
        // Por defualt se van a mostrar un maximo de 500 juicios por demandado y 500 por actor. 
        // Si se manda como parametro mostrar_todos_los_juicios = true, entonces mostrara todo.
        $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;
        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
            $persona->comentario = '';
            if (!$mostrar_todos_los_juicios) {
                $persona->comentario = ' Se muestra un máximo de ' . $cantidad . ' registros.';
            }
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
            $persona->comment = '';
            if (!$mostrar_todos_los_juicios) {
                $persona->comment = 'A maximum of ' . $cantidad . ' records are displayed.';
            }
        }

        $actor = [];
        $demandados = [];
        if ($mostrar_todos_los_juicios) {
            $demandados = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'D', $cuit, 60, 1));
            $actor = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'A', $cuit, 60, 1));
        } else {
            $demandados = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'D', $cuit, 60, 1, $cantidad));
            $actor = SQLConnection::backendStoreProcedure('obtener_juicios_demandado_actor', array(null, 'A', $cuit, 60, 1, $cantidad));
        }

        $otros_juicios_comerciales = [];
        $concursos_quiebras = [];
        $pedidos_quiebra = [];

        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;
                }
            }
        }
        $remates = [];
        $cuit_enmascarado = $cuit;
        $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);
        $dni = '';
        $fisica_juridica = Misc::tipoPersona($cuit);
        $persona_fisica = ($fisica_juridica == 'F') ? true : false;
        if ($persona_fisica) {
            $dni = (int) substr($cuit, 2, -1);
        }
        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 ($idioma == 'SPA') {
            $persona->como_demandado = new \StdClass();
            $persona->como_demandado->concursos_quiebras = [];
            foreach ($concursos_quiebras as $key => $value) {
                $persona->como_demandado->concursos_quiebras[$key] = new \StdClass();
                $persona->como_demandado->concursos_quiebras[$key]->tipo = $value->nombre_causa ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->fecha = $value->fecha_causa_dmy ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->radicacion = $value->radicacion ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->juzgado = $value->juzgado ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->secretaria = $value->secretaria ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->localidad = $value->localidad ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->cuit_otra_parte = $value->cuit_otra_parte ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->nombre_otra_parte = $value->nombre_otra_parte ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->observaciones = $value->observaciones ?? '';
            }

            $persona->como_demandado->remates = [];
            foreach ($remates as $remate) {
                $persona->como_demandado->remates[$key] = new \StdClass();
                $persona->como_demandado->remates[$key]->caratula = $remate->tipo ?? '';
                $persona->como_demandado->remates[$key]->fecha = $remate->fecha ?? '';
                $persona->como_demandado->remates[$key]->juzgado = $remate->tipo_juzgado ?? '' + $remate->numero_juzgado ?? '';
                $persona->como_demandado->remates[$key]->secretaria = $remate->numero_secretaria ?? '';
                $persona->como_demandado->remates[$key]->localidad = $remate->localidad ?? '';
                $persona->como_demandado->remates[$key]->expediente = $remate->numero_expediente ?? '';
                $persona->como_demandado->remates[$key]->actor = $remate->actor ?? '';

            }

            $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos = [];
            foreach ($pedidos_quiebra as $key => $juicio) {
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key] = new \StdClass();
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->tipo = $juicio->nombre_causa ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->fecha = $juicio->fecha_causa_dmy ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->localidad = $juicio->localidad ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->observaciones = $juicio->observaciones ?? '' . $juicio->obs ?? '';
            }

            $persona->como_demandado->otros_juicios = [];
            foreach ($otros_juicios_comerciales as $key => $juicio) {
                $persona->como_demandado->otros_juicios[$key] = new \StdClass();
                $persona->como_demandado->otros_juicios[$key]->tipo = $juicio->nombre_causa ?? '';
                $persona->como_demandado->otros_juicios[$key]->fecha = $juicio->fecha_causa_dmy ?? '';
                $persona->como_demandado->otros_juicios[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->como_demandado->otros_juicios[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->como_demandado->otros_juicios[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->como_demandado->otros_juicios[$key]->localidad = $juicio->localidad ?? '';
                $persona->como_demandado->otros_juicios[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->como_demandado->otros_juicios[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->como_demandado->otros_juicios[$key]->observaciones = $juicio->observaciones ?? '' . $juicio->obs ?? '';
            }

            $persona->como_actor = [];
            foreach ($actor as $key => $juicio) {
                $persona->como_actor[$key] = new \StdClass();
                $persona->como_actor[$key]->tipo = $juicio->nombre_causa ?? '';
                $persona->como_actor[$key]->fecha = $juicio->fecha_causa_dmy ?? '';
                $persona->como_actor[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->como_actor[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->como_actor[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->como_actor[$key]->localidad = $juicio->localidad ?? '';
                $persona->como_actor[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->como_actor[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->como_actor[$key]->observaciones = $juicio->observaciones ?? '' . $juicio->obs ?? '';
            }

        } elseif ($idioma == 'ENG') {
            $persona->como_demandado = new \StdClass();

            $persona->como_demandado->concursos_quiebras = [];
            foreach ($concursos_quiebras as $key => $value) {
                $persona->como_demandado->concursos_quiebras[$key] = new \StdClass();
                $persona->como_demandado->concursos_quiebras[$key]->tipo = $value->nombre_causa ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->fecha = $value->fecha_causa_dmy ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->radicacion = $value->radicacion ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->juzgado = $value->juzgado ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->secretaria = $value->secretaria ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->localidad = $value->localidad ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->cuit_otra_parte = $value->cuit_otra_parte ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->nombre_otra_parte = $value->nombre_otra_parte ?? '';
                $persona->como_demandado->concursos_quiebras[$key]->observaciones = $value->observaciones ?? '';
            }

            $persona->como_demandado->remates = [];
            foreach ($remates as $key => $remate) {
                $persona->como_demandado->remates[$key] = new \StdClass();
                $persona->como_demandado->remates[$key]->caratula = $remate->tipo ?? '';
                $persona->como_demandado->remates[$key]->fecha = $remate->fecha ?? '';
                $persona->como_demandado->remates[$key]->juzgado = $remate->tipo_juzgado ?? '' + $remate->numero_juzgado ?? '';
                $persona->como_demandado->remates[$key]->secretaria = $remate->numero_secretaria ?? '';
                $persona->como_demandado->remates[$key]->localidad = $remate->localidad ?? '';
                $persona->como_demandado->remates[$key]->expediente = $remate->numero_expediente ?? '';
                $persona->como_demandado->remates[$key]->actor = $remate->actor ?? '';

            }

            $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos = [];
            foreach ($pedidos_quiebra as $key => $juicio) {
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key] = new \StdClass();
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->tipo = $juicio->nombre_causa ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->fecha = $juicio->fecha_causa_dmy ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->localidad = $juicio->localidad ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->como_demandado->pedidos_quiebra_y_juicios_ejecutivos[$key]->observaciones = $juicio->observaciones ?? '' . $juicio->obs ?? '';
            }

            $persona->como_demandado->otros_juicios = [];
            foreach ($otros_juicios_comerciales as $key => $juicio) {
                $persona->como_demandado->otros_juicios[$key] = new \StdClass();
                $persona->como_demandado->otros_juicios[$key]->tipo = $juicio->nombre_causa ?? '';
                $persona->como_demandado->otros_juicios[$key]->fecha = $juicio->fecha_causa_dmy ?? '';
                $persona->como_demandado->otros_juicios[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->como_demandado->otros_juicios[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->como_demandado->otros_juicios[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->como_demandado->otros_juicios[$key]->localidad = $juicio->localidad ?? '';
                $persona->como_demandado->otros_juicios[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->como_demandado->otros_juicios[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->como_demandado->otros_juicios[$key]->observaciones = $juicio->observaciones ?? '' . $juicio->obs ?? '';
            }

            $persona->como_actor = [];
            foreach ($actor as $key => $juicio) {
                $persona->como_actor[$key] = new \StdClass();
                $persona->como_actor[$key]->tipo = $juicio->nombre_causa ?? '';
                $persona->como_actor[$key]->fecha = $juicio->fecha_causa_dmy ?? '';
                $persona->como_actor[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->como_actor[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->como_actor[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->como_actor[$key]->localidad = $juicio->localidad ?? '';
                $persona->como_actor[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->como_actor[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->como_actor[$key]->observaciones = $juicio->observaciones ?? '' . $juicio->obs ?? '';
            }
        }
        return json_encode($persona);
    }

    /* Secciones Legales Homonimos */
    public static function ICLegalesHomonimos($cuit = '', $id_padron = '', $razon_social = '', $apikey = '', $idioma = '', $cantidad = '')
    {
        if (!$cuit) {
            $cuit = Request::input('cuit');
        }
        if (!$idioma) {
            $idioma = strtoupper(Request::input('idioma') ?? 'SPA');
        }
        if (!$apikey) {
            $apikey = Request::input('apikey');
        }
        if (!$id_padron && !Request::input('id_padron')) {
            $idp = SQLConnection::obtenerIdPadron($cuit);
            $id_padron = $idp->id_padron;
        }
        if (!$razon_social && !Request::input('razon_social')) {
            $razon_social = SQLConnection::obtenerRazonSocial($cuit)->nombre_persona ?? '';
        }

        if (!$cantidad) {
            $cantidad = Request::input('cantidad') ?? 500;
            if (!is_numeric($cantidad)) {
                $cantidad = 500;
            }
        }
        // Por defualt se van a mostrar un maximo de 500 juicios por demandado y 500 por actor. 
        // Si se manda como parametro mostrar_todos_los_juicios = true, entonces mostrara todo.
        $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;

        }

        $persona = new \stdClass();
        if ($idioma == 'SPA') {
            $persona->identificacion = $cuit;
            $persona->razon_social = $razon_social;
            $persona->observacion = 'Información no vinculada a CUIT, DNI u otro identificador único de personas físicas o jurídicas. FIDELITAS exhibe estos datos sólo a efectos ilustrativos e informativos, ya que puede estar siendo referida a HOMÓNIMOS, y su interpretación queda bajo la exclusiva responsabilidad de cada USUARIO.';
            $persona->comentario = '';
            if (!$mostrar_todos_los_juicios) {
                $persona->comentario = ' Se muestra un máximo de ' . $cantidad . ' registros.';
            }
        } elseif ($idioma == 'ENG') {
            $persona->taxid = $cuit;
            $persona->legal_name = $razon_social;
            $persona->observation = 'Información no vinculada a CUIT, DNI u otro identificador único de personas físicas o jurídicas. FIDELITAS exhibe estos datos sólo a efectos ilustrativos e informativos, ya que puede estar siendo referida a HOMÓNIMOS, y su interpretación queda bajo la exclusiva responsabilidad de cada USUARIO.';
            $persona->comment = '';
            if (!$mostrar_todos_los_juicios) {
                $persona->comment = 'A maximum of ' . $cantidad . ' records are displayed.';
            }
        }

        $sinonimos = [];
        $demandado_homonimo = [];
        $actores_homonimos = [];
        $fisica_juridica = Misc::tipoPersona($cuit);
        $persona_fisica = ($fisica_juridica == 'F') ? true : false;

        $resultado_nombres_ant = [];
        $nombres_anteriores = [];

        $razon_social_completa = '';

        if (!$persona_fisica) {
            //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;
                }
            }

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

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


        if (strlen($razon_social_completa) >= 3) {
            $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 {

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

            }
        }

        if ($idioma == 'SPA') {
            $persona->homonimo_como_demandado = [];
            foreach ($demandado_homonimo as $key => $juicio) {
                $persona->homonimo_como_demandado[$key] = new \StdClass();
                $persona->homonimo_como_demandado[$key]->encontrado_como = $juicio->demandado ?? '';
                $persona->homonimo_como_demandado[$key]->tipo = $juicio->nombre_causa ?? $juicio->tipo_de_novedad;
                $persona->homonimo_como_demandado[$key]->fecha = $juicio->fecha_causa_dmy ?? $juicio->anio;
                $persona->homonimo_como_demandado[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->homonimo_como_demandado[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->homonimo_como_demandado[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->homonimo_como_demandado[$key]->localidad = $juicio->localidad ?? '';
                $persona->homonimo_como_demandado[$key]->expediente = $juicio->expediente ?? '';
                $persona->homonimo_como_demandado[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->homonimo_como_demandado[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->homonimo_como_demandado[$key]->observaciones = $juicio->observaciones ?? '';
            }
            $persona->homonimo_como_actor = [];
            foreach ($actores_homonimos as $key => $juicio) {
                $persona->homonimo_como_actor[$key] = new \StdClass();
                $persona->homonimo_como_actor[$key]->encontrado_como = $juicio->demandado ?? '';
                $persona->homonimo_como_actor[$key]->tipo = $juicio->nombre_causa ?? $juicio->tipo_de_novedad;
                $persona->homonimo_como_actor[$key]->fecha = $juicio->fecha_causa_dmy ?? $juicio->anio;
                $persona->homonimo_como_actor[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->homonimo_como_actor[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->homonimo_como_actor[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->homonimo_como_actor[$key]->localidad = $juicio->localidad ?? '';
                $persona->homonimo_como_actor[$key]->expediente = $juicio->expediente ?? '';
                $persona->homonimo_como_actor[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->homonimo_como_actor[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->homonimo_como_actor[$key]->observaciones = $juicio->observaciones ?? '';
            }

        } elseif ($idioma == 'ENG') {
            $persona->homonimo_como_demandado = [];
            foreach ($demandado_homonimo as $key => $juicio) {
                $persona->homonimo_como_demandado[$key] = new \StdClass();
                $persona->homonimo_como_demandado[$key]->encontrado_como = $juicio->demandado ?? '';
                $persona->homonimo_como_demandado[$key]->tipo = $juicio->nombre_causa ?? $juicio->tipo_de_novedad;
                $persona->homonimo_como_demandado[$key]->fecha = $juicio->fecha_causa_dmy ?? $juicio->anio;
                $persona->homonimo_como_demandado[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->homonimo_como_demandado[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->homonimo_como_demandado[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->homonimo_como_demandado[$key]->localidad = $juicio->localidad ?? '';
                $persona->homonimo_como_demandado[$key]->expediente = $juicio->expediente ?? '';
                $persona->homonimo_como_demandado[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->homonimo_como_demandado[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->homonimo_como_demandado[$key]->observaciones = $juicio->observaciones ?? '' . $juicio->obs ?? '';
            }
            $persona->homonimo_como_actor = [];
            foreach ($actores_homonimos as $key => $juicio) {
                $persona->homonimo_como_actor[$key] = new \StdClass();
                $persona->homonimo_como_actor[$key]->encontrado_como = $juicio->demandado ?? '';
                $persona->homonimo_como_actor[$key]->tipo = $juicio->nombre_causa ?? $juicio->tipo_de_novedad;
                $persona->homonimo_como_actor[$key]->fecha = $juicio->fecha_causa_dmy ?? $juicio->anio;
                $persona->homonimo_como_actor[$key]->radicacion = $juicio->radicacion ?? '';
                $persona->homonimo_como_actor[$key]->juzgado = $juicio->juzgado ?? '';
                $persona->homonimo_como_actor[$key]->secretaria = $juicio->secretaria ?? '';
                $persona->homonimo_como_actor[$key]->localidad = $juicio->localidad ?? '';
                $persona->homonimo_como_actor[$key]->expediente = $juicio->expediente ?? '';
                $persona->homonimo_como_actor[$key]->cuit_otra_parte = $juicio->cuit_otra_parte ?? '';
                $persona->homonimo_como_actor[$key]->nombre_otra_parte = $juicio->nombre_otra_parte ?? '';
                $persona->homonimo_como_actor[$key]->observaciones = $juicio->observaciones ?? '' . $juicio->obs ?? '';
            }
        }
        return json_encode($persona);
    }


}
