<?php
/*
@author  Fabian Hidalgo
Plugin Name: secmca-api
Plugin URI: http://codeskill.io
description: Plugin to make custom api requests.
Version: 1.5.46
Author: Codeskill.io
*/

defined('ABSPATH') or die('No script kiddies please!');
define('SECMCA_VER', '1.5.46');
define('SECMCA_FILE', __FILE__);
define('SECMCAAPI_PATH', plugin_dir_path(__FILE__));
define('SECMCA_URL', plugin_dir_url(__FILE__));

use Carbon_Fields\Container;
use Carbon_Fields\Field;
use GuzzleHttp\Client;

class SCM_secmca_api {

    protected static $_instance;
    public $api; // Declaración de propiedad para PHP 8.x

    public static function instance() {
      if(null === self::$_instance)
        self::$_instance = new self();

      return self::$_instance;
    }

    // Constructor
    protected function __construct() {
      $this->_scm_includes();
      $this->_scm_init();
    }

    public function scm_hooks() {

        add_action('admin_menu', array($this, 'scm_menu'));

        // simafir Shortcodes
        add_shortcode('scm-list', array($this, 'scm_list_shortcode'));
        add_shortcode( 'scm-params',  array($this, 'scm_params_shortcode') );
        add_shortcode( 'scm-chart',  array($this, 'scm_chart_shortcode') );
        add_shortcode( 'scm-json',  array($this, 'scm_json_shortcode') );

        //EMFA shortcodes
        add_shortcode( 'scm-emfa-list',  array($this, 'scm_emfa_list_shortcode') );
        add_shortcode( 'scm-emfa-chart',  array($this, 'scm_emfa_chart_shortcode') );
        add_shortcode( 'scm-emfa-params',  array($this, 'scm_emfa_params_shortcode') );

        //EFPA shortcodes
        add_shortcode( 'scm-efpa-list',  array($this, 'scm_efpa_list_shortcode') );
        add_shortcode( 'scm-efpa-chart',  array($this, 'scm_efpa_chart_shortcode') );
        add_shortcode( 'scm-efpa-params',  array($this, 'scm_efpa_params_shortcode') );

        //ESEA shortcodes
        add_shortcode( 'scm-esea-list',  array($this, 'scm_esea_list_shortcode') );
        add_shortcode( 'scm-esea-chart',  array($this, 'scm_esea_chart_shortcode') );
        // add_shortcode( 'scm-esea-params',  array($this, 'scm_esea_params_shortcode') );

        //enqueue_scripts
        add_action('wp_enqueue_scripts', array($this, 'scm_add_assets'));

        //ajaxurl
        add_action( 'wp_enqueue_scripts', array($this, 'scm_ajax_enqueue_scripts') );
        add_action( "wp_ajax_scm_get_url", array($this, 'scm_wp_ajax_function') );
        add_action( "wp_ajax_nopriv_scm_get_url", array($this, 'scm_wp_ajax_function'));
        
        // Debug panel footer
        add_action('wp_footer', array($this, 'scm_render_debug_panel'));
    }

    protected function _scm_init(){
        add_action( 'after_setup_theme', array( $this,
              'scm_load_crb_fields'
          ) );

        add_action( 'carbon_fields_register_fields', array( $this,
            'scm_crb_attach_theme_options'
        ) );
    }

    protected function _scm_includes() {
      include( SECMCAAPI_PATH . 'inc/api.php');
    }

    /**
     * Muestra la imagen de mantenimiento para usuarios no logueados
     * @return string HTML con la imagen de mantenimiento
     */
    private function scm_maintenance_image() {
        $image_url = SECMCA_URL . 'Manteniemiento.jpg';
        return '
        <div class="secmca-maintenance-wrapper" style="display: flex; justify-content: center; align-items: center; min-height: 400px; padding: 20px;">
            <div style="text-align: center; max-width: 100%;">
                <img src="' . esc_url($image_url) . '" alt="Mantenimiento por Renovación" style="max-width: 100%; height: auto; border-radius: 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.1);" />
            </div>
        </div>';
    }

    public function scm_menu() {
        add_menu_page('Secmca API', 'Secmca API', 'manage_options', 'secmca-api-dashboard', array($this, 'scm_dashboard_shortcode'));
    }

    public function scm_add_assets(){

        //styles
        wp_enqueue_style( 'styleOP', plugins_url('assets/css/style.css', __FILE__), false, SECMCA_VER, 'all');
        wp_enqueue_style( 'dynotablecss', plugins_url('assets/css/jquery.dynatable.css',__FILE__), false, SECMCA_VER, 'all');
        wp_enqueue_style( 'Pickerstyles', plugins_url('assets/css/datepicker.min.css',__FILE__), false, SECMCA_VER, 'all');
        wp_enqueue_style( 'Pickerstyles2', plugins_url('assets/css/datepicker-bs4.min.css',__FILE__), false, SECMCA_VER, 'all');
        wp_enqueue_style( 'Pickerstyles3', plugins_url('assets/css/datepicker-bulma.min.css',__FILE__), false, SECMCA_VER, 'all');
        
        // Debug Panel (solo para usuarios logueados)
        if (is_user_logged_in()) {
            wp_enqueue_style( 'secmca-debug-panel', plugins_url('assets/css/debug-panel.css', __FILE__), false, SECMCA_VER, 'all');
        }

        //scripts
        wp_enqueue_script('jquery_lib', SECMCA_URL .'assets/js/jquery-3.4.1.js', '3.4.1', true);
        wp_enqueue_script('jsboots', SECMCA_URL .'assets/js/bootstrap.min.js', '3.4.1', true);
        wp_enqueue_script('chartjs', SECMCA_URL .'assets/js/chart.js@2.8.0', '1.1', true);
        wp_enqueue_script('export', SECMCA_URL .'assets/js/export.js', '1.1', true);
        wp_enqueue_script('tableexport', SECMCA_URL .'assets/js/tableExport.min.js', '1.1', true);
        wp_enqueue_script('filesaver', SECMCA_URL .'assets/js/FileSaver.min.js', '1.1', true);
        wp_enqueue_script('datepicker', SECMCA_URL .'assets/js/datepicker.js', ('jquery_lib'), '1.1', true);
        wp_enqueue_script('html-table-search', SECMCA_URL .'assets/js/html-table-search.js', ('jquery_lib'), '1.1', true);
        
        // Debug Panel (solo para usuarios logueados)
        if (is_user_logged_in()) {
            wp_enqueue_script('secmca-debug-panel', SECMCA_URL .'assets/js/debug-panel.js', array(), SECMCA_VER, true);
        }

      }

      function scm_dashboard_shortcode(){
        ?>
        <div class="wrap">
          <h2>Secmca API plugin</h2>
        </div>
        <?php
      }

      /**
       * Renderiza el panel de debug flotante en el footer
       * Solo visible para usuarios logueados
       */
      function scm_render_debug_panel() {
          if (!is_user_logged_in()) return;
          
          // Renderizar eventos de debug del API
          if ($this->api && method_exists($this->api, 'render_debug_events')) {
              $this->api->render_debug_events();
          }
          
          ?>
          <!-- SECMCA Debug Panel - Los elementos se crearán dinámicamente por JavaScript -->
          <script>
          // Marcar que el usuario está logueado para el debug panel
          if (!document.body.classList.contains('logged-in')) {
              document.body.classList.add('logged-in');
          }
          </script>
          <?php
      }

      //ajax functions
        public function scm_ajax_enqueue_scripts(){
          wp_register_script(
            'ajaxHandle',
            plugins_url('secmca-api/assets/js/App-v2.js?v=549'),
            array(),
            false,
            true
          );
          wp_enqueue_script( 'ajaxHandle' );
          wp_localize_script(
            'ajaxHandle',
            'ajax_object',
            array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) )
          );
        }

      public function scm_wp_ajax_function(){
        $var_req = $_POST["vars"];
        $country_req = $_POST["countries"];
        
        // DEBUG: Mostrar lo que se recibe
        if (is_user_logged_in()) {
            error_log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
            error_log("🔍 AJAX scm_get_url INICIO");
            error_log("   - vars recibidas: {$var_req}");
            error_log("   - countries recibidos: {$country_req}");
        }
        
        // Dividir $var_req por el carácter "-"
        $var_req_array = explode("-", $var_req);
        
        // Verificar si alguno de los valores de $var_req está en ["54", "55", "56"]
        if (array_intersect($var_req_array, ["54", "55", "56"])) {
            // Usar el segundo endpoint
            if (is_user_logged_in()) {
                error_log("📅 Usando get_years2 (tipo de cambio)");
            }
            $years = $this->api->get_years2($var_req, $country_req);
        } else {
            // Usar el primer endpoint
            if (is_user_logged_in()) {
                error_log("📅 Usando get_years (estándar) - LLAMANDO AHORA...");
            }
            $years = $this->api->get_years($var_req, $country_req);
        }
        
        // DEBUG: Mostrar respuesta FINAL antes de enviar al cliente
        if (is_user_logged_in()) {
            error_log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
            error_log("📤 AJAX scm_get_url RESPUESTA FINAL:");
            error_log("   - Tipo de dato: " . gettype($years));
            error_log("   - Longitud: " . strlen($years) . " bytes");
            
            // Detectar si hay error de permisos en la respuesta
            if (stripos($years, 'No tiene permisos') !== false || stripos($years, 'No tiene permiso') !== false) {
                error_log("   ⚠️⚠️⚠️ ALERTA CRÍTICA: Respuesta contiene mensaje de permisos!");
                error_log("   Respuesta COMPLETA que se enviará al cliente:");
                error_log($years);
            } else {
                $preview = substr($years, 0, 300);
                error_log("   Preview (primeros 300 chars): {$preview}...");
            }
            error_log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
        }
    
        echo $years;
        wp_die();
    }


        // ----SIMAFIR---- //

        //list shortcode
    public function scm_list_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $categories = carbon_get_theme_option( 'crb_cat' );
      $pageID = carbon_get_theme_option( 'crb_select_query' );
      ob_start();
      include( SECMCAAPI_PATH . 'shortcodes/SIMAFIR/list-shortcode.php');
      $contenido = ob_get_contents();
      ob_end_clean();
      return $contenido;
    }

    //params shortcode
    public function scm_params_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $repo_page = carbon_get_theme_option( 'crb_select_reports' );
      $pageID = carbon_get_theme_option( 'crb_select_query' );
      $description = carbon_get_theme_option( 'desc' );
      $categories = carbon_get_theme_option( 'crb_cat' );
      $page_results = carbon_get_theme_option( 'crb_select_results' );
      if(isset($_GET["parent"]) && isset($_GET["data"])) {
        $current_parent = $_GET["parent"];
        $data = $_GET["data"];
        //criterios
        $all = $this->api->get_report_variables($data);
      }
      ob_start();
      // Cargar funciones auxiliares de SIMAFIR
      require_once( SECMCAAPI_PATH . 'shortcodes/SIMAFIR/simafir-functions.php');
      include( SECMCAAPI_PATH . 'shortcodes/SIMAFIR/params-shortcode.php');
      $contenido = ob_get_contents();
      ob_end_clean();
      return $contenido;
    }
    
 public function scm_json_shortcode() {
      if(isset($_GET["url"])) {
          $url = urldecode($_GET["url"]);
      }
	 // URL unificada según documentación (puerto 8081)
	 $client = new Client([
        'base_uri' => 'http://192.168.100.137:8081/simafir_api/ws/public/v1/obtenerDatos/porCriterio/',
        'version' => 3.0,
        'timeout'  => 0
    ]);
        
    
        $chunk = explode("/",$url);
        
         if (isset($chunk[6])) {
            // Dividir la parte en la posición 6 por '-'
            $variablesUrl = explode('-', $chunk[6]);
    
            // Verificar si alguna de las variables es 54, 55, o 56
            foreach ($variablesUrl as $var) {
                if (in_array($var, ['54', '55', '56'])) {
                    $variableEncontrada = true;
                    $variable = $var;
                    break;  // Salir del bucle si se encuentra una variable
                }
            }
        }
        $tipoCambio = [];
        if($variableEncontrada) {
             if(isset($_GET["url"])) {
          $url = urldecode($_GET["url"]);
          $url_simple = urldecode($_GET["url"]);
      }
            
            $chunkyears = explode("-",$chunk[7]);
            array_pop($chunk);
            $url = implode("/", $chunk);
            $yf = array_chunk($chunkyears, 200);
            $all_value = [];
            $all_data1 = [];
            
            foreach ($yf as $key => $value) {
              $separado_por_comas = implode("-", $value);
              $irl = $url . "/" . $separado_por_comas;
              $v = [];
              $v = $this->api->get_all_data1($url_simple,$client);
              $v2 = $this->array_orderby($v, 'anno', SORT_ASC, 'periodoCustom2', SORT_ASC);
              array_push($all_value,$v2);
    
            }
           
            foreach ($all_value as $xs => $xd) {
              foreach ($xd as $key => $value) {
               array_push($all_data1,$value);
              }
            }
    
            if(isset($_GET["parent"])) {
              $current_parent = $_GET["parent"];
            }
           
            
            // Array para almacenar los valores agrupados por fecha
            //$tipoCambio = array();
              
              
              
              

            foreach ($all_data1 as $item) {
                $paisMoneda = $item['paisMoneda'];
                $tipoVariable = $item['tipoVariable'];
                $periodoNombreEsp = $item['periodoNombreEsp'];
                $valorCalculado = $item['valorCalculado'];
                $paisMonedaColor = $item['paisMonedaColor'];
            
                // Inicializar los niveles de agrupación si no existen
                if (!isset($tipoCambio[$paisMoneda])) {
                    $tipoCambio[$paisMoneda] = [];
                }
                if (!isset($tipoCambio[$paisMoneda][$tipoVariable])) {
                    $tipoCambio[$paisMoneda][$tipoVariable] = [];
                }
                 if (!isset($tipoCambio[$paisMoneda][$tipoVariable][$periodoNombreEsp])) {
                    $tipoCambio[$paisMoneda][$tipoVariable][$periodoNombreEsp] = [
                        'color' => $paisMonedaColor,
                        'valores' => []
                    ];
                }
            
                // Agregar el valor calculado al periodo correspondiente
                $tipoCambio[$paisMoneda][$tipoVariable][$periodoNombreEsp][] = $valorCalculado;
            }
            
            //var_dump($tipoCambio);
            
            $tipocambiodata = [];
            $tipocambiolabel = [];
            
            foreach ($tipoCambio as $paisMoneda => $variables) {
                foreach ($variables as $variable => $fechas) {
                    $dataEntry = [];
                   
                    foreach ($fechas as $fecha => $valores) {
                        // Añadir la fecha a los labels si no está ya
                        if (!in_array($fecha, $tipocambiolabel)) {
                            $tipocambiolabel[] = $fecha;
                        }
            
                        // Añadir el valor a la entrada de datos
                        $dataEntry[$fecha] = $valores[0];
                    }
                    // Añadir el color a la entrada de datos (puedes personalizar los colores según sea necesario)
                    $dataEntry["Color"] = $valores["color"];
                    
                    // Añadir la entrada de datos al array tipocambiodata
                    $tipocambiodata[$variable . " - " . $paisMoneda] = $dataEntry;
                }
            }
            
        usort($tipocambiolabel, function($a, $b) {
            return strtotime($a) - strtotime($b);
        });

        }else {
       
        
        
        $chunkyears = explode("-",$chunk[7]);
        array_pop($chunk);
        $url = implode("/", $chunk);
        $yf = array_chunk($chunkyears, 200);
        $all_value = [];
        $all_data1 = [];
    
        foreach ($yf as $key => $value) {
          $separado_por_comas = implode("-", $value);
          $irl = $url . "/" . $separado_por_comas;
          $v = [];
          $v = $this->api->get_all_data1($irl,$client);
          $v2 = $this->array_orderby($v, 'anno', SORT_ASC, 'periodoCustom2', SORT_ASC);
          array_push($all_value,$v2);
    
        }
    
        foreach ($all_value as $xs => $xd) {
          foreach ($xd as $key => $value) {
           array_push($all_data1,$value);
          }
        }
    
        if(isset($_GET["parent"])) {
          $current_parent = $_GET["parent"];
        }
    
      $data = [];
      $countries = [];
      $variables = [];
      $periodos = [];
      $ajustes = [];
    
      $data_arr = array();
      $data_label = array();
      $fixes = explode("/",$url);
      $fixar = explode("-",$fixes[1]);
    
    
    $test = [];
      
      //foreach para obtener el valor mas reciente de toda la data del WS
        foreach ($all_data1 as $dkey => $ddata) {
    
          if( !isset($test[trim($ddata["nombreEsp"])]) ){
    
            $test[trim($ddata["nombreEsp"])] = [];
    
          }
    
          //setear el campo para organizar data 
          if( !isset($test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]) ){
    
            $test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]] = $ddata;
    
          }else {
    
            if($ddata["idCarga"] >= $test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]["idCarga"] && $ddata["idDetalleCarga"] > $test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]["idDetalleCarga"]){
              
    
                //eliminar valor menor
                unset($test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]);
    
                // si existe el campo, agregarlo -> si no crearlo y agregarlo
                if( isset($test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]) ){ 
    
                 array_push($test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]],$ddata);
    
              }else {
    
                $test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]] = $ddata;
    
              }
            }
    
          }
        }
    
    
    
          $dep_arr = [];
    
          
          foreach ($test as $kt => $nombre) {
            // ksort($test[$kt], SORT_NATURAL);
            //  // $newel = array_pop($test[$kt]);
            // // $test[$kt] = array();
            // // array_push($test[$kt],$newel);
            foreach ($nombre as $ksy => $vsue) {
             array_push($dep_arr,$vsue);
            }
          }
    
    
      if($dep_arr != "no hay datos") {
        if($fixar[0] == 14 && $fixar[1] == 16 && $_GET['son'] != "Volumen transado por mercado " && $fixar[0] == 14 && $fixar[1] == 16 && $_GET['son'] != "Volumen transado por moneda" && $_GET['son'] != "Volumen transado por sector") {
          foreach ($dep_arr as $row => $value) {
          if( ! isset( $data[ $value['paisNombreEsp'] ] ) ) {
            $data[ $value['paisNombreEsp'] ] = [];
            $countries[] = $value['paisNombreEsp'];
          }
    
           if( !in_array($value['ajusteNombreEsp'], $ajustes)) {
            $ajustes[] = $value['ajusteNombreEsp'];
           }
    
           if( ! isset( $data[ $value['paisNombreEsp']][$value['ajusteNombreEsp']]) ) {
            $data[ $value['paisNombreEsp']][$value['ajusteNombreEsp']] = [];
            // $ajustes[] = $value['ajusteNombreEsp'];
          }
    
          if( ! isset( $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ] ) ) {
            $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ] = [];
            if( !in_array($value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"], $variables) )
              $variables[] = $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"];
          }
          if($value['periodoCustom1'] != "XII")  {
            if(!isset($data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ])) {
              $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ] = [];
            }
            $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ]["valorCalculado"] = $value['valorCalculado'];
    
            $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ]["Fictisio"] = $value['datoFicticio'];
    
            if( !in_array($value['anno'] . "-" . $value['periodoCustom1'], $periodos) )
              $periodos[] = $value['anno'] . "-" . $value['periodoCustom1'];
          }else {
            if(!isset($data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] ])) {
                $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] ] = [];
              }
              $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] ]["valorCalculado"] = $value['valorCalculado'];
    
              $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] ]["Fictisio"] = $value['datoFicticio'];
    
              if( !in_array($value['anno'], $periodos) )
                $periodos[] = $value['anno'];
          }
        }
    
          foreach ($dep_arr as $key => $value) {
            if(!isset($data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]))
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]] = [];
             if($value['periodoCustom1'] != "XII")  {
                $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]][$value["anno"] . '-' . $value['periodoCustom1']] =  $value["valorCalculado"];
                $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]['Color'] =  $value["paisCustom3"];
                // array_push($data_arr,$value["valorCalculado"]);
                if(!in_array($value["anno"] . '-' . $value['periodoCustom1'], $data_label))
                  $data_label[] = $value["anno"] . '-' . $value['periodoCustom1'];
             }else {
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]][$value["anno"]] =  $value["valorCalculado"];
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]['Color'] =  $value["paisCustom3"];
              // array_push($data_arr,$value["valorCalculado"]);
              if(!in_array($value["anno"], $data_label))
                $data_label[] = $value["anno"];
    
             }
          }
        }else {
          foreach ($dep_arr as $row => $value) {
            if($value['periodoCustom1'] != "XII")  {
              if( ! isset( $data[ $value['paisNombreEsp'] ] ) ) {
                  $data[ $value['paisNombreEsp'] ] = [];
                  $countries[] = $value['paisNombreEsp'];
                }
    
                if( ! isset( $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ] ) ) {
                  $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ] = [];
                  if( !in_array($value["ordenDespliegue"] . '|' . $value["nombreEsp"], $variables) )
                    $variables[] = $value["ordenDespliegue"] . '|' . $value["nombreEsp"];
                }
    
                if(!isset($data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ])) {
                  $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ] = [];
                }
    
                $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ]["valorCalculado"] = $value['valorCalculado'];
                $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ]["Fictisio"] = $value['datoFicticio'];
                if( !in_array($value['anno'] . "-" . $value['periodoCustom1'], $periodos) )
                  $periodos[] = $value['anno'] . "-" . $value['periodoCustom1'];
            }else {
              if( ! isset( $data[ $value['paisNombreEsp'] ] ) ) {
              $data[ $value['paisNombreEsp'] ] = [];
              $countries[] = $value['paisNombreEsp'];
            }
    
            if( ! isset( $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ] ) ) {
              $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ] = [];
              if( !in_array($value["ordenDespliegue"] . '|' . $value["nombreEsp"], $variables) )
                $variables[] = $value["ordenDespliegue"] . '|' . $value["nombreEsp"];
            }
    
            if(!isset($data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ])) {
              $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ] = [];
            }
    
            $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ]["valorCalculado"] = $value['valorCalculado'];
            $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ]["Fictisio"] = $value['datoFicticio'];
            $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ]["color"] = $value['paisCustom3'];
            if( !in_array($value['anno'] , $periodos) )
              $periodos[] = $value['anno'] ;
            }
            
          }
    
        foreach ($dep_arr as $key => $value) {
          if($value['periodoCustom1'] != "XII")  {
            if(!isset($data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]))
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]] = [];
    
            $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]][$value["anno"] . '-' . $value['periodoCustom1']] =  $value["valorCalculado"];
            $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]['Color'] =  $value["paisCustom3"];
            // array_push($data_arr,$value["valorCalculado"]);
            if(!in_array($value["anno"] . '-' . $value['periodoCustom1'], $data_label))
              $data_label[] = $value["anno"] . '-' . $value['periodoCustom1'];
          }else {
            if(!isset($data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]))
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]] = [];
    
            $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]][$value["anno"]] =  $value["valorCalculado"];
            $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]['Color'] =  $value["paisCustom3"];
            // array_push($data_arr,$value["valorCalculado"]);
            if(!in_array($value["anno"], $data_label))
              $data_label[] = $value["anno"];
          }
        }
          }
        
        }
    
      if(isset($_GET["parent"])) {
        $current_parent = $_GET["parent"];
      }
      
      $url_arr =explode("/", $url);
      if($url_arr[3] != "39") {
           sort($periodos);
      }
           
        }
      ob_start();
      if($_GET["jsonview"]) {
        include( SECMCAAPI_PATH . 'shortcodes/SIMAFIR/jsonviewer.php');   
      }
      $contenido = ob_get_contents();
      ob_end_clean();
      return $contenido;
    }
    
    //chart shortcode
    public function scm_chart_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $repo_page = carbon_get_theme_option( 'crb_select_reports' );
      $pageID = carbon_get_theme_option( 'crb_select_query' );
        
      if(isset($_GET["url"])) {
          $url = urldecode($_GET["url"]);
          $url_simple = urldecode($_GET["url"]);
      }
    
      $all_vars = urldecode($_GET["all_vars"]);
      // URL unificada según documentación (puerto 8081)
      $client = new Client([
        'base_uri' => 'http://192.168.100.137:8081/simafir_api/ws/public/v1/obtenerDatos/porCriterio/',
        'version' => 3.0,
        'timeout'  => 0
    ]);
        // $all_data = $this->api->get_all_data1($url,$client);
        
        $chunk = explode("/",$url);
        
        if (isset($chunk[6])) {
            // Dividir la parte en la posición 6 por '-'
            $variablesUrl = explode('-', $chunk[6]);
    
            // Verificar si alguna de las variables es 54, 55, o 56
            foreach ($variablesUrl as $var) {
                if (in_array($var, ['54', '55', '56'])) {
                    $variableEncontrada = true;
                    $variable = $var;
                    break;  // Salir del bucle si se encuentra una variable
                }
            }
        }
        $tipoCambio = [];
        if($variableEncontrada) {
            $chunkyears = explode("-",$chunk[7]);
            array_pop($chunk);
            $url = implode("/", $chunk);
            $yf = array_chunk($chunkyears, 200);
            $all_value = [];
            $all_data1 = [];
            
            foreach ($yf as $key => $value) {
              $separado_por_comas = implode("-", $value);
              $irl = $url . "/" . $separado_por_comas;
              $v = [];
              $v = $this->api->get_all_data1($url_simple,$client);
              $v2 = $this->array_orderby($v, 'anno', SORT_ASC, 'periodoCustom2', SORT_ASC);
              array_push($all_value,$v2);
    
            }
           	
            
            foreach ($all_value as $xs => $xd) {
              foreach ($xd as $key => $value) {
               array_push($all_data1,$value);
              }
            }
    
            if(isset($_GET["parent"])) {
              $current_parent = $_GET["parent"];
            }
           
            
            // Array para almacenar los valores agrupados por fecha
            //$tipoCambio = array();
              
              
              
              

            foreach ($all_data1 as $item) {
                $paisMoneda = $item['paisMoneda'];
                $tipoVariable = $item['tipoVariable'];
                $periodoNombreEsp = $item['periodoNombreEsp'];
                $valorCalculado = $item['valorCalculado'];
                $paisMonedaColor = $item['paisMonedaColor'];
            
                // Inicializar los niveles de agrupación si no existen
                if (!isset($tipoCambio[$paisMoneda])) {
                    $tipoCambio[$paisMoneda] = [];
                }
                if (!isset($tipoCambio[$paisMoneda][$tipoVariable])) {
                    $tipoCambio[$paisMoneda][$tipoVariable] = [];
                }
                 if (!isset($tipoCambio[$paisMoneda][$tipoVariable][$periodoNombreEsp])) {
                    $tipoCambio[$paisMoneda][$tipoVariable][$periodoNombreEsp] = [
                        'color' => $paisMonedaColor,
                        'valores' => []
                    ];
                }
            
                // Agregar el valor calculado al periodo correspondiente
                $tipoCambio[$paisMoneda][$tipoVariable][$periodoNombreEsp][] = $valorCalculado;
            }
            
            //var_dump($tipoCambio);
            
            $tipocambiodata = [];
            $tipocambiolabel = [];
            
            foreach ($tipoCambio as $paisMoneda => $variables) {
                foreach ($variables as $variable => $fechas) {
                    $dataEntry = [];
                   
                    foreach ($fechas as $fecha => $valores) {
                        // Añadir la fecha a los labels si no está ya
                        if (!in_array($fecha, $tipocambiolabel)) {
                            $tipocambiolabel[] = $fecha;
                        }
            
                        // Añadir el valor a la entrada de datos
                        $dataEntry[$fecha] = $valores[0];
                    }
                    // Añadir el color a la entrada de datos (puedes personalizar los colores según sea necesario)
                    $dataEntry["Color"] = $valores["color"];
                    
                    // Añadir la entrada de datos al array tipocambiodata
                    $tipocambiodata[$variable . " - " . $paisMoneda] = $dataEntry;
                }
            }
            
        usort($tipocambiolabel, function($a, $b) {
            return strtotime($a) - strtotime($b);
        });

        }else {
            $chunkyears = explode("-",$chunk[7]);
            array_pop($chunk);
            $url = implode("/", $chunk);
            $yf = array_chunk($chunkyears, 200);
            $all_value = [];
            $all_data1 = [];
    
            foreach ($yf as $key => $value) {
              $separado_por_comas = implode("-", $value);
              $irl = $url . "/" . $separado_por_comas;
              $v = [];
              $v = $this->api->get_all_data1($irl,$client);
              
              // Validar que $v sea un array antes de ordenar
              if (is_array($v) && !empty($v)) {
                  $v2 = $this->array_orderby($v, 'anno', SORT_ASC, 'periodoCustom2', SORT_ASC);
                  array_push($all_value,$v2);
              } else {
                  error_log('SCM API Error: get_all_data1 no retornó un array válido para URL: ' . $irl);
              }
    
            }
           
            //var_dump($all_value);

            foreach ($all_value as $xs => $xd) {
              foreach ($xd as $key => $value) {
               array_push($all_data1,$value);
              }
            }
    
            if(isset($_GET["parent"])) {
              $current_parent = $_GET["parent"];
            } 
        }
      

      $categories = carbon_get_theme_option( 'crb_cat' );

      $data = [];
      $countries = [];
      $variables = [];
      $periodos = [];
      $ajustes = [];

      $data_arr = array();
      $data_label = array();
      $fixes = explode("/",$url);
      $fixar = explode("-",$fixes[1]);


  $test = [];
      
      //foreach para obtener el valor mas reciente de toda la data del WS
        foreach ($all_data1 as $dkey => $ddata) {

          if( !isset($test[trim($ddata["nombreEsp"])]) ){

            $test[trim($ddata["nombreEsp"])] = [];

          }

          //setear el campo para organizar data 
          if( !isset($test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]) ){

            $test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]] = $ddata;

          }else {

            if($ddata["idCarga"] >= $test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]["idCarga"] && $ddata["idDetalleCarga"] > $test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]["idDetalleCarga"]){
              

                //eliminar valor menor
                unset($test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]);

                // si existe el campo, agregarlo -> si no crearlo y agregarlo
                if( isset($test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]]) ){ 

                 array_push($test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]],$ddata);

              }else {

                $test[trim($ddata["nombreEsp"])][$ddata["anno"] . "-" . $ddata["idAjuste"] . "-" . $ddata["periodoNombreEsp"] . "-" . $ddata["paisDscEsp"]] = $ddata;

              }
            }

          }
        }



          $dep_arr = [];

          
          foreach ($test as $kt => $nombre) {
            // ksort($test[$kt], SORT_NATURAL);
            //  // $newel = array_pop($test[$kt]);
            // // $test[$kt] = array();
            // // array_push($test[$kt],$newel);
            foreach ($nombre as $ksy => $vsue) {
             array_push($dep_arr,$vsue);
            }
          }
			

      if($dep_arr != "no hay datos") {
        if($fixar[0] == 14 && $fixar[1] == 16 && $_GET['son'] != "Volumen transado por mercado " && $fixar[0] == 14 && $fixar[1] == 16 && $_GET['son'] != "Volumen transado por moneda" && $_GET['son'] != "Volumen transado por sector") {
          foreach ($dep_arr as $row => $value) {
          if( ! isset( $data[ $value['paisNombreEsp'] ] ) ) {
            $data[ $value['paisNombreEsp'] ] = [];
            $countries[] = $value['paisNombreEsp'];
          }

           if( !in_array($value['ajusteNombreEsp'], $ajustes)) {
            $ajustes[] = $value['ajusteNombreEsp'];
           }

           if( ! isset( $data[ $value['paisNombreEsp']][$value['ajusteNombreEsp']]) ) {
            $data[ $value['paisNombreEsp']][$value['ajusteNombreEsp']] = [];
            // $ajustes[] = $value['ajusteNombreEsp'];
          }

          if( ! isset( $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ] ) ) {
            $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ] = [];
            if( !in_array($value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"], $variables) )
              $variables[] = $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"];
          }
          if($value['periodoCustom1'] != "XII")  {
            if(!isset($data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ])) {
              $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ] = [];
            }
            $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ]["valorCalculado"] = $value['valorCalculado'];

            $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ]["Fictisio"] = $value['datoFicticio'];

            if( !in_array($value['anno'] . "-" . $value['periodoCustom1'], $periodos) )
              $periodos[] = $value['anno'] . "-" . $value['periodoCustom1'];
          }else {
            if(!isset($data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] ])) {
                $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] ] = [];
              }
              $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] ]["valorCalculado"] = $value['valorCalculado'];

              $data[ $value['paisNombreEsp'] ][$value['ajusteNombreEsp']][ $value["ordenDespliegue"] . '|' . $value["ajusteNombreEsp"] . '|' . $value["nombreEsp"] ][ $value['anno'] ]["Fictisio"] = $value['datoFicticio'];

              if( !in_array($value['anno'], $periodos) )
                $periodos[] = $value['anno'];
          }
        }

          foreach ($dep_arr as $key => $value) {
            if(!isset($data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]))
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]] = [];
             if($value['periodoCustom1'] != "XII")  {
                $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]][$value["anno"] . '-' . $value['periodoCustom1']] =  $value["valorCalculado"];
                $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]['Color'] =  $value["paisCustom3"];
                // array_push($data_arr,$value["valorCalculado"]);
                if(!in_array($value["anno"] . '-' . $value['periodoCustom1'], $data_label))
                  $data_label[] = $value["anno"] . '-' . $value['periodoCustom1'];
             }else {
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]][$value["anno"]] =  $value["valorCalculado"];
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]['Color'] =  $value["paisCustom3"];
              // array_push($data_arr,$value["valorCalculado"]);
              if(!in_array($value["anno"], $data_label))
                $data_label[] = $value["anno"];

             }
          }
        }else {
          foreach ($dep_arr as $row => $value) {
            if($value['periodoCustom1'] != "XII")  {
              if( ! isset( $data[ $value['paisNombreEsp'] ] ) ) {
                  $data[ $value['paisNombreEsp'] ] = [];
                  $countries[] = $value['paisNombreEsp'];
                }

                if( ! isset( $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ] ) ) {
                  $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ] = [];
                  if( !in_array($value["ordenDespliegue"] . '|' . $value["nombreEsp"], $variables) )
                    $variables[] = $value["ordenDespliegue"] . '|' . $value["nombreEsp"];
                }

                if(!isset($data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ])) {
                  $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ] = [];
                }

                $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ]["valorCalculado"] = $value['valorCalculado'];
                $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno'] . "-" . $value['periodoCustom1'] ]["Fictisio"] = $value['datoFicticio'];
                if( !in_array($value['anno'] . "-" . $value['periodoCustom1'], $periodos) )
                  $periodos[] = $value['anno'] . "-" . $value['periodoCustom1'];
            }else {
              if( ! isset( $data[ $value['paisNombreEsp'] ] ) ) {
              $data[ $value['paisNombreEsp'] ] = [];
              $countries[] = $value['paisNombreEsp'];
            }

            if( ! isset( $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ] ) ) {
              $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ] = [];
              if( !in_array($value["ordenDespliegue"] . '|' . $value["nombreEsp"], $variables) )
                $variables[] = $value["ordenDespliegue"] . '|' . $value["nombreEsp"];
            }

            if(!isset($data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ])) {
              $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ] = [];
            }

            $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ]["valorCalculado"] = $value['valorCalculado'];
            $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ]["Fictisio"] = $value['datoFicticio'];
            $data[ $value['paisNombreEsp'] ][ $value["ordenDespliegue"] . '|' . $value["nombreEsp"] ][ $value['anno']  ]["color"] = $value['paisCustom3'];
            if( !in_array($value['anno'] , $periodos) )
              $periodos[] = $value['anno'] ;
            }
            
          }

        foreach ($dep_arr as $key => $value) {
          if($value['periodoCustom1'] != "XII")  {
            if(!isset($data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]))
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]] = [];

            $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]][$value["anno"] . '-' . $value['periodoCustom1']] =  $value["valorCalculado"];
            $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]['Color'] =  $value["paisCustom3"];
            // array_push($data_arr,$value["valorCalculado"]);
            if(!in_array($value["anno"] . '-' . $value['periodoCustom1'], $data_label))
              $data_label[] = $value["anno"] . '-' . $value['periodoCustom1'];
          }else {
            if(!isset($data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]))
              $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]] = [];

            $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]][$value["anno"]] =  $value["valorCalculado"];
            $data_arr[$value["nombreEsp"] . ' - ' . $value["paisNombreEsp"]]['Color'] =  $value["paisCustom3"];
            // array_push($data_arr,$value["valorCalculado"]);
            if(!in_array($value["anno"], $data_label))
              $data_label[] = $value["anno"];
          }
        }
          }
        
        }

      if(isset($_GET["parent"])) {
        $current_parent = $_GET["parent"];
      }
      
      $url_arr =explode("/", $url);
      if($url_arr[3] != "39") {
           sort($periodos);
      }
      ob_start();
      if($_GET["jsonview"]) {
        include( SECMCAAPI_PATH . 'shortcodes/SIMAFIR/jsonviewer.php');   
      }else {
           include( SECMCAAPI_PATH . 'shortcodes/SIMAFIR/graphic-shortcode.php');
      }
      $contenido = ob_get_contents();
      ob_end_clean();
      return $contenido;
    }

    // ---->SIMAFIR<---- //

    // ----EMFA---- //

    //emfa list shortcode
    public function scm_emfa_list_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $emfa_categories = carbon_get_theme_option( 'emfa_crb_cat' );
      $pageID = carbon_get_theme_option( 'emfa_crb_select_query' );
      ob_start();
      include( SECMCAAPI_PATH . 'shortcodes/EMFA/emfa-list-shortcode.php');
      $contenido = ob_get_contents();
      ob_end_clean();
      return "$contenido";
    }

    //emfa params shortcode
    public function scm_emfa_params_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $emfa_categories = carbon_get_theme_option( 'emfa_crb_cat' );
      $resultpageID = carbon_get_theme_option( 'emfa_crb_select_results' );
      if(isset($_GET["api"])) {
        if($_GET["api"] != "all"){
          $chartID = urldecode($_GET["idChart"]);
          $paramsID = carbon_get_theme_option( 'emfa_crb_select_query' );
          $api_title = urldecode($_GET["api"]);
          $topics = $this->api->get_charts_by_topic($api_title);
			
        }else {
          $topics = 'all_topics';
        }
      }
      ob_start();
      include( SECMCAAPI_PATH . 'shortcodes/EMFA/enfa-params-shortcode.php');
      $contenido = ob_get_contents();
      ob_end_clean();
      return $contenido;
    }

    //emfa chart shortcode
    public function scm_emfa_chart_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $emfa_categories = carbon_get_theme_option( 'emfa_crb_cat' );
      $paramsID = carbon_get_theme_option( 'emfa_crb_select_query' );
      
      if(isset($_GET["idChart"])) {
          $chartID = urldecode($_GET["idChart"]);
      }
      if(isset($_GET["years"])) {
          $years = urldecode($_GET["years"]);
      }
      if(isset($_GET["mouths"])) {
          $mouths = urldecode($_GET["mouths"]);
      }
      if(isset($_GET["country"])) {
          $country = urldecode($_GET["country"]);
      }
      if(isset($_GET["peris"])){
        $peris = urldecode($_GET["peris"]);
      }
      if($chartID == 425){
          //$chart_header = $this->api->get_chart_vars($chartID);
          $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
          
          $data = [];
          $vars = [];
          $periodos = [];

          foreach($all_data as $row) {
            // Setear variables
            if( ! isset( $data[ $row['descripcionVariable'] ] ) ) {
              $data[ $row['descripcionVariable'] ] = [];
              // $vars[] = $row['descripcionVariable'];
            }

            // añadir periodo
            $data[ $row['descripcionVariable'] ][ $row['anno'] . '/' . $row['mes']  ] = $row['resultadoFinal'];
            if( !in_array($row['anno'] . '/' . $row['mes'], $periodos) )
              $periodos[] = $row['anno'] . '/' . $row['mes'];

              $desc_arr = explode("|",$row['descripcionVariable']);
              if($country == 50) {
                if(is_null($desc_arr[1])) {
                  $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                }elseif($desc_arr[1] == " Guatemala") {
                   $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                  $ajs = true; 
                }
              }elseif($country == 17){
                if(is_null($desc_arr[1])) {
                  $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                }elseif($desc_arr[1] == " Honduras") {
                   $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                  $ajs = true; 
                }
              }elseif($country == 3){
                if(is_null($desc_arr[1])) {
                  $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                }elseif($desc_arr[1] == " Costa Rica") {
                   $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                  $ajs = true; 
                }
              }elseif($country == 13){
                if(is_null($desc_arr[1])) {
                  $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                }elseif($desc_arr[1] == " El Salvador") {
                   $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                  $ajs = true; 
                }
              }elseif($country == 161){
                if(is_null($desc_arr[1])) {
                  $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                }elseif(trim($desc_arr[1]) == "Panamá") {
                   $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                  $ajs = true; 
                }
              }elseif($country == 52){
                if(is_null($desc_arr[1])) {
                  $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                }elseif($desc_arr[1] == " República Dominicana") {
                   $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                  $ajs = true; 
                }
              }elseif($country == 4){
                if(is_null($desc_arr[1])) {
                  $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                }elseif(trim($desc_arr[1]) == "Nicaragua") {
                   $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
                  $ajs = true; 
                }
              }elseif($country == 56){
                $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
              }elseif($country == 78){
                $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
              }
          }
          ob_start();
          include( SECMCAAPI_PATH . 'shortcodes/EMFA/panoramaBC-shortcode.php');
          $contenido = ob_get_contents();
          ob_end_clean();
          return $contenido;
      }elseif ($chartID == 426) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {
          // Setear variables
          if( ! isset( $data[ $row['descripcionVariable'] ] ) ) {
            $data[ $row['descripcionVariable'] ] = [];
            $vars[] = $row['descripcionVariable'];
          }

          // añadir periodo
          $data[ $row['descripcionVariable'] ][ $row['anno'] . '/' . $row['mes']  ] = $row['resultadoFinal'];
          if( !in_array($row['anno'] . '/' . $row['mes'], $periodos) )
            $periodos[] = $row['anno'] . '/' . $row['mes'];
        }
        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/panoramaOSD-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 427) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {
          // Setear variables
          if( ! isset( $data[ $row['descripcionVariable'] ] ) ) {
            $data[ $row['descripcionVariable'] ] = [];
            $vars[] = $row['descripcionVariable'];
          }

          // añadir periodo
          $data[ $row['descripcionVariable'] ][ $row['anno'] . '/' . $row['mes']  ] = $row['resultadoFinal'];
          if( !in_array($row['anno'] . '/' . $row['mes'], $periodos) )
            $periodos[] = $row['anno'] . '/' . $row['mes'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/panoramaSD-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 428) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {
          // Setear variables
          if( ! isset( $data[ $row['descripcionVariable'] ] ) ) {
            $data[ $row['descripcionVariable'] ] = [];
            $vars[] = $row['descripcionVariable'];
          }

          // añadir periodo
          $data[ $row['descripcionVariable'] ][ $row['anno'] . '/' . $row['mes']  ] = $row['resultadoFinal'];
          if( !in_array($row['anno'] . '/' . $row['mes'], $periodos) )
            $periodos[] = $row['anno'] . '/' . $row['mes'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/panoramaOSF-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 429) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];
      
        foreach($all_data as $row) {
          // Setear variables
          if( ! isset( $data[ $row['descripcionVariable'] ] ) ) {
            $data[ $row['descripcionVariable'] ] = [];
            
            if($row['descripcionVariable'] != "(AI) Otras partidas (neto) 1/|Nicaragua") {
                if($row['descripcionVariable'] != "AEN+AI=Pasivos|Nicaragua") {
                    if(trim($row['descripcionVariable']) != "Activos internos (AI)|Nicaragua") {
                         $vars[] = $row['descripcionVariable'];  
                    }
                }
               
            }
            
          }
          // añadir periodo
          $data[ $row['descripcionVariable'] ][ $row['anno'] . '/' . $row['mes']  ] = $row['resultadoFinal'];
          if( !in_array($row['anno'] . '/' . $row['mes'], $periodos) )
            $periodos[] = $row['anno'] . '/' . $row['mes'];
        }
        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/panoramaSF-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 445) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/FYU_BC_BM_AMPLIA-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 446) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/FyU_BC_BM_Restringida-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 458) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {
          // Setear variables
          if( ! isset( $data[ $row['descripcionVariable'] ] ) ) {
            $data[ $row['descripcionVariable'] ] = [];
            $vars[] = $row['descripcionVariable'];
          }

          // añadir periodo
          $data[ $row['descripcionVariable'] ][ $row['anno'] . '/' . $row['mes']  ] = $row['resultadoFinal'];
          if( !in_array($row['anno'] . '/' . $row['mes'], $periodos) )
            $periodos[] = $row['anno'] . '/' . $row['mes'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/Base_Monetaria-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 447) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/FyU_OSD_MN_ME-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 459) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {
          // Setear variables
          if( ! isset( $data[ $row['descripcionVariable'] ] ) ) {
            $data[ $row['descripcionVariable'] ] = [];
            $vars[] = $row['descripcionVariable'];
          }

          // añadir periodo
          $data[ $row['descripcionVariable'] ][ $row['anno'] . '/' . $row['mes']  ] = $row['resultadoFinal'];
          if( !in_array($row['anno'] . '/' . $row['mes'], $periodos) )
            $periodos[] = $row['anno'] . '/' . $row['mes'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/Agregados_Monetarios-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 460) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $a => $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {

            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
            
          }

          if( !isset($data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ]) )  {
            $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ][] = round($row['resultadoFinal'], 2);
          }else { 
            $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ][] = round($row['resultadoFinal'], 2);
          }       
            
          //continue;
          //if( !in_array($row['descripcionVariable'], $vars) )
            // $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/Agreg_Mon_x_Sector-shortcode.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 455) {
        $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/Balance_OSD-Resumen.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 448) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/Balance_OSD-Activos.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 449) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/Balance_OSD-MN.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 450) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/Balance_OSD-ME.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 456) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $desc_arr = explode("|",$row['descripcionVariable']);

          if($country == 50) {
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " Guatemala") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 17){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " Honduras") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 3){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " Costa Rica") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 13){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " El Salvador") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 161){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " Panama") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 52){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " República Dominicana") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 4){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif(trim($desc_arr[1]) == "Nicaragua") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 56){
                $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
              }elseif($country == 78){
                $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
              }
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/BC_balance_activos.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 452) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/Balance_OSD-Pasivos.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 453) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/OSD-PASIVOS_MN.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 454) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/OSD-PASIVOS_ME.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 457) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];
        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }
          $desc_arr = explode("|",$row['descripcionVariable']);
          if($country == 50) {
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " Guatemala") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 17){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " Honduras") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 3){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " Costa Rica") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 13){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " El Salvador") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 161){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == "Panamá") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 52){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " República Dominicana") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 4){
            if(is_null($desc_arr[1])) {
              $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
            }elseif($desc_arr[1] == " Nicaragua") {
               $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
              if( !in_array($row['descripcionVariable'], $vars) )
                $vars[] = $row['descripcionVariable'];
              $ajs = true; 
            }
          }elseif($country == 56){
                $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
              }elseif($country == 78){
                $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
                  if( !in_array($row['descripcionVariable'], $vars) )
                    $vars[] = $row['descripcionVariable'];
              }
        }

        

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/BC_balance_pasivos.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 451) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/OSD_Prestamos.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 461) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/BC_CREDITO_SECTOR_PUBLICO.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 462) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/OSD_CREDITO_SECTOR_PUBLICO.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 463) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/BC_COMPOSICION_CAPITAL.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 464) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/OSD_COMPOSICION_CAPITAL.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 465) {
       $all_data = $this->api->emfa_allData($chartID,$country, $years, $mouths, $peris);
        $data = [];
        $vars = [];
        $periodos = [];

        foreach($all_data as $row) {

          if( ! isset( $data[ $row['anno'] . '/' . $row['mes'] ] ) ) {
            $data[ $row['anno'] . '/' . $row['mes'] ] = [];
            $periodos[] = $row['anno'] . '/' . $row['mes'];
          }

          $data[ $row['anno'] . '/' . $row['mes'] ][ $row['descripcionVariable'] ] = $row['resultadoFinal'];
          if( !in_array($row['descripcionVariable'], $vars) )
            $vars[] = $row['descripcionVariable'];
        }

        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/Activos_externos_netos.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 00) {
       $all_data = $this->api->emfa_allData_matriz($country, $years, $mouths);
        $data_a = [];
        $data_b = [];
        $data_c = [];
        $data_d = [];
        $data_e = [];
        $data_f = [];
        $data_g = [];
        $data_h = [];
        $data_i = [];
        $data_j = [];
        $data_k = [];
        $data_l = [];
        $data_m = [];
        $data_n = [];
        $data_o = [];
        foreach($all_data as $k => $data) {
           
            if(is_null($data["position"])) {
                $str = $data["posicion"];
                $row = explode(".",$str);
                switch ($row[0]) {
                    case "1":
                        if( !isset($data_a[$data["posicion"]]) ) {
                            $data_a[$data["posicion"]] = [];
                        }
                        $data_a[$data["posicion"]] = $data["resultado"];
                        $data_a[$data["posicion"]] = $data["resultado"];
                        break;
                    case "2":
                        if( !isset($data_b[$data["posicion"]]) ) {
                            $data_b[$data["posicion"]] = [];
                        }
                        $data_b[$data["posicion"]] = $data["resultado"];
                        break;
                    case "3":
                        if( !isset($data_c[$data["posicion"]]) ) {
                            $data_c[$data["posicion"]] = [];
                        }
                        $data_c[$data["posicion"]] = $data["resultado"];
                        break;
                    case "4":
                        if( !isset($data_d[$data["posicion"]]) ) {
                            $data_d[$data["posicion"]] = [];
                        }
                        $data_d[$data["posicion"]] = $data["resultado"];
                        break;
                    case "5":
                        if( !isset($data_e[$data["posicion"]]) ) {
                            $data_e[$data["posicion"]] = [];
                        }
                        $data_e[$data["posicion"]] = $data["resultado"];
                        break;
                    case "6":
                        if( !isset($data_f[$data["posicion"]]) ) {
                            $data_f[$data["posicion"]] = [];
                        }
                        $data_f[$data["posicion"]] = $data["resultado"];
                        break;                
                    case "7":
                        if( !isset($data_g[$data["posicion"]]) ) {
                            $data_g[$data["posicion"]] = [];
                        }
                        $data_g[$data["posicion"]] = $data["resultado"];
                        break;
                    case "8":
                        if( !isset($data_h[$data["posicion"]]) ) {
                            $data_h[$data["posicion"]] = [];
                        }
                        $data_h[$data["posicion"]] = $data["resultado"];
                        break;
                    case "9":
                        if( !isset($data_i[$data["posicion"]]) ) {
                            $data_i[$data["posicion"]] = [];
                        }
                        $data_i[$data["posicion"]] = $data["resultado"];
                        break; 
                    case "10":
                        if( !isset($data_j[$data["posicion"]]) ) {
                            $data_j[$data["posicion"]] = [];
                        }
                        $data_j[$data["posicion"]] = $data["resultado"];
                        break; 
                    case "11":
                        if( !isset($data_k[$data["posicion"]]) ) {
                            $data_k[$data["posicion"]] = [];
                        }
                        $data_k[$data["posicion"]] = $data["resultado"];
                        break; 
                    case "12":
                        if( !isset($data_l[$data["posicion"]]) ) {
                            $data_l[$data["posicion"]] = [];
                        }
                        $data_l[$data["posicion"]] = $data["resultado"];
                        break; 
                    case "13":
                        if( !isset($data_m[$data["posicion"]]) ) {
                            $data_m[$data["posicion"]] = [];
                        }
                        $data_m[$data["posicion"]] = $data["resultado"];
                        break; 
                    case "14":
                        if( !isset($data_n[$data["posicion"]]) ) {
                            $data_n[$data["posicion"]] = [];
                        }
                        $data_n[$data["posicion"]] = $data["resultado"];
                        break; 
                    case "15":
                        if( !isset($data_o[$data["posicion"]]) ) {
                            $data_o[$data["posicion"]] = [];
                        }
                        $data_o[$data["posicion"]] = $data["resultado"];
                        break; 
                } 
            }else {
                $str = $data["position"];
                $row = explode(".",$str);
                switch ($row[0]) {
                    case "1":
                        if( !isset($data_a[$data["position"]]) ) {
                            $data_a[$data["position"]] = [];
                        }
                        $data_a[$data["position"]] = $data["resultado"];
                        $data_a[$data["posicion"]] = $data["resultado"];
                        break;
                    case "2":
                        if( !isset($data_b[$data["position"]]) ) {
                            $data_b[$data["position"]] = [];
                        }
                        $data_b[$data["position"]] = $data["resultado"];
                        break;
                    case "3":
                        if( !isset($data_c[$data["position"]]) ) {
                            $data_c[$data["position"]] = [];
                        }
                        $data_c[$data["position"]] = $data["resultado"];
                        break;
                    case "4":
                        if( !isset($data_d[$data["position"]]) ) {
                            $data_d[$data["position"]] = [];
                        }
                        $data_d[$data["position"]] = $data["resultado"];
                        break;
                    case "5":
                        if( !isset($data_e[$data["position"]]) ) {
                            $data_e[$data["position"]] = [];
                        }
                        $data_e[$data["position"]] = $data["resultado"];
                        break;
                    case "6":
                        if( !isset($data_f[$data["position"]]) ) {
                            $data_f[$data["position"]] = [];
                        }
                        $data_f[$data["position"]] = $data["resultado"];
                        break;                
                    case "7":
                        if( !isset($data_g[$data["position"]]) ) {
                            $data_g[$data["position"]] = [];
                        }
                        $data_g[$data["position"]] = $data["resultado"];
                        break;
                    case "8":
                        if( !isset($data_h[$data["position"]]) ) {
                            $data_h[$data["position"]] = [];
                        }
                        $data_h[$data["position"]] = $data["resultado"];
                        break;
                    case "9":
                        if( !isset($data_i[$data["position"]]) ) {
                            $data_i[$data["position"]] = [];
                        }
                        $data_i[$data["position"]] = $data["resultado"];
                        break; 
                    case "10":
                        if( !isset($data_j[$data["position"]]) ) {
                            $data_j[$data["position"]] = [];
                        }
                        $data_j[$data["position"]] = $data["resultado"];
                        break; 
                    case "11":
                        if( !isset($data_k[$data["position"]]) ) {
                            $data_k[$data["position"]] = [];
                        }
                        $data_k[$data["position"]] = $data["resultado"];
                        break; 
                    case "12":
                        if( !isset($data_l[$data["position"]]) ) {
                            $data_l[$data["position"]] = [];
                        }
                        $data_l[$data["position"]] = $data["resultado"];
                        break; 
                    case "13":
                        if( !isset($data_m[$data["position"]]) ) {
                            $data_m[$data["position"]] = [];
                        }
                        $data_m[$data["position"]] = $data["resultado"];
                        break; 
                    case "14":
                        if( !isset($data_n[$data["position"]]) ) {
                            $data_n[$data["position"]] = [];
                        }
                        $data_n[$data["position"]] = $data["resultado"];
                        break; 
                    case "15":
                        if( !isset($data_o[$data["position"]]) ) {
                            $data_o[$data["position"]] = [];
                        }
                        $data_o[$data["position"]] = $data["resultado"];
                        break; 
                }   
            }
        }
        ksort($data_a, SORT_NATURAL);
        ksort($data_b, SORT_NATURAL);
        ksort($data_c, SORT_NATURAL);
        ksort($data_d, SORT_NATURAL);
        ksort($data_e, SORT_NATURAL);
        ksort($data_f, SORT_NATURAL);
        ksort($data_g, SORT_NATURAL);
        ksort($data_h, SORT_NATURAL);
        ksort($data_i, SORT_NATURAL);
        ksort($data_j, SORT_NATURAL);
        ksort($data_k, SORT_NATURAL);
        ksort($data_l, SORT_NATURAL);
        ksort($data_m, SORT_NATURAL);
        ksort($data_n, SORT_NATURAL);
        ksort($data_o, SORT_NATURAL);
        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/matriz_bc.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }elseif ($chartID == 01) {
       $all_data = $this->api->emfa_allData_matriz2($country, $years, $mouths);
        $data_a = [];
        $data_b = [];
        $data_c = [];
        $data_d = [];
        $data_e = [];
        $data_f = [];
        $data_g = [];
        $data_h = [];
        $data_i = [];
        $data_j = [];
        $data_k = [];
        $data_l = [];
        $data_m = [];
        $data_n = [];
        $data_o = [];
        foreach($all_data as $k => $data) {
            if(is_null($data["position"])) {
                $str = $data["posicion"];
            $row = explode(".",$str);
            switch ($row[0]) {
                case "1":
                    if( !isset($data_a[$data["posicion"]]) ) {
                        $data_a[$data["posicion"]] = [];
                    }
                    $data_a[$data["posicion"]] = $data["resultado"];
                    break;
                case "2":
                    if( !isset($data_b[$data["posicion"]]) ) {
                        $data_b[$data["posicion"]] = [];
                    }
                    $data_b[$data["posicion"]] = $data["resultado"];
                    break;
                case "3":
                    if( !isset($data_c[$data["posicion"]]) ) {
                        $data_c[$data["posicion"]] = [];
                    }
                    $data_c[$data["posicion"]] = $data["resultado"];
                    break;
                case "4":
                    if( !isset($data_d[$data["posicion"]]) ) {
                        $data_d[$data["posicion"]] = [];
                    }
                    $data_d[$data["posicion"]] = $data["resultado"];
                    break;
                case "5":
                    if( !isset($data_e[$data["posicion"]]) ) {
                        $data_e[$data["posicion"]] = [];
                    }
                    $data_e[$data["posicion"]] = $data["resultado"];
                    break;
                case "6":
                    if( !isset($data_f[$data["posicion"]]) ) {
                        $data_f[$data["posicion"]] = [];
                    }
                    $data_f[$data["posicion"]] = $data["resultado"];
                    break;                
                case "7":
                    if( !isset($data_g[$data["posicion"]]) ) {
                        $data_g[$data["posicion"]] = [];
                    }
                    $data_g[$data["posicion"]] = $data["resultado"];
                    break;
                case "8":
                    if( !isset($data_h[$data["posicion"]]) ) {
                        $data_h[$data["posicion"]] = [];
                    }
                    $data_h[$data["posicion"]] = $data["resultado"];
                    break;
                case "9":
                    if( !isset($data_i[$data["posicion"]]) ) {
                        $data_i[$data["posicion"]] = [];
                    }
                    $data_i[$data["posicion"]] = $data["resultado"];
                    break; 
                case "10":
                    if( !isset($data_j[$data["posicion"]]) ) {
                        $data_j[$data["posicion"]] = [];
                    }
                    $data_j[$data["posicion"]] = $data["resultado"];
                    break; 
                case "11":
                    if( !isset($data_k[$data["posicion"]]) ) {
                        $data_k[$data["posicion"]] = [];
                    }
                    $data_k[$data["posicion"]] = $data["resultado"];
                    break; 
                case "12":
                    if( !isset($data_l[$data["posicion"]]) ) {
                        $data_l[$data["posicion"]] = [];
                    }
                    $data_l[$data["posicion"]] = $data["resultado"];
                    break; 
                case "13":
                    if( !isset($data_m[$data["posicion"]]) ) {
                        $data_m[$data["posicion"]] = [];
                    }
                    $data_m[$data["posicion"]] = $data["resultado"];
                    break; 
                case "14":
                    if( !isset($data_n[$data["posicion"]]) ) {
                        $data_n[$data["posicion"]] = [];
                    }
                    $data_n[$data["posicion"]] = $data["resultado"];
                    break; 
                case "15":
                    if( !isset($data_o[$data["posicion"]]) ) {
                        $data_o[$data["posicion"]] = [];
                    }
                    $data_o[$data["posicion"]] = $data["resultado"];
                    break; 
            }
            }else {
               $str = $data["position"];
            $row = explode(".",$str);
            switch ($row[0]) {
                case "1":
                    if( !isset($data_a[$data["position"]]) ) {
                        $data_a[$data["position"]] = [];
                    }
                    $data_a[$data["position"]] = $data["resultado"];
                    break;
                case "2":
                    if( !isset($data_b[$data["position"]]) ) {
                        $data_b[$data["position"]] = [];
                    }
                    $data_b[$data["position"]] = $data["resultado"];
                    break;
                case "3":
                    if( !isset($data_c[$data["position"]]) ) {
                        $data_c[$data["position"]] = [];
                    }
                    $data_c[$data["position"]] = $data["resultado"];
                    break;
                case "4":
                    if( !isset($data_d[$data["position"]]) ) {
                        $data_d[$data["position"]] = [];
                    }
                    $data_d[$data["position"]] = $data["resultado"];
                    break;
                case "5":
                    if( !isset($data_e[$data["position"]]) ) {
                        $data_e[$data["position"]] = [];
                    }
                    $data_e[$data["position"]] = $data["resultado"];
                    break;
                case "6":
                    if( !isset($data_f[$data["position"]]) ) {
                        $data_f[$data["position"]] = [];
                    }
                    $data_f[$data["position"]] = $data["resultado"];
                    break;                
                case "7":
                    if( !isset($data_g[$data["position"]]) ) {
                        $data_g[$data["position"]] = [];
                    }
                    $data_g[$data["position"]] = $data["resultado"];
                    break;
                case "8":
                    if( !isset($data_h[$data["position"]]) ) {
                        $data_h[$data["position"]] = [];
                    }
                    $data_h[$data["position"]] = $data["resultado"];
                    break;
                case "9":
                    if( !isset($data_i[$data["position"]]) ) {
                        $data_i[$data["position"]] = [];
                    }
                    $data_i[$data["position"]] = $data["resultado"];
                    break; 
                case "10":
                    if( !isset($data_j[$data["position"]]) ) {
                        $data_j[$data["position"]] = [];
                    }
                    $data_j[$data["position"]] = $data["resultado"];
                    break; 
                case "11":
                    if( !isset($data_k[$data["position"]]) ) {
                        $data_k[$data["position"]] = [];
                    }
                    $data_k[$data["position"]] = $data["resultado"];
                    break; 
                case "12":
                    if( !isset($data_l[$data["position"]]) ) {
                        $data_l[$data["position"]] = [];
                    }
                    $data_l[$data["position"]] = $data["resultado"];
                    break; 
                case "13":
                    if( !isset($data_m[$data["position"]]) ) {
                        $data_m[$data["position"]] = [];
                    }
                    $data_m[$data["position"]] = $data["resultado"];
                    break; 
                case "14":
                    if( !isset($data_n[$data["position"]]) ) {
                        $data_n[$data["position"]] = [];
                    }
                    $data_n[$data["position"]] = $data["resultado"];
                    break; 
                case "15":
                    if( !isset($data_o[$data["position"]]) ) {
                        $data_o[$data["position"]] = [];
                    }
                    $data_o[$data["position"]] = $data["resultado"];
                    break; 
            } 
            }
            
        }
        ksort($data_a, SORT_NATURAL);
        ksort($data_b, SORT_NATURAL);
        ksort($data_c, SORT_NATURAL);
        ksort($data_d, SORT_NATURAL);
        ksort($data_e, SORT_NATURAL);
        ksort($data_f, SORT_NATURAL);
        ksort($data_g, SORT_NATURAL);
        ksort($data_h, SORT_NATURAL);
        ksort($data_i, SORT_NATURAL);
        ksort($data_j, SORT_NATURAL);
        ksort($data_k, SORT_NATURAL);
        ksort($data_l, SORT_NATURAL);
        ksort($data_m, SORT_NATURAL);
        ksort($data_n, SORT_NATURAL);
        ksort($data_o, SORT_NATURAL);
        ob_start();
        include( SECMCAAPI_PATH . 'shortcodes/EMFA/matriz_osd.php');
        $contenido = ob_get_contents();
        ob_end_clean();
        return $contenido;
      }
    }

    // ---->EMFA<---- //

    // ----EFPA---- //
    // Estadísticas de Finanzas Públicas Armonizadas
    
    //efpa list shortcode
    public function scm_efpa_list_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $efpa_categories = carbon_get_theme_option( 'efpa_crb_cat' );
      $pageID = carbon_get_theme_option( 'efpa_crb_select_query' );
      ob_start();
      include( SECMCAAPI_PATH . 'shortcodes/EFPA/efpa-list-shortcode.php');
      $contenido = ob_get_contents();
      ob_end_clean();
      return "$contenido";
    }

    //efpa params shortcode
    public function scm_efpa_params_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $efpa_categories = carbon_get_theme_option( 'efpa_crb_cat' );
      $resultpageID = carbon_get_theme_option( 'efpa_crb_select_results' );
      
      if(isset($_GET["cuadro"])) {
        $cuadro = urldecode($_GET["cuadro"]);
        $paramsID = carbon_get_theme_option( 'efpa_crb_select_query' );
        // Obtener las variables del cuadro seleccionado
        $variables = $this->api->efpa_get_variables_by_cuadro($cuadro);
      }
      
      ob_start();
      include( SECMCAAPI_PATH . 'shortcodes/EFPA/efpa-params-shortcode.php');
      $contenido = ob_get_contents();
      ob_end_clean();
      return $contenido;
    }

    //efpa chart shortcode
    public function scm_efpa_chart_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $efpa_categories = carbon_get_theme_option( 'efpa_crb_cat' );
      $paramsID = carbon_get_theme_option( 'efpa_crb_select_query' );
      
      // Obtener parámetros de la URL - soportando arrays para múltiples selecciones
      $cuadro = isset($_GET["cuadro"]) ? $_GET["cuadro"] : '';
      
      // Variables y países pueden ser arrays (selección múltiple)
      $variables = isset($_GET["variable"]) ? $_GET["variable"] : '';
      $paises = isset($_GET["pais"]) ? $_GET["pais"] : '';
      
      // Si no son arrays, convertirlos a arrays para procesamiento uniforme
      if (!is_array($variables)) {
        $variables = array($variables);
      }
      if (!is_array($paises)) {
        $paises = array($paises);
      }
      
      $frecuencia = isset($_GET["frecuencia"]) ? urldecode($_GET["frecuencia"]) : '';
      $sector = isset($_GET["sector"]) ? urldecode($_GET["sector"]) : '';
      $subsector = isset($_GET["subsector"]) ? urldecode($_GET["subsector"]) : '_Z';
      $fechaInicio = isset($_GET["fechaInicio"]) ? urldecode($_GET["fechaInicio"]) : '';
      $fechaFin = isset($_GET["fechaFin"]) ? urldecode($_GET["fechaFin"]) : '';
      
      // Combinar todos los datos de múltiples llamadas
      $all_data = array();
      $debug_urls = array();
      
      // Hacer llamadas a la API para cada combinación de país y variable
      foreach ($paises as $pais) {
        foreach ($variables as $variable) {
          // Construir URL completa para debug
          $debug_url = sprintf(
            'http://192.168.100.137:8081/simafir_api/ws/public/efpa/obtenerDatos/%s/%s/%s/%s/%s/%s?fechaInicio=%s&fechaFin=%s&formato=json',
            urlencode($cuadro),
            urlencode($variable),
            urlencode($pais),
            urlencode($frecuencia),
            urlencode($sector),
            urlencode($subsector),
            urlencode($fechaInicio),
            urlencode($fechaFin)
          );
          $debug_urls[] = $debug_url;
          
          // Obtener datos de la API EFPA para esta combinación
          $result = $this->api->efpa_get_data(
            $cuadro, 
            $variable, 
            $pais, 
            $frecuencia, 
            $sector, 
            $subsector, 
            $fechaInicio, 
            $fechaFin
          );
          
          // Si hay error, guardar información del error
          if (isset($result['error']) && $result['error'] === true) {
            $all_data = $result; // Guardar el error para mostrarlo
            break 2; // Salir de ambos loops
          }
          
          // Agregar los datos al array combinado
          if (is_array($result) && !empty($result)) {
            // Agregar información de país y variable a cada registro
            foreach ($result as $item) {
              $item['_pais'] = $pais;
              $item['_variable'] = $variable;
              $all_data[] = $item;
            }
          }
        }
      }
      
      // Guardar parámetros para debug
      $debug_params = array(
        'cuadro' => $cuadro,
        'variables' => $variables,
        'paises' => $paises,
        'frecuencia' => $frecuencia,
        'sector' => $sector,
        'subsector' => $subsector,
        'fechaInicio' => $fechaInicio,
        'fechaFin' => $fechaFin
      );
      
      // Para compatibilidad con el template, crear variables individuales con el primer valor
      $variable = !empty($variables) ? $variables[0] : '';
      $pais = !empty($paises) ? $paises[0] : '';
      $debug_url = !empty($debug_urls) ? $debug_urls[0] : '';
      
      ob_start();
      include( SECMCAAPI_PATH . 'shortcodes/EFPA/efpa-chart-shortcode.php');
      $contenido = ob_get_contents();
      ob_end_clean();
      return $contenido;
    }

    // ---->EFPA<---- //

    // ----ESEA---- //

    //esea list shortcode
    public function scm_esea_list_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $esea_categories = carbon_get_theme_option( 'esea_crb_cat' );
      $pageID = carbon_get_theme_option( 'esea_crb_select_results' );
      ob_start();
      include( SECMCAAPI_PATH . 'shortcodes/ESEA/esea-list-shortcode.php');
      $contenido = ob_get_contents();
      ob_end_clean();
      return "$contenido";
    }

    //esea params shortcode
    public function scm_esea_params_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $esea_categories = carbon_get_theme_option( 'esea_crb_cat' );
      $resultpageID = carbon_get_theme_option( 'esea_crb_select_results' );
      if(isset($_GET["api"])) {
          $chartID = urldecode($_GET["idChart"]);
          $paramsID = carbon_get_theme_option( 'esea_crb_select_query' );
          $api_title = urldecode($_GET["api"]);
          $topics = $this->api->get_charts_by_topic($api_title);
          //$chart_header = $this->api->get_chart_vars($chartID);
      }
      ob_start();
      include( SECMCAAPI_PATH . 'shortcodes/ESEA/ensea-params-shortcode.php');
      $contenido = ob_get_contents();
      ob_end_clean();
      return $contenido;
    }

    //esea chart shortcode
    public function scm_esea_chart_shortcode() {
      // Mostrar imagen de mantenimiento para usuarios no logueados
      if (!is_user_logged_in()) {
        return $this->scm_maintenance_image();
      }
      
      $esea_categories = carbon_get_theme_option( 'esea_crb_cat' );
      $paramsID = carbon_get_theme_option( 'esea_crb_select_query' );
          $resultpageID = carbon_get_theme_option( 'esea_crb_select_results' );
          $chartID = urldecode($_GET["chartid"]);
      
      // DEBUG TEMPORAL: Mostrar chartID recibido
      if (is_user_logged_in() && !empty($chartID)) {
          echo "<div style='background: #d1ecf1; border: 2px solid #0c5460; padding: 15px; margin: 10px;'>";
          echo "<strong>🔍 DEBUG - scm_esea_chart_shortcode()</strong><br>";
          echo "- chartID recibido: <strong>" . esc_html($chartID) . "</strong><br>";
          echo "- Tipo: " . gettype($chartID) . "<br>";
          echo "- epID: " . (isset($_GET["epID"]) ? esc_html($_GET["epID"]) : 'No definido') . "<br>";
          echo "- subject: " . (isset($_GET["subject"]) ? esc_html($_GET["subject"]) : 'No definido') . "<br>";
          echo "- finaldates: " . (isset($_GET["finaldates"]) ? esc_html($_GET["finaldates"]) : 'No definido') . "<br>";
          echo "</div>";
      }
			
          if($chartID == 442) {
            if(isset($_GET["finaldates"])){
              // $years = urldecode($_GET["years"]);
              $country = urldecode($_GET["country"]);
              $finaldates = $_GET["finaldates"];
              
              // API v2: Usar chartID como identificador del formulario
              $formulario = $chartID;

              if(isset($_GET["epID"]) && $_GET["epID"] == 0) {
                // Usar chartID directamente (ej: 442)
                // API v2 endpoint: /public/v1/esea/obtenerDatos/{formulario}/{pais}?fechaInicio=dd-mm-yyyy&fechaFin=dd-mm-yyyy
                $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
              }elseif($_GET["epID"] == 1) {
                // Usar chartID directamente (ej: 442)
                $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
              }
            }else {
              // FALLBACK: Cuando no hay finaldates, usar años/períodos de configuración
              // API v2: Usar chartID como identificador del formulario
              $formulario = $chartID;
              $country = '3'; // País predeterminado
              
              if(isset($_GET["epID"]) && $_GET["epID"] == 0) {
                // Construir fechas desde años/períodos de configuración
                $year1 = $esea_categories[0]['esea_sub_crb_cat'][0]['esea_years'];
                $period1 = $esea_categories[0]['esea_sub_crb_cat'][0]['esea_periodo'];
                $finaldates1 = "01-01-{$year1}/31-12-{$year1}"; // Convertir a formato dd-mm-yyyy
                
                $year2 = $esea_categories[0]['esea_sub_crb_cat'][0]['esea_years1'];
                $period2 = $esea_categories[0]['esea_sub_crb_cat'][0]['esea_periodo1'];
                $finaldates2 = "01-01-{$year2}/31-12-{$year2}";
                
                $all_data1 = $this->api->esea_allData2($country, $finaldates1, $formulario);
                $all_data2 = $this->api->esea_allData2($country, $finaldates2, $formulario);
                $all_data = array_merge($all_data1, $all_data2);
                
              }elseif($_GET["epID"] == 1) {
                // Construir fechas desde años/períodos de configuración
                $year1 = $esea_categories[0]['esea_sub_crb_cat'][1]['esea_years'];
                $period1 = $esea_categories[0]['esea_sub_crb_cat'][1]['esea_periodo'];
                $finaldates1 = "01-01-{$year1}/31-12-{$year1}";
                
                $year2 = $esea_categories[0]['esea_sub_crb_cat'][1]['esea_years1'];
                $period2 = $esea_categories[0]['esea_sub_crb_cat'][1]['esea_periodo1'];
                $finaldates2 = "01-01-{$year2}/31-12-{$year2}";
                
                $all_data1 = $this->api->esea_allData2($country, $finaldates1, $formulario);
                $all_data2 = $this->api->esea_allData2($country, $finaldates2, $formulario);
                $all_data = array_merge($all_data1, $all_data2);
              }
            }

            $data = [];
            $vars = [];
            $periodos = [];
            // var_dump($all_data);

            foreach($all_data as $row) {

            if( ! isset( $data[ $row['anno'] . '/' . $row['periodo'] ] ) ) {
              $data[ $row['anno'] . '/' . $row['periodo'] ] = [];
              $periodos[] = $row['anno'] . '/' . $row['periodo'];
            }

            $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ] = [];
            $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["valor"] = $row['valorCalculado'];
            $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["desc"] = $row['descripcionMaestroDetalle'];
            $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["nd"] = $row['nd'];
            if( !in_array($row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'], $vars) )
              $vars[] = $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'];
            }

            ob_start();
            include( SECMCAAPI_PATH . 'shortcodes/ESEA/Balanza_pagos.php');
            $contenido = ob_get_contents();
            ob_end_clean();
            return $contenido;

          }elseif ($chartID == 444) {
             if(isset($_GET["finaldates"])){
              $country = urldecode($_GET["country"]);
              $finaldates = $_GET["finaldates"];
              
              // API v2: Usar chartID como identificador del formulario
              $formulario = $chartID;

              if(isset($_GET["epID"]) && $_GET["epID"] == 0) {
                // Usar chartID directamente (ej: 444)
                $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
                
              }elseif($_GET["epID"] == 1) {
                // Usar chartID directamente (ej: 444)
                $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
                
              }elseif($_GET["epID"] == 2) {
                  // Usar chartID directamente (ej: 444)
                  $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
              }
            }else {
              // FALLBACK: Cuando no hay finaldates, usar años/períodos de configuración
              // API v2: Usar chartID como identificador del formulario
              $formulario = $chartID;
              $country = '95'; // País predeterminado para Activos de Reserva
              
              if(isset($_GET["epID"]) && $_GET["epID"] == 0) {
                $year1 = $esea_categories[1]['esea_sub_crb_cat'][0]['esea_years'];
                $finaldates1 = "01-01-{$year1}/31-12-{$year1}";
                $year2 = $esea_categories[1]['esea_sub_crb_cat'][0]['esea_years1'];
                $finaldates2 = "01-01-{$year2}/31-12-{$year2}";
                
                $all_data1 = $this->api->esea_allData2($country, $finaldates1, $formulario);
                $all_data2 = $this->api->esea_allData2($country, $finaldates2, $formulario);
                $all_data = array_merge($all_data1, $all_data2);
              }elseif($_GET["epID"] == 1) {
                $year1 = $esea_categories[1]['esea_sub_crb_cat'][1]['esea_years'];
                $finaldates1 = "01-01-{$year1}/31-12-{$year1}";
                $year2 = $esea_categories[1]['esea_sub_crb_cat'][1]['esea_years1'];
                $finaldates2 = "01-01-{$year2}/31-12-{$year2}";
                
                $all_data1 = $this->api->esea_allData2($country, $finaldates1, $formulario);
                $all_data2 = $this->api->esea_allData2($country, $finaldates2, $formulario);
                $all_data = array_merge($all_data1, $all_data2);
           
              }elseif($_GET["epID"] == 2) {
                  $year1 = $esea_categories[1]['esea_sub_crb_cat'][2]['esea_years'];
                  $finaldates1 = "01-01-{$year1}/31-12-{$year1}";
                  $year2 = $esea_categories[1]['esea_sub_crb_cat'][2]['esea_years1'];
                  $finaldates2 = "01-01-{$year2}/31-12-{$year2}";
                  
                  $all_data1 = $this->api->esea_allData2($country, $finaldates1, $formulario);
                  $all_data2 = $this->api->esea_allData2($country, $finaldates2, $formulario);
                  $all_data = array_merge($all_data1, $all_data2);
              }

            }

               $data = [];
                $vars = [];
                $periodos = [];

                foreach($all_data as $row) {

                if( ! isset( $data[ $row['anno'] . '/' . $row['periodo'] ] ) ) {
                  $data[ $row['anno'] . '/' . $row['periodo'] ] = [];
                  $periodos[] = $row['anno'] . '/' . $row['periodo'];
                }

                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ] = [];
                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["valor"] = $row['valorCalculado'];
                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["desc"] = $row['descripcionMaestroDetalle'];
                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["nd"] = $row['nd'];
                if( !in_array($row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'], $vars) )
                      $vars[] = $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'];
                }

              ob_start();
              include( SECMCAAPI_PATH . 'shortcodes/ESEA/activos_reserva_liquidez_ME.php');
              $contenido = ob_get_contents();
              ob_end_clean();
              return $contenido;
          }elseif ($chartID == 443) {
             if(isset($_GET["finaldates"])){
              $country = urldecode($_GET["country"]);
              $finaldates = $_GET["finaldates"];
              
              // API v2: Usar chartID como identificador del formulario
              $formulario = $chartID;

               if(isset($_GET["epID"]) && $_GET["epID"] == 0) {
                // Usar chartID directamente (ej: 443)
                $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
                
              }elseif($_GET["epID"] == 1) {
                // Usar chartID directamente (ej: 443)
                $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
                
              }elseif($_GET["epID"] == 2) {
                
                $yeararr = explode('/', $finaldates);
                if($yeararr[1] == 5) {
                    $newURL = 'test2';
                }else {
                    $newURL = 'test3';
                }
                $all_data = $this->api->esea_allData($newURL, $country, $yeararr[0], $yeararr[1]);
                $data_a = [];
                $data_b = [];
                $data_c = [];
                $data_d = [];
                $data_e = [];
                $data_f = [];
                $data_g = [];
                $data_h = [];
                $data_i = [];
                $data_j = [];
                $data_k = [];
                $data_l = [];
                $data_m = [];
                $data_n = [];
                $data_o = [];
                
                $data_p = [];
                $data_q = [];
                $data_r = [];
                $data_s = [];
                $data_t = [];
                $data_u = [];
                $data_v = [];
                $data_w = [];
                $data_x = [];
                $data_y = [];
                $data_z = [];
                $data_a1 = [];
                $data_a2 = [];
                $data_a3 = [];
                $data_a4 = [];
                $data_a5 = [];
                $data_a6 = [];
                $data_a7 = [];
                $data_a8 = [];
                $data_a9 = [];
                
                $ordenedbyper = [];
                foreach($all_data as $k => $data) {
                    $periodo = $data["periodo"];
                    if( !isset($ordenedbyper[$periodo]) ) {
                        $ordenedbyper[$periodo] = [];
                    }
                    $ordenedbyper[$periodo][] = $data;
                }
                
                 foreach($ordenedbyper as $k => $data) {
                    foreach($data as $x => $innerdata) {
                        $str = $innerdata["posicion"];
                        $row = explode(".",$str);
                        switch ($row[0]) {
                            case "0":
                                if( !isset($data_a[$k][$innerdata["posicion"]]) ) {
                                    $data_a[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "2":
                                if( !isset($data_b[$k][$innerdata["posicion"]]) ) {
                                    $data_b[$k][$innerdata["posicion"]] = [];
                                }
                                $data_b[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "3":
                                if( !isset($data_c[$k][$innerdata["posicion"]]) ) {
                                    $data_c[$k][$innerdata["posicion"]] = [];
                                }
                                $data_c[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "4":
                                if( !isset($data_d[$k][$innerdata["posicion"]]) ) {
                                    $data_d[$k][$innerdata["posicion"]] = [];
                                }
                                $data_d[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break; 
                            case "5":
                                if( !isset($data_e[$k][$innerdata["posicion"]]) ) {
                                    $data_e[$k][$innerdata["posicion"]] = [];
                                }
                                $data_e[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break; 
                            case "6":
                                if( !isset($data_f[$k][$innerdata["posicion"]]) ) {
                                    $data_f[$k][$innerdata["posicion"]] = [];
                                }
                                $data_f[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "7":
                                if( !isset($data_g[$k][$innerdata["posicion"]]) ) {
                                    $data_g[$k][$innerdata["posicion"]] = [];
                                }
                                $data_g[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "8":
                                if( !isset($data_h[$k][$innerdata["posicion"]]) ) {
                                    $data_h[$k][$innerdata["posicion"]] = [];
                                }
                                $data_h[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break; 
                            case "9":
                                if( !isset($data_i[$k][$innerdata["posicion"]]) ) {
                                    $data_i[$k][$innerdata["posicion"]] = [];
                                }
                                $data_i[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "10":
                                if( !isset($data_j[$k][$innerdata["posicion"]]) ) {
                                    $data_j[$k][$innerdata["posicion"]] = [];
                                }
                                $data_j[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "11":
                                if( !isset($data_k[$k][$innerdata["posicion"]]) ) {
                                    $data_k[$k][$innerdata["posicion"]] = [];
                                }
                                $data_k[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "12":
                                if( !isset($data_l[$k][$innerdata["posicion"]]) ) {
                                    $data_l[$k][$innerdata["posicion"]] = [];
                                }
                                $data_l[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break; 
                            case "13":
                                if( !isset($data_m[$k][$innerdata["posicion"]]) ) {
                                    $data_m[$k][$innerdata["posicion"]] = [];
                                }
                                $data_m[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "14":
                                if( !isset($data_n[$k][$innerdata["posicion"]]) ) {
                                    $data_n[$k][$innerdata["posicion"]] = [];
                                }
                                $data_n[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "15":
                                if( !isset($data_o[$k][$innerdata["posicion"]]) ) {
                                    $data_o[$k][$innerdata["posicion"]] = [];
                                }
                                $data_o[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "16":
                                if( !isset($data_p[$k][$innerdata["posicion"]]) ) {
                                    $data_p[$k][$innerdata["posicion"]] = [];
                                }
                                $data_p[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "17":
                                if( !isset($data_q[$k][$innerdata["posicion"]]) ) {
                                    $data_q[$k][$innerdata["posicion"]] = [];
                                }
                                $data_q[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "18":
                                if( !isset($data_r[$k][$innerdata["posicion"]]) ) {
                                    $data_r[$k][$innerdata["posicion"]] = [];
                                }
                                $data_r[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "19":
                                if( !isset($data_s[$k][$innerdata["posicion"]]) ) {
                                    $data_s[$k][$innerdata["posicion"]] = [];
                                }
                                $data_s[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "20":
                                if( !isset($data_t[$k][$innerdata["posicion"]]) ) {
                                    $data_t[$k][$innerdata["posicion"]] = [];
                                }
                                $data_t[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "21":
                                if( !isset($data_u[$k][$innerdata["posicion"]]) ) {
                                    $data_u[$k][$innerdata["posicion"]] = [];
                                }
                                $data_u[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "22":
                                if( !isset($data_v[$k][$innerdata["posicion"]]) ) {
                                    $data_v[$k][$innerdata["posicion"]] = [];
                                }
                                $data_v[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "23":
                                if( !isset($data_w[$k][$innerdata["posicion"]]) ) {
                                    $data_w[$k][$innerdata["posicion"]] = [];
                                }
                                $data_w[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "24":
                                if( !isset($data_x[$k][$innerdata["posicion"]]) ) {
                                    $data_x[$k][$innerdata["posicion"]] = [];
                                }
                                $data_x[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "25":
                                if( !isset($data_y[$k][$innerdata["posicion"]]) ) {
                                    $data_y[$k][$innerdata["posicion"]] = [];
                                }
                                $data_y[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "26":
                                if( !isset($data_z[$k][$innerdata["posicion"]]) ) {
                                    $data_z[$k][$innerdata["posicion"]] = [];
                                }
                                $data_z[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "27":
                                if( !isset($data_a1[$k][$innerdata["posicion"]]) ) {
                                    $data_a1[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a1[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "28":
                                if( !isset($data_a2[$k][$innerdata["posicion"]]) ) {
                                    $data_a2[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a2[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "29":
                                if( !isset($data_a3[$k][$innerdata["posicion"]]) ) {
                                    $data_a3[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a3[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "30":
                                if( !isset($data_a4[$k][$innerdata["posicion"]]) ) {
                                    $data_a4[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a4[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "31":
                                if( !isset($data_a5[$k][$innerdata["posicion"]]) ) {
                                    $data_a5[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a5[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "32":
                                if( !isset($data_a6[$k][$innerdata["posicion"]]) ) {
                                    $data_a6[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a6[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "33":
                                if( !isset($data_a7[$k][$innerdata["posicion"]]) ) {
                                    $data_a7[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a7[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "34":
                                if( !isset($data_a8[$k][$innerdata["posicion"]]) ) {
                                    $data_a8[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a8[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "35":
                                if( !isset($data_a9[$k][$innerdata["posicion"]]) ) {
                                    $data_a9[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a9[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "36":
                                if( !isset($data_a10[$k][$innerdata["posicion"]]) ) {
                                    $data_a10[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a10[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                            case "37":
                                if( !isset($data_a11[$k][$innerdata["posicion"]]) ) {
                                    $data_a11[$k][$innerdata["posicion"]] = [];
                                }
                                $data_a11[$k][$innerdata["posicion"]] = $innerdata["resultado"];
                            break;
                        }
                    }
                }
                
               
                ksort($data_a, SORT_NATURAL);
                ksort($data_b, SORT_NATURAL);
                ksort($data_c, SORT_NATURAL);
                ksort($data_d, SORT_NATURAL);
                ksort($data_e, SORT_NATURAL);
                ksort($data_f, SORT_NATURAL);
                ksort($data_g, SORT_NATURAL);
                ksort($data_h, SORT_NATURAL);
                ksort($data_i, SORT_NATURAL);
                ksort($data_j, SORT_NATURAL);
                ksort($data_k, SORT_NATURAL);
                ksort($data_l, SORT_NATURAL);
                ksort($data_m, SORT_NATURAL);
                ksort($data_n, SORT_NATURAL);
                ksort($data_o, SORT_NATURAL);

                ksort($data_p, SORT_NATURAL);
                ksort($data_q, SORT_NATURAL);
                ksort($data_r, SORT_NATURAL);
                ksort($data_s, SORT_NATURAL);
                ksort($data_t, SORT_NATURAL);
                ksort($data_u, SORT_NATURAL);
                ksort($data_v, SORT_NATURAL);
                ksort($data_w, SORT_NATURAL);
                ksort($data_x, SORT_NATURAL);
                ksort($data_y, SORT_NATURAL);
                ksort($data_z, SORT_NATURAL);
                ksort($data_a1, SORT_NATURAL);
                ksort($data_a2, SORT_NATURAL);
                ksort($data_a3, SORT_NATURAL);
                ksort($data_a4, SORT_NATURAL);
                ksort($data_a5, SORT_NATURAL);
                ksort($data_a6, SORT_NATURAL);
                ksort($data_a7, SORT_NATURAL);
                ksort($data_a8, SORT_NATURAL);
                ksort($data_a9, SORT_NATURAL);
              }
            }else {
               if(isset($_GET["epID"]) && $_GET["epID"] == 0) {
                $newURL1 = 'Posicion%20de%20Inversion%20Internacional-Presentacion%20Resumida/4/' . $esea_categories[2]['esea_sub_crb_cat'][0]['esea_years'] . '/' .  $esea_categories[2]['esea_sub_crb_cat'][0]['esea_periodo'];
                $all_data1 = $this->api->esea_allData($newURL1);
                $newURL2 = 'Posicion%20de%20Inversion%20Internacional-Presentacion%20Resumida/4/' . $esea_categories[2]['esea_sub_crb_cat'][0]['esea_years1'] . '/' .  $esea_categories[2]['esea_sub_crb_cat'][0]['esea_periodo1'];
                $all_data2 = $this->api->esea_allData($newURL2);
                $all_data = array_merge($all_data1, $all_data2);

              }elseif($_GET["epID"] == 1) {
                $newURL1 = 'Posicion%20de%20Inversion%20Internacional-Presentacion%20Estandarizada/4/' . $esea_categories[2]['esea_sub_crb_cat'][1]['esea_years'] . '/' .  $esea_categories[2]['esea_sub_crb_cat'][1]['esea_periodo'];
                $all_data1 = $this->api->esea_allData($newURL1);
                $newURL2 = 'Posicion%20de%20Inversion%20Internacional-Presentacion%20Estandarizada/4/' . $esea_categories[2]['esea_sub_crb_cat'][1]['esea_years1'] . '/' .  $esea_categories[2]['esea_sub_crb_cat'][1]['esea_periodo1'];
                $all_data2 = $this->api->esea_allData($newURL2);
                $all_data = array_merge($all_data1, $all_data2);
              }elseif($_GET["epID"] == 2) {
                $newURL = 'test1';
                $all_data = $this->api->esea_allData($newURL);
                $data_a = [];
                $data_b = [];
                $data_c = [];
                $data_d = [];
                $data_e = [];
                $data_f = [];
                $data_g = [];
                $data_h = [];
                $data_i = [];
                $data_j = [];
                $data_k = [];
                $data_l = [];
                $data_m = [];
                $data_n = [];
                $data_o = [];
                
                $data_p = [];
                $data_q = [];
                $data_r = [];
                $data_s = [];
                $data_t = [];
                $data_u = [];
                $data_v = [];
                $data_w = [];
                $data_x = [];
                $data_y = [];
                $data_z = [];
                $data_a1 = [];
                $data_a2 = [];
                $data_a3 = [];
                $data_a4 = [];
                $data_a5 = [];
                $data_a6 = [];
                $data_a7 = [];
                $data_a8 = [];
                
                
                foreach($all_data as $k => $data) {
                    if(is_null($data["position"])) {
                        $str = $data["posicion"];
                        $row = explode(".",$str);
                        switch ($row[0]) {
                            case "1":
                                if( !isset($data_a[$data["posicion"]]) ) {
                                    $data_a[$data["posicion"]] = [];
                                }
                                $data_a[$data["posicion"]] = $data["resultado"];
                                $data_a[$data["posicion"]] = $data["resultado"];
                                break;
                            case "2":
                                if( !isset($data_b[$data["posicion"]]) ) {
                                    $data_b[$data["posicion"]] = [];
                                }
                                $data_b[$data["posicion"]] = $data["resultado"];
                                break;
                            case "3":
                                if( !isset($data_c[$data["posicion"]]) ) {
                                    $data_c[$data["posicion"]] = [];
                                }
                                $data_c[$data["posicion"]] = $data["resultado"];
                                break;
                            case "4":
                                if( !isset($data_d[$data["posicion"]]) ) {
                                    $data_d[$data["posicion"]] = [];
                                }
                                $data_d[$data["posicion"]] = $data["resultado"];
                                break;
                            case "5":
                                if( !isset($data_e[$data["posicion"]]) ) {
                                    $data_e[$data["posicion"]] = [];
                                }
                                $data_e[$data["posicion"]] = $data["resultado"];
                                break;
                            case "6":
                                if( !isset($data_f[$data["posicion"]]) ) {
                                    $data_f[$data["posicion"]] = [];
                                }
                                $data_f[$data["posicion"]] = $data["resultado"];
                                break;                
                            case "7":
                                if( !isset($data_g[$data["posicion"]]) ) {
                                    $data_g[$data["posicion"]] = [];
                                }
                                $data_g[$data["posicion"]] = $data["resultado"];
                                break;
                            case "8":
                                if( !isset($data_h[$data["posicion"]]) ) {
                                    $data_h[$data["posicion"]] = [];
                                }
                                $data_h[$data["posicion"]] = $data["resultado"];
                                break;
                            case "9":
                                if( !isset($data_i[$data["posicion"]]) ) {
                                    $data_i[$data["posicion"]] = [];
                                }
                                $data_i[$data["posicion"]] = $data["resultado"];
                                break; 
                            case "10":
                                if( !isset($data_j[$data["posicion"]]) ) {
                                    $data_j[$data["posicion"]] = [];
                                }
                                $data_j[$data["posicion"]] = $data["resultado"];
                                break; 
                            case "11":
                                if( !isset($data_k[$data["posicion"]]) ) {
                                    $data_k[$data["posicion"]] = [];
                                }
                                $data_k[$data["posicion"]] = $data["resultado"];
                                break; 
                            case "12":
                                if( !isset($data_l[$data["posicion"]]) ) {
                                    $data_l[$data["posicion"]] = [];
                                }
                                $data_l[$data["posicion"]] = $data["resultado"];
                                break; 
                            case "13":
                                if( !isset($data_m[$data["posicion"]]) ) {
                                    $data_m[$data["posicion"]] = [];
                                }
                                $data_m[$data["posicion"]] = $data["resultado"];
                                break; 
                            case "14":
                                if( !isset($data_n[$data["posicion"]]) ) {
                                    $data_n[$data["posicion"]] = [];
                                }
                                $data_n[$data["posicion"]] = $data["resultado"];
                                break; 
                            case "15":
                                if( !isset($data_o[$data["posicion"]]) ) {
                                    $data_o[$data["posicion"]] = [];
                                }
                                $data_o[$data["posicion"]] = $data["resultado"];
                                break;
                                
                            case "16":
                                if( !isset($data_p[$data["posicion"]]) ) {
                                    $data_p[$data["posicion"]] = [];
                                }
                                $data_p[$data["posicion"]] = $data["resultado"];
                                break;
                            case "17":
                                if( !isset($data_q[$data["posicion"]]) ) {
                                    $data_q[$data["posicion"]] = [];
                                }
                                $data_q[$data["posicion"]] = $data["resultado"];
                                break;
                            case "18":
                                if( !isset($data_r[$data["posicion"]]) ) {
                                    $data_r[$data["posicion"]] = [];
                                }
                                $data_r[$data["posicion"]] = $data["resultado"];
                                break;
                            case "19":
                                if( !isset($data_s[$data["posicion"]]) ) {
                                    $data_s[$data["posicion"]] = [];
                                }
                                $data_s[$data["posicion"]] = $data["resultado"];
                                break;
                            case "20":
                                if( !isset($data_t[$data["posicion"]]) ) {
                                    $data_t[$data["posicion"]] = [];
                                }
                                $data_t[$data["posicion"]] = $data["resultado"];
                                break;
                            case "21":
                                if( !isset($data_u[$data["posicion"]]) ) {
                                    $data_u[$data["posicion"]] = [];
                                }
                                $data_u[$data["posicion"]] = $data["resultado"];
                                break;
                            case "22":
                                if( !isset($data_v[$data["posicion"]]) ) {
                                    $data_v[$data["posicion"]] = [];
                                }
                                $data_v[$data["posicion"]] = $data["resultado"];
                                break;
                            case "23":
                                if( !isset($data_w[$data["posicion"]]) ) {
                                    $data_w[$data["posicion"]] = [];
                                }
                                $data_w[$data["posicion"]] = $data["resultado"];
                                break;
                            case "24":
                                if( !isset($data_x[$data["posicion"]]) ) {
                                    $data_x[$data["posicion"]] = [];
                                }
                                $data_x[$data["posicion"]] = $data["resultado"];
                                break;
                            case "25":
                                if( !isset($data_y[$data["posicion"]]) ) {
                                    $data_y[$data["posicion"]] = [];
                                }
                                $data_y[$data["posicion"]] = $data["resultado"];
                                break;
                            case "26":
                                if( !isset($data_z[$data["posicion"]]) ) {
                                    $data_z[$data["posicion"]] = [];
                                }
                                $data_z[$data["posicion"]] = $data["resultado"];
                                break;
                            case "27":
                                if( !isset($data_a1[$data["posicion"]]) ) {
                                    $data_a1[$data["posicion"]] = [];
                                }
                                $data_a1[$data["posicion"]] = $data["resultado"];
                                break;
                            case "28":
                                if( !isset($data_a2[$data["posicion"]]) ) {
                                    $data_a2[$data["posicion"]] = [];
                                }
                                $data_a2[$data["posicion"]] = $data["resultado"];
                                break;
                            case "29":
                                if( !isset($data_a3[$data["posicion"]]) ) {
                                    $data_a3[$data["posicion"]] = [];
                                }
                                $data_a3[$data["posicion"]] = $data["resultado"];
                                break;
                            case "30":
                                if( !isset($data_a4[$data["posicion"]]) ) {
                                    $data_a4[$data["posicion"]] = [];
                                }
                                $data_a4[$data["posicion"]] = $data["resultado"];
                                break;
                            case "31":
                                if( !isset($data_a5[$data["posicion"]]) ) {
                                    $data_a5[$data["posicion"]] = [];
                                }
                                $data_a5[$data["posicion"]] = $data["resultado"];
                                break;
                            case "32":
                                if( !isset($data_a6[$data["posicion"]]) ) {
                                    $data_a6[$data["posicion"]] = [];
                                }
                                $data_a6[$data["posicion"]] = $data["resultado"];
                                break;
                            case "33":
                                if( !isset($data_a7[$data["posicion"]]) ) {
                                    $data_a7[$data["posicion"]] = [];
                                }
                                $data_a7[$data["posicion"]] = $data["resultado"];
                                break;
                            case "34":
                                if( !isset($data_a8[$data["posicion"]]) ) {
                                    $data_a8[$data["posicion"]] = [];
                                }
                                $data_a8[$data["posicion"]] = $data["resultado"];
                                break;    
                                
                        } 
                    }
                }
                ksort($data_a, SORT_NATURAL);
                ksort($data_b, SORT_NATURAL);
                ksort($data_c, SORT_NATURAL);
                ksort($data_d, SORT_NATURAL);
                ksort($data_e, SORT_NATURAL);
                ksort($data_f, SORT_NATURAL);
                ksort($data_g, SORT_NATURAL);
                ksort($data_h, SORT_NATURAL);
                ksort($data_i, SORT_NATURAL);
                ksort($data_j, SORT_NATURAL);
                ksort($data_k, SORT_NATURAL);
                ksort($data_l, SORT_NATURAL);
                ksort($data_m, SORT_NATURAL);
                ksort($data_n, SORT_NATURAL);
                ksort($data_o, SORT_NATURAL);

                ksort($data_p, SORT_NATURAL);
                ksort($data_q, SORT_NATURAL);
                ksort($data_r, SORT_NATURAL);
                ksort($data_s, SORT_NATURAL);
                ksort($data_t, SORT_NATURAL);
                ksort($data_u, SORT_NATURAL);
                ksort($data_v, SORT_NATURAL);
                ksort($data_w, SORT_NATURAL);
                ksort($data_x, SORT_NATURAL);
                ksort($data_y, SORT_NATURAL);
                ksort($data_z, SORT_NATURAL);
                ksort($data_a1, SORT_NATURAL);
                ksort($data_a2, SORT_NATURAL);
                ksort($data_a3, SORT_NATURAL);
                ksort($data_a4, SORT_NATURAL);
                ksort($data_a5, SORT_NATURAL);
                ksort($data_a6, SORT_NATURAL);
                ksort($data_a7, SORT_NATURAL);
                ksort($data_a8, SORT_NATURAL);
              }
            }

                $data = [];
                $vars = [];
                $periodos = [];

                foreach($all_data as $row) {

                if( ! isset( $data[ $row['anno'] . '/' . $row['periodo'] ] ) ) {
                  $data[ $row['anno'] . '/' . $row['periodo'] ] = [];
                  $periodos[] = $row['anno'] . '/' . $row['periodo'];
                }

                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ] = [];
                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["valor"] = $row['valorCalculado'];
                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["desc"] = $row['descripcionMaestroDetalle'];
                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["nd"] = $row['nd'];
                if( !in_array($row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'], $vars) )
                      $vars[] = $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'];
                }

              ob_start();
                if($newURL == 'test1') {
                  include( SECMCAAPI_PATH . 'shortcodes/ESEA/matriz.php');
                }else if($newURL == 'test2') {
                    include( SECMCAAPI_PATH . 'shortcodes/ESEA/matriz2.php');
                }else if($newURL == 'test3') {
                    include( SECMCAAPI_PATH . 'shortcodes/ESEA/matrizsepa.php');
                }else {
                  include( SECMCAAPI_PATH . 'shortcodes/ESEA/pos_inversion_internacional.php');
              }
              $contenido = ob_get_contents();
              ob_end_clean();
              return $contenido;
          }elseif ($chartID == 440) {
            if(isset($_GET["finaldates"])){
              // $years = urldecode($_GET["years"]);
              $country = urldecode($_GET["country"]);
               $finaldates = $_GET["finaldates"];
              
              // API v2: Usar chartID como identificador del formulario
              $formulario = $chartID;

              if(isset($_GET["epID"]) && $_GET["epID"] == 0) {
                // Usar chartID directamente (ej: 440)
                $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
                
              }elseif($_GET["epID"] == 1) {
                // Usar chartID directamente (ej: 440)
                $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
                
              }elseif ($_GET["epID"] == 2) {
                 // Usar chartID directamente (ej: 440)
                 $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
                 
              }elseif ($_GET["epID"] == 3) {
                  // Usar chartID directamente (ej: 440)
                  $all_data = $this->api->esea_allData2($country, $finaldates, $formulario);
              }
            }else {
             // FALLBACK: Cuando no hay finaldates, usar años/períodos de configuración
             // API v2: Usar chartID como identificador del formulario
             $formulario = $chartID;
             $country = '95'; // País predeterminado para Deuda Externa
             
             if(isset($_GET["epID"]) && $_GET["epID"] == 0) {
                $year1 = $esea_categories[3]['esea_sub_crb_cat'][0]['esea_years'];
                $finaldates1 = "01-01-{$year1}/31-12-{$year1}";
                $year2 = $esea_categories[3]['esea_sub_crb_cat'][0]['esea_years1'];
                $finaldates2 = "01-01-{$year2}/31-12-{$year2}";
                
                $all_data1 = $this->api->esea_allData2($country, $finaldates1, $formulario);
                $all_data2 = $this->api->esea_allData2($country, $finaldates2, $formulario);
                $all_data = array_merge($all_data1, $all_data2);

              }elseif($_GET["epID"] == 1) {
                $year1 = $esea_categories[3]['esea_sub_crb_cat'][1]['esea_years'];
                $finaldates1 = "01-01-{$year1}/31-12-{$year1}";
                $year2 = $esea_categories[3]['esea_sub_crb_cat'][1]['esea_years1'];
                $finaldates2 = "01-01-{$year2}/31-12-{$year2}";
                
                $all_data1 = $this->api->esea_allData2($country, $finaldates1, $formulario);
                $all_data2 = $this->api->esea_allData2($country, $finaldates2, $formulario);
                $all_data = array_merge($all_data1, $all_data2);

              }elseif ($_GET["epID"] == 2) {
                  $year1 = $esea_categories[3]['esea_sub_crb_cat'][2]['esea_years'];
                  $finaldates1 = "01-01-{$year1}/31-12-{$year1}";
                  $year2 = $esea_categories[3]['esea_sub_crb_cat'][2]['esea_years1'];
                  $finaldates2 = "01-01-{$year2}/31-12-{$year2}";
                  
                  $all_data1 = $this->api->esea_allData2($country, $finaldates1, $formulario);
                  $all_data2 = $this->api->esea_allData2($country, $finaldates2, $formulario);
                  $all_data = array_merge($all_data1, $all_data2);

              }elseif ($_GET["epID"] == 3) {
                  $year1 = $esea_categories[3]['esea_sub_crb_cat'][3]['esea_years'];
                  $finaldates1 = "01-01-{$year1}/31-12-{$year1}";
                  $year2 = $esea_categories[3]['esea_sub_crb_cat'][3]['esea_years1'];
                  $finaldates2 = "01-01-{$year2}/31-12-{$year2}";
                  
                  $all_data1 = $this->api->esea_allData2($country, $finaldates1, $formulario);
                  $all_data2 = $this->api->esea_allData2($country, $finaldates2, $formulario);
                  $all_data = array_merge($all_data1, $all_data2);

              }
            }

             $data = [];
                $vars = [];
                $periodos = [];

                foreach($all_data as $row) {

                if( ! isset( $data[ $row['anno'] . '/' . $row['periodo'] ] ) ) {
                  $data[ $row['anno'] . '/' . $row['periodo'] ] = [];
                  $periodos[] = $row['anno'] . '/' . $row['periodo'];
                }

                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ] = [];
                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["valor"] = $row['valorCalculado'];
                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["desc"] = $row['descripcionMaestroDetalle'];
                $data[ $row['anno'] . '/' . $row['periodo'] ][ $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'] ]["nd"] = $row['nd'];
                if( !in_array($row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'], $vars) )
                      $vars[] = $row["ordenDespliegue"] . '|' . $row['nombreMaestroDetalle'];
                }

              ob_start();
              include( SECMCAAPI_PATH . 'shortcodes/ESEA/saldo_bruto_deuda_externa.php');
              $contenido = ob_get_contents();
              ob_end_clean();
              return $contenido;
          }

    }

    // ---->ESEA<---- //

    // ---->HELL-PERS<---- //

    public function array_orderby() {
      $args = func_get_args();
      $data = array_shift($args);
      
      // Validar que $data sea un array
      if (!is_array($data)) {
          error_log('SCM API Error: array_orderby() recibió un valor no-array: ' . print_r($data, true));
          return array(); // Retornar array vacío si no es array
      }
      
      // Validar que el array no esté vacío
      if (empty($data)) {
          return array();
      }
      
      foreach ($args as $n => $field) {
          if (is_string($field)) {
              $tmp = array();
              foreach ($data as $key => $row)
                  $tmp[$key] = $row[$field];
              $args[$n] = $tmp;
              }
      }
      $args[] = &$data;
      call_user_func_array('array_multisort', $args);
      return array_pop($args);
    }

    public function scm_all_pages() {
      $pages = get_pages();
      $data =array();
       foreach ($pages as $page => $value) {
         $data[$value->ID] = $value->post_name;
      }
      return $data;
    }

    public function scm_load_crb_fields() {
      require_once( SECMCAAPI_PATH . 'vendor/autoload.php' );
      \Carbon_Fields\Carbon_Fields::boot();
    }

    //carbon fields options

    public function scm_crb_attach_theme_options() {
      $value_type = 'string';
        Container::make( 'theme_options', 'Settings page' )
        ->set_page_parent( 'secmca-api-dashboard' )
        ->set_page_menu_title( 'Settings page' )
        ->add_tab( __('SIMAFIR'), array(
          Field::make( 'text', 'crb_admin', 'Admin' ),
          Field::make( 'text', 'crb_pass', 'Password' ),
          Field::make( 'text', 'crb_url_base1', 'URL base' ),
          Field::make( 'text', 'crb_url_login', 'URL login' ),
          Field::make( 'text', 'crb_url_validate', 'URL validar' ),
          Field::make( 'text', 'crb_url_params', 'URL criterios por tema' ),
          Field::make( 'text', 'crb_url_years', 'URL obtener fechas' ),
          Field::make( 'text', 'crb_url_data', 'URL datos' ),
          Field::make( 'complex', 'crb_cat', 'Categorias' )
               ->set_layout( 'tabbed-vertical' )
               ->add_fields( array(
                    Field::make( 'text', 'title', 'Title' ),
                    Field::make( 'image', 'crb_cat_photo', 'Photo' )
                    ->set_value_type( 'url' ),
                    Field::make( 'complex', 'sub_crb_cat', 'Sub Categorias' )
                        ->set_layout( 'tabbed-horizontal' )
                        ->add_fields( array(
                            Field::make( 'text', 'title', 'Title' ),
                            Field::make( 'checkbox', 'crb_show_content', 'Mostrar regiones' )
                            ->set_option_value( 'No' ),
                            Field::make( 'text', 'limyear', 'Año limite de data..' ),
                            Field::make( 'textarea', 'desc', 'Descripcion' ),
                            Field::make( 'text', 'desc_medida', 'Unidad de medida' ),
                            Field::make( 'textarea', 'emailmeta', 'Metadatos Email' ),
                            Field::make( 'textarea', 'actualizacionemeta', 'Metadatos actualizacion' ),
                            Field::make( 'textarea', 'descmeta', 'Metadatos Descripción' ),
                            Field::make( 'textarea', 'alccmeta', 'Metadatos Alcance' ),
                            Field::make( 'textarea', 'carmeta', 'Metadatos Caracteristicas' ),
                            Field::make( 'textarea', 'unidadmeta', 'Metadatos Unidad medida' ),
                            Field::make( 'textarea', 'permeta', 'Metadatos Periocidad' ),
                            Field::make( 'textarea', 'opormeta', 'Metadatos Oportunidad' ),
                            Field::make( 'textarea', 'revmeta', 'Metadatos Revisión ' ),
                            Field::make( 'textarea', 'fumeta', 'Metadatos funte ' ),
                            Field::make( 'textarea', 'accmeta', 'Metadatos Acceso ' ),
                            Field::make( 'textarea', 'notmeta', 'Metadatos Notas ' ),
                            Field::make( 'textarea', 'calregmeta', 'Metadatos calculo regional ' ),
                            Field::make( 'textarea', 'commeta', 'Metadatos Comparabilidad ' ),
                            Field::make( 'textarea', 'reddatafumeta', 'Metadatos Fuente datos regionales ' ),
                            Field::make( 'file', 'pdfmeta', 'Archivo metadata (PDF)' )
                            ->set_value_type( $value_type ),
                            Field::make( 'text', 'api_title', 'Api title' ),
                            Field::make( 'text', 'extra1tit', 'Informacion extra titulo del tab' ),
                            Field::make( 'textarea', 'extra1', 'Informacion extra (TAB)' ),
                            Field::make( 'text', 'extra2tit', 'Informacion extra titulo del segundo tab' ),
                            Field::make( 'textarea', 'extra2', 'Informacion segundo extra (TAB)' ),
                            Field::make( 'textarea', 'tabdesc_medidalenotes', 'Notas de la tabla' ),
                            Field::make( 'complex', 'sub_sub_crb_cat', 'Sub sub Categorias' )
                                 ->set_layout( 'tabbed-horizontal' )
                                 ->add_fields( array(
                                     Field::make( 'text', 'title', 'Title' ),
                                     Field::make( 'checkbox', 'crb_show_content', 'Mostrar regiones' )
                                     ->set_option_value( 'No' ),
                                     Field::make( 'text', 'limyear', 'Año limite de data..' ),
                                     Field::make( 'textarea', 'desc', 'Descripcion' ),
                                     Field::make( 'text', 'desc_medida', 'Unidad de medida' ),
                                     Field::make( 'textarea', 'emailmeta', 'Metadatos Email' ),
                                     Field::make( 'textarea', 'actualizacionemeta', 'Metadatos actualizacion' ),
                                     Field::make( 'textarea', 'descmeta', 'Metadatos Descripción' ),
                                     Field::make( 'textarea', 'alccmeta', 'Metadatos Alcance' ),
                                     Field::make( 'textarea', 'carmeta', 'Metadatos Caracteristicas' ),
                                     Field::make( 'textarea', 'unidadmeta', 'Metadatos Unidad medida' ),
                                     Field::make( 'textarea', 'permeta', 'Metadatos Periocidad' ),
                                     Field::make( 'textarea', 'opormeta', 'Metadatos Oportunidad' ),
                                     Field::make( 'textarea', 'revmeta', 'Metadatos Revisión ' ),
                                     Field::make( 'textarea', 'fumeta', 'Metadatos funte ' ),
                                     Field::make( 'textarea', 'accmeta', 'Metadatos Acceso ' ),
                                     Field::make( 'textarea', 'notmeta', 'Metadatos Notas ' ),
                                     Field::make( 'textarea', 'calregmeta', 'Metadatos calculo regional ' ),
                                     Field::make( 'textarea', 'commeta', 'Metadatos Comparabilidad ' ),
                                     Field::make( 'textarea', 'reddatafumeta', 'Metadatos Fuente datos regionales ' ),
                                     Field::make( 'file', 'pdfmeta', 'Archivo metadata (PDF)' )
                                     ->set_value_type( $value_type ),
                                     Field::make( 'text', 'api_title', 'Api title' ),
                                 ) ),
                        ) ),
               ) ),
               Field::make( 'select', 'crb_select_reports','Reportes' )
               ->add_options( array($this, 'scm_all_pages') ),
               Field::make( 'select', 'crb_select_query','Query' )
               ->add_options( array($this, 'scm_all_pages') ),
               Field::make( 'select', 'crb_select_results','Resultados' )
               ->add_options( array($this, 'scm_all_pages') ),
        ) )
        ->add_tab( __('EMFA'), array(
          Field::make( 'text', 'emfa_crb_title', 'Titulo' ),
          Field::make( 'text', 'emfa_crb_dss', 'Descripcion' ),
          Field::make( 'text', 'emfa_crb_admin', 'Admin' ),
          Field::make( 'text', 'emfa_crb_pass', 'Password' ),
          Field::make( 'text', 'emfa_crb_url_base1', 'URL base' ),
          Field::make( 'text', 'emfa_crb_url_login', 'URL login' ),
          Field::make( 'text', 'emfa_crb_url_validate', 'URL validar' ),
          Field::make( 'text', 'emfa_crb_url_params', 'URL cuadros por tema' ),
          Field::make( 'text', 'emfa_crb_url_vars', 'URL variables de un cuadro' ),
          Field::make( 'text', 'emfa_crb_url_data', 'URL datos' ),
          Field::make( 'complex', 'emfa_crb_cat', 'Categorias' )
               ->set_layout( 'tabbed-vertical' )
               ->add_fields( array(
                    Field::make( 'text', 'emfa_title', 'Title' ),
                    Field::make( 'text', 'emfa_api', 'API key' ),
                    Field::make( 'text', 'emfa_help', 'help text' ),
                    Field::make( 'textarea', 'emfa_desc', 'Descripcion' ),
                    Field::make( 'image', 'emfa_crb_cat_photo', 'Photo' )
                    ->set_value_type( 'url' ),
                    Field::make( 'complex', 'emfa_crb_emfameta', 'Metadata' )
                      ->set_layout( 'tabbed-horizontal' )
                      ->add_fields( array(
                            Field::make( 'textarea', 'emfa_emailmeta', 'Metadatos Email' ),
                            Field::make( 'textarea', 'emfa_actualizacionemeta', 'Metadatos actualizacion' ),
                            Field::make( 'textarea', 'emfa_descmeta', 'Metadatos Descripción' ),
                            Field::make( 'textarea', 'emfa_alccmeta', 'Metadatos Alcance' ),
                            Field::make( 'textarea', 'emfa_carmeta', 'Metadatos Caracteristicas' ),
                            Field::make( 'textarea', 'emfa_unidadmeta', 'Metadatos Unidad medida' ),
                            Field::make( 'textarea', 'emfa_permeta', 'Metadatos Periocidad' ),
                            Field::make( 'textarea', 'emfa_opormeta', 'Metadatos Oportunidad' ),
                            Field::make( 'textarea', 'emfa_revmeta', 'Metadatos Revisión ' ),
                            Field::make( 'textarea', 'emfa_fumeta', 'Metadatos funte ' ),
                            Field::make( 'textarea', 'emfa_accmeta', 'Metadatos Acceso ' ),
                            Field::make( 'textarea', 'emfa_notmeta', 'Metadatos Notas ' ),
                            Field::make( 'textarea', 'emfa_calregmeta', 'Metadatos calculo regional ' ),
                            Field::make( 'textarea', 'emfa_commeta', 'Metadatos Comparabilidad ' ),
                            Field::make( 'textarea', 'emfa_reddatafumeta', 'Metadatos Fuente datos regionales ' ),
                            Field::make( 'file', 'emfa_pdfmeta', 'Archivo metadata (PDF)' )
                            ->set_value_type( $value_type ),
                      ) ),
               ) ),
               Field::make( 'select', 'emfa_crb_select_reports','Reportes' )
               ->add_options( array($this, 'scm_all_pages') ),
               Field::make( 'select', 'emfa_crb_select_query','Query' )
               ->add_options( array($this, 'scm_all_pages') ),
               Field::make( 'select', 'emfa_crb_select_results','Resultados' )
               ->add_options( array($this, 'scm_all_pages') ),
        ) )
        ->add_tab( __('ESEA'), array(
          Field::make( 'text', 'esea_crb_title', 'Titulo' ),
          Field::make( 'text', 'esea_crb_dss', 'Descripcion' ),
          Field::make( 'text', 'esea_crb_admin', 'Admin' ),
          Field::make( 'text', 'esea_crb_pass', 'Password' ),
          Field::make( 'text', 'esea_crb_url_base1', 'URL base' ),
          Field::make( 'text', 'esea_crb_url_login', 'URL login' ),
          Field::make( 'text', 'esea_crb_url_validate', 'URL validar' ),
          Field::make( 'text', 'esea_crb_url_params', 'URL cuadros por tema' ),
          Field::make( 'text', 'esea_crb_url_vars', 'URL variables de un cuadro' ),
          Field::make( 'text', 'esea_crb_url_data', 'URL datos' ),
          Field::make( 'complex', 'esea_crb_cat', 'Categorias' )
               ->set_layout( 'tabbed-vertical' )
               ->add_fields( array(
                    Field::make( 'text', 'esea_title', 'Title' ),
                    Field::make( 'text', 'esea_api', 'API key' ),
                    Field::make( 'textarea', 'esea_desc', 'Descripcion' ),
                    Field::make( 'image', 'esea_crb_cat_photo', 'Photo' )
                    ->set_value_type( 'url' ),
                    Field::make( 'complex', 'esea_sub_crb_cat', 'Sub Categorias' )
                        ->set_layout( 'tabbed-horizontal' )
                        ->add_fields( array(
                            Field::make( 'text', 'esea_title', 'Title' ),
                            Field::make( 'textarea', 'esea_desc', 'Descripcion' ),
                            Field::make( 'textarea', 'esea_emailmeta', 'Metadatos Email' ),
                            Field::make( 'text', 'esea_years', 'Año pasado' ),
                            Field::make( 'text', 'esea_periodo', 'Periodos año pasado' ),
                            Field::make( 'text', 'esea_years1', 'Año actual' ),
                            Field::make( 'text', 'esea_periodo1', 'Periodos año actual' ),
                            Field::make( 'textarea', 'esea_actualizacionemeta', 'Metadatos actualizacion' ),
                            Field::make( 'textarea', 'esea_descmeta', 'Metadatos Descripción' ),
                            Field::make( 'textarea', 'esea_alccmeta', 'Metadatos Alcance' ),
                            Field::make( 'textarea', 'esea_carmeta', 'Metadatos Caracteristicas' ),
                            Field::make( 'textarea', 'esea_unidadmeta', 'Metadatos Unidad medida' ),
                            Field::make( 'textarea', 'esea_permeta', 'Metadatos Periocidad' ),
                            Field::make( 'textarea', 'esea_opormeta', 'Metadatos Oportunidad' ),
                            Field::make( 'textarea', 'esea_revmeta', 'Metadatos Revisión ' ),
                            Field::make( 'textarea', 'esea_fumeta', 'Metadatos funte ' ),
                            Field::make( 'textarea', 'esea_accmeta', 'Metadatos Acceso ' ),
                            Field::make( 'textarea', 'esea_notmeta', 'Metadatos Notas ' ),
                            Field::make( 'textarea', 'esea_calregmeta', 'Metadatos calculo regional ' ),
                            Field::make( 'textarea', 'esea_commeta', 'Metadatos Comparabilidad ' ),
                            Field::make( 'textarea', 'esea_reddatafumeta', 'Metadatos Fuente datos regionales ' ),
                            Field::make( 'file', 'esea_pdfmeta', 'Archivo metadata (PDF)' )
                            ->set_value_type( $value_type ),
                            Field::make( 'text', 'esea_api_title', 'Api title' ),
                            Field::make( 'text', 'esea_extra1tit', 'Informacion extra titulo del tab' ),
                            Field::make( 'textarea', 'esea_extra1', 'Informacion extra (TAB)' ),
                            Field::make( 'text', 'esea_extra2tit', 'Informacion extra titulo del segundo tab' ),
                            Field::make( 'textarea', 'esea_extra2', 'Informacion segundo extra (TAB)' ),
                            Field::make( 'textarea', 'esea_tablenotes', 'Notas de la tabla' ),
                            Field::make( 'complex', 'esea_sub_sub_crb_cat', 'Sub sub Categorias' )
                                 ->set_layout( 'tabbed-horizontal' )
                                 ->add_fields( array(
                                     Field::make( 'text', 'esea_title', 'Title' ),
                                     Field::make( 'textarea', 'esea_desc', 'Descripcion' ),
                                     Field::make( 'textarea', 'esea_emailmeta', 'Metadatos Email' ),
                                     Field::make( 'textarea', 'esea_actualizacionemeta', 'Metadatos actualizacion' ),
                                     Field::make( 'textarea', 'esea_descmeta', 'Metadatos Descripción' ),
                                     Field::make( 'textarea', 'esea_alccmeta', 'Metadatos Alcance' ),
                                     Field::make( 'textarea', 'esea_carmeta', 'Metadatos Caracteristicas' ),
                                     Field::make( 'textarea', 'esea_unidadmeta', 'Metadatos Unidad medida' ),
                                     Field::make( 'textarea', 'esea_permeta', 'Metadatos Periocidad' ),
                                     Field::make( 'textarea', 'esea_opormeta', 'Metadatos Oportunidad' ),
                                     Field::make( 'textarea', 'esea_revmeta', 'Metadatos Revisión ' ),
                                     Field::make( 'textarea', 'esea_fumeta', 'Metadatos funte ' ),
                                     Field::make( 'textarea', 'esea_accmeta', 'Metadatos Acceso ' ),
                                     Field::make( 'textarea', 'esea_notmeta', 'Metadatos Notas ' ),
                                     Field::make( 'textarea', 'esea_calregmeta', 'Metadatos calculo regional ' ),
                                     Field::make( 'textarea', 'esea_commeta', 'Metadatos Comparabilidad ' ),
                                     Field::make( 'textarea', 'esea_reddatafumeta', 'Metadatos Fuente datos regionales ' ),
                                     Field::make( 'file', 'esea_pdfmeta', 'Archivo metadata (PDF)' )
                                     ->set_value_type( $value_type ),
                                     Field::make( 'text', 'esea_api_title', 'Api title' ),
                                 ) ),
                        ) ),
               ) ),
               Field::make( 'select', 'esea_crb_select_reports','Reportes' )
               ->add_options( array($this, 'scm_all_pages') ),
               Field::make( 'select', 'esea_crb_select_query','Query' )
               ->add_options( array($this, 'scm_all_pages') ),
               Field::make( 'select', 'esea_crb_select_results','Resultados' )
               ->add_options( array($this, 'scm_all_pages') ),
        ) )
        ->add_tab( __('EFPA'), array(
          Field::make( 'text', 'efpa_crb_title', 'Título' )
               ->set_default_value('Estadísticas de Finanzas Públicas Armonizadas'),
          Field::make( 'textarea', 'efpa_crb_dss', 'Descripción' )
               ->set_default_value('Sistema de estadísticas fiscales armonizadas de la región SECMCA'),
          Field::make( 'complex', 'efpa_crb_cat', 'Categorías EFPA' )
               ->set_layout( 'tabbed-vertical' )
               ->add_fields( array(
                    Field::make( 'text', 'efpa_title', 'Título' ),
                    Field::make( 'textarea', 'efpa_desc', 'Descripción' ),
                    Field::make( 'text', 'efpa_icon', 'Icono Font Awesome' )
                         ->set_help_text('Ejemplo: fa-chart-line, fa-table, fa-file-invoice-dollar'),
               ) ),
          Field::make( 'select', 'efpa_crb_select_query', 'Página de Parámetros' )
               ->set_help_text('Selecciona la página que contiene el shortcode [scm-efpa-params]')
               ->add_options( array($this, 'scm_all_pages') ),
          Field::make( 'select', 'efpa_crb_select_results', 'Página de Resultados' )
               ->set_help_text('Selecciona la página que contiene el shortcode [scm-efpa-chart]')
               ->add_options( array($this, 'scm_all_pages') ),
        ) );
        $this->api = new SCM_api();

    }

}
  function scm_secmca_api_instance() {
    return SCM_secmca_api::instance();
  }

add_action('plugins_loaded', array(scm_secmca_api_instance(), 'scm_hooks'));
?>
